Publishable Keys
Безопасные для браузера вызовы API. Без собственного бэкенда.
Publishable Key (po_pk_) может находиться во фронтенде: ограничено областью, привязано к источнику и лимитировано бюджетом.
Для артефактов Claude, Canvas ChatGPT, Grok и любого собственного веб-приложения.
- Собственная инфраструктура ЕС Ваши данные остаются в Европе.
- ISO 27001 активно Безопасность сертифицирована.
- SOC 2 Тип II активен Международные стандарты аудита.
- Более 24 лет опыта Проверено временем. Стабильно. Надежно для будущего.
Прямо из браузера
От AI-Canvas напрямую к вызову API
Вы создаете приложение для преобразования PDF в текст в Claude, ChatGPT или Grok. Без бэкенда вызов API оставался невозможным: CORS блокирует запрос, секретный ключ оказался бы виден в исходном коде, а открытый ключ нагружает ваш аккаунт. Именно эту проблему решают Publishable Keys.
Вставить в Claude, ChatGPT или Grok
Промпт, который превращает любую AI-Canvas в настоящую демонстрацию на базе API — без бэкенда.
Прочитайте этот документ API:
https://api.paperoffice.ai/latest/docs/llms-full.txt Создайте одностраничное React-приложение (Claude Artifact / ChatGPT Canvas / Grok):
Пользователь загружает PDF, приложение вызывает
/job/add/paperoffice_aiocr___generate напрямую из браузера
и отображает извлеченный текст. Аутентификация: Bearer po_pk_MY_PUBLISHABLE_KEY (запросите у пользователя ключ).
Используйте processing_lane=instant для синхронных результатов. Заголовок Origin устанавливается браузером. Выберите пресет, создайте ключ, вставьте его.
Дашборд предоставляет пресеты для областей и бюджета. Источники остаются пустыми — введите заголовок Origin из инструментов разработчика браузера, затем скопируйте ключ в свой промпт.
const form = new FormData();form.append("file_1", fileInput.files[0]);form.append("processing_lane", "instant");form.append("client_wait", "true");const response = await fetch("https://api.paperoffice.ai/latest/job/add/paperoffice_aiocr___generate", { method: "POST", headers: { Authorization: "Bearer po_pk_YOUR_PUBLISHABLE_KEY" }, body: form,});console.log(await response.json()); curl -X POST "https://api.paperoffice.ai/latest/job/add/paperoffice_aiocr___generate" \ -H "Authorization: Bearer po_pk_YOUR_PUBLISHABLE_KEY" \ -H "Origin: https://app.example.com" \ -F "[email protected]" \ -F "processing_lane=instant" \ -F "client_wait=true" Первый вызов
fetch из браузера, Origin устанавливается браузером
Запрос отправляется на POST /latest/job/add/{pipeline} — тот же конечный пункт, что и с секретным ключом. Новыми являются только тип ключа и заголовок Origin, который браузер отправляет автоматически.
- Origin берется от браузера
fetch сам устанавливает заголовок Origin. Скрипты вне браузера (cURL, Node) должны явно его отправлять — иначе API ответит с кодом 403 ORIGIN_HEADER_REQUIRED.
- Результат встроенный
С параметрами processing_lane=instant и client_wait=true API удерживает соединение и возвращает результат непосредственно в ответе.
- Понятные коды ошибок
402 BUDGET_EXHAUSTED, 403 DOMAIN_NOT_ALLOWED, 403 SCOPE_NOT_GRANTED, 429 RATE_LIMIT_EXCEEDED — каждый лимит сообщает о себе своим собственным кодом.
Матрица безопасности
Шесть контролей, все принудительно на стороне сервера
Ограничено областью, привязано к источнику, лимитировано бюджетом, отменяемо в любое время. Каждый контроль обеспечивается на стороне сервера — поэтому ключ может находиться во фронтенд-коде.
-
Ограничено областью действия
Ключи доступны только для тех групп эндпоинтов, которые вы явно разрешили:
ocr:read,llm:generate,translate:textи других. Запросы вне разрешенной области возвращают HTTP 403. -
Привязано к origin
Каждый запрос должен содержать заголовок Origin, соответствующий списку разрешенных значений ключа (точный хост или подстановочный знак для поддомена). Если он не совпадает, возвращается HTTP 403 с кодом ошибки API.
-
Нет дополнительного лимита минут
Для po_pk_ нет собственного минутного лимита. Действуют обычные ограничения скорости токенов аккаунта; расход лимитируется пожизненным бюджетом.
-
Бюджет ограничен
Каждый ключ имеет лимит бюджета на весь срок действия. Если он исчерпан, API возвращает HTTP 402 BUDGET_EXHAUSTED — потребление останавливается немедленно, а не только при выставлении счета.
-
Отзыв в любое время
Ключи можно отозвать в личном кабинете в любой момент. Отозванный ключ больше не принимается API.
-
Жесткая блокировка
HTTP DELETE, вход в аккаунт, управление ключами, OAuth, администрирование партнеров, изменение платежей и взлом пароля остаются навсегда заблокированными для каждого po_pk_. Документированные продукты API — включая удаление через POST, вебхуки, чтение биллинга и CRM — разрешены.
Иерархия ключей
Три типа ключей, четкое распределение ответственности
Secret Key для сервера, Publishable Key для браузера — плюс пользовательский токен для доступа с учетом потребителя и ограничениями по частоте запросов.
| Префикс | Тип | Сценарий использования | Безопасность браузера | Область по умолчанию |
|---|---|---|---|---|
po_sk_ | Секретный ключ | Сервер-к-серверу, полный доступ API | Нет | Все конечные точки |
po_ut_ | User Token | Пользовательский уровень, ограничение по уровню | Нет | На основе уровня |
po_pk_ | Publishable Key | Браузер / AI-Canvas (Claude, ChatGPT, Grok) | Да | Список областей |
Три пресета
Один клик. Один ключ. Одна цель.
Каждый пресет настроен под конкретный сценарий использования — безопасные значения по умолчанию, тщательно подобранные области видимости (scopes), реалистичные бюджеты. Всё можно изменить в любое время через панель управления.
-
DEFAULTБезопасное чтениеБезопасные права по умолчанию для простых демо и внутренних инструментов: OCR, LLM, Translate, Documents, Search.
Области видимости (scopes)
Начать с этим пресетом -
AIDEMOИгровая площадка ИИ РекомендуетсяДля демо-версий Claude Artifacts, ChatGPT Canvas и Grok. Всё необходимое для запуска демонстраций ИИ в реальном времени.
Области видимости (scopes)
Начать с этим пресетом -
WIDGETПубличный веб-сайтДля контактных форм, чат-виджетов и кнопок бронирования на собственном корпоративном сайте.
Области видимости (scopes)
Начать с этим пресетом
Первый вызов API
Готовы к первому вызову из браузера?
Создайте ключ, откройте llms-full.txt, вставьте промпт — ваше приложение вызывает API напрямую из Claude, ChatGPT или Grok.
Publishable keys в действии
Посмотрите, как работают publishable keys PaperOffice на практике — в видео.
Часто задаваемые вопросы
Всё важное в одном месте
В чём разница между po_pk_ и po_sk_?
po_sk_ (Secret Key) предназначен для интеграции сервер-к-серверу — полный доступ к API, никогда не включайте его в браузерный код. po_pk_ (Publishable Key) создан для кода в браузере: ограничен областью действия, привязан к origin, с ограничением бюджета. Тот же API, но другой профиль безопасности.
Почему бы просто не использовать обратный прокси из собственного бэкенда?
Это классический путь — но он по-прежнему требует наличия бэкенда. AI-Artifacts (Claude, ChatGPT, Grok) предназначены для работы без собственного бэкенда. Publishable Keys делают это возможным, не раскрывая ваш Secret Key: ограничения применяются на стороне сервера.
Работает ли это в Artifacts Claude, несмотря на их CORS-песочницу?
Да. Вызов происходит напрямую из браузера, заголовок Origin устанавливается самим браузером. PaperOffice не предоставляет список разрешенных поставщиков; источник вводится при создании ключа из инструментов разработчика.
Что произойдет, если мой po_pk_ станет публично видимым?
Ущерб останется ограниченным: блокировка по Origin предотвращает использование на сторонних доменах, лимит бюджета останавливает расходование средств, лимит частоты запросов замедляет автоматизированный доступ. Отозвите ключ в аккаунте — после этого API больше не примет его.
Могу ли я добавить свой собственный домен в список разрешенных Origins?
Да. При создании ключа вы можете добавить любой Origin в Allow-List — как точный хост или как подстановочный знак для поддомена. Пресет WIDGET создан именно для этого: зарегистрируйте свой собственный домен и внедрите виджеты чата, бронирования или контактов без бэкенда.
Как установить бюджет на каждый ключ?
При создании выберите пожизненный лимит; пресеты имеют свои предустановки. Когда лимит исчерпан, API возвращает HTTP 402 BUDGET_EXHAUSTED. Вы можете изменить это значение в аккаунте в любое время.
Нужен ли po_pk_ собственный тариф?
Нет. Publishable Key — это дополнительный защитный слой вокруг вашего существующего аккаунта: он ограничивает области, источники и бюджет. Какой план подходит для вашей конфигурации, показано в таблице цен.
Какие эндпоинты заблокированы для po_pk_?
HTTP DELETE, а также вход в аккаунт, администрирование пользователей, управление ключами, OAuth, администрирование партнеров, Stripe Checkout и взлом пароля жестко заблокированы. Документированные продукты API разрешены, включая удаление через POST, вебхуки, чтение биллинга, импорт и CRM. Удаление Workspace, очистка корзины и снятие Legal Hold остаются только через интерфейс (403 UI_ONLY_ENDPOINT).
Эксплуатация и доверие
Что проверяют корпоративные команды перед первым звонком
Договоры, безопасность, поддержка и лимиты — все ссылки в одном месте.
- Безопасность и соответствие требованиям ISO 27001, SOC 2 Type II, собственная инфраструктура в ЕС.
- СЛА 99,9 % Доступность в течение каждого календарного месяца, гарантированная договором.
- Обработка данных по поручению (DPA) Договор об обработке данных по поручению, соответствующий GDPR.
- Список субподрядчиков Все субподрядчики, прозрачно перечислены.
- Техническая поддержка Прямой путь к команде поддержки через тикет.
- Лимиты запросов и заголовки Документированные минимальные значения на токен, заголовки RateLimit в каждом ответе.
- Цены и кредиты Прозрачные цены на кредиты за каждый вызов.
Следующая остановка
Как двигаться дальше
Рекомендуемый следующий шаг в воронке разработчика и два подходящих направления.