Publishable Keys
Безпечні для браузера виклики API. Без власного бекенду.
Publishable Key (po_pk_) може бути розміщено у фронтенді: обмежений scope, прив'язаний до origin та лімітований бюджетом.
Для артефактів Claude, Canvas ChatGPT, Grok та будь-якого власного веб-додатку.
- Власна інфраструктура в ЄС Ваші дані залишаються в Європі.
- ISO 27001 активний Безпека сертифікована.
- SOC 2 Type II активний Міжнародні стандарти аудиту.
- Понад 24 роки досвіду Перевірено. Стабільно. Майбутнє захищено.
Безпосередньо з браузера
Від AI-Canvas безпосередньо до виклику API
Ви створюєте додаток для перетворення PDF у текст у Claude Artifacts, ChatGPT Canvas або Grok. Без бекенду виклик API залишався б неможливим: CORS блокує запити, секретний ключ був би видимий у вихідному коді, а відкритий ключ навантажував би ваш рахунок. Саме цю прогалину заповнюють публічні ключі.
Вставте у 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 встановлюється браузером. Оберіть пресет, створіть ключ, вставте його.
Панель керування надає пресети для scope та бюджету. Origins залишаються порожніми — введіть заголовок 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 — кожна межа повідомляє про себе власним кодом.
Матриця безпеки
Шість контрольних точок, усі примусово виконуються на стороні сервера
Обмежений scope, прив'язаний до origin, лімітований бюджетом, відкликається будь-коли. Кожен контроль примусово виконується на стороні сервера — тому ключ може стояти у коді фронтенду.
-
Обмежені за областю дії
Ключі доступні лише для груп ендпоінтів, які ви явно надаєте:
ocr:read,llm:generate,translate:textта інші. Запити поза цією областю повертатимуть HTTP 403. -
Прив'язані до джерела
Кожен запит повинен містити заголовок Origin, який відповідає списку дозволених для ключа (точний хост або піддомен із підтримкою wildcard). Якщо він не збігається, повертається HTTP 403 з кодом помилки API.
-
Немає додаткового ліміту хвилин
Немає окремого ліміту хвилин лише для po_pk_. Діють звичайні ліміти швидкості токенів акаунту; споживання лімітується Lifetime-бюджетом.
-
Обмежений бюджет
Кожен ключ має ліміт життєвого циклу (Lifetime-Budget). Якщо його вичерпано, API повертає HTTP 402 BUDGET_EXHAUSTED — споживання припиняється негайно, а не після розрахунку.
-
Відкликання в будь-який час
Ключі можна відкликати в особистому кабінеті в будь-який момент. Відкликаний ключ більше не приймається API.
-
Жорстке блокування
HTTP DELETE, а також вхід в акаунт, управління ключами, OAuth, адміністрування партнерів, платежі та підбір паролів назавжди заблоковані для кожного po_pk_. Документовані продуктові API — включаючи POST-видалення, вебхуки, читання фінансових даних та CRM — дозволені.
Ієрархія ключів
Три типи ключів, чіткі обов'язки
Secret Key для сервера, Publishable Key для браузера — плюс User Token для доступу, пов'язаного з користувачем, з обмеженням частоти запитів.
| Префікс | Тип | Випадок використання | Безпечний для браузера | Стандартний обсяг |
|---|---|---|---|---|
po_sk_ | Секретний ключ | Сервер-до-сервера, повний доступ API | Ні | Усі кінцеві точки |
po_ut_ | User Token | Користувацький, обмежений рівнем | Ні | На основі рівня |
po_pk_ | Publishable Key | Браузер / AI-Canvas (Claude, ChatGPT, Grok) | Так | Список обсягів |
Три пресети
Один клік. Один ключ. Одна мета.
Кожен пресет налаштований під конкретний сценарій використання — безпечні значення за замовчуванням, відібрані області дій (scopes), реалістичні бюджети. Все можна змінити в будь-який час у панелі керування.
-
DEFAULTБезпечне читанняБезпечні базові права для простих демо-версій та внутрішніх інструментів: OCR, LLM, переклад, документи, пошук.
Області дій (scopes)
Почати з цим пресетом -
AIDEMOAI-пісочниця РекомендованоДля Claude Artifacts, ChatGPT Canvas та демо Grok. Все, що потрібно для запуску AI-демо в реальному часі.
Області дій (scopes)
Почати з цим пресетом -
WIDGETПублічний вебсайтДля контактних форм, чат-віджетів та кнопок бронювання на власному корпоративному вебсайті.
Області дій (scopes)
Почати з цим пресетом
Перший виклик API
Готові до першого виклику з браузера?
Створіть ключ, відкрийте llms-full.txt, вставте промпт — ваша програма викликає API напряму з Claude, ChatGPT або Grok.
Публічні ключі в дії
Дивіться, як працюють PaperOffice Publishable Keys на практиці — у відео.
Часті запитання
Все важливе в огляді
Чим po_pk_ відрізняється від po_sk_?
po_sk_ (Secret Key) призначений для інтеграції сервер-до-сервера — повний доступ до API, ніколи не вставляйте його у браузері. po_pk_ (Publishable Key) створено для коду в браузері: обмежений обсяг прав, прив'язка до origin, ліміт бюджету. Той самий API, інший профіль безпеки.
Чому б просто не використовувати зворотний проксі з власного бекенду?
Це класичний шлях — але він все одно передбачає наявність бекенду. AI-артефакти (Claude, ChatGPT, Grok) розраховані на роботу без власного бекенду. Publishable Keys роблять це можливим, не розкриваючи ваш Secret Key: обмеження примусово застосовуються на стороні сервера.
Чи працює це в артефактах Claude, попри їхній CORS-пісочницю?
Так. Виклик відбувається напряму з браузера, заголовок Origin встановлюється самим браузером. PaperOffice не надає Vendor-Allow-List; при створенні ключа ви вводите Origin з інструментів розробника.
Що станеться, якщо мій po_pk_ стане публічно видимим?
Збитки залишаться обмеженими: блокування за Origin перешкоджає використанню на сторонніх доменах, ліміт бюджету зупиняє витрати, ліміт частоти запитів (Rate-Limit) сповільнює автоматизований доступ. Відкликати ключ можна в особистому кабінеті — після цього API більше не прийме його.
Чи можу я додати свій власний домен як дозволене джерело (Origin)?
Так. Під час створення ключа ви можете додати будь-який origin до списку дозволених — як точний хост або як піддомен із wildcard. Пресет WIDGET саме для цього й створений: зареєструйте свій власний домен і вбудуйте чат, бронювання або контактні віджети без бекенду.
Як встановити бюджет на кожен ключ?
Під час створення вибирайте ліміт на весь термін дії; пресети мають власні передвстановлені значення. Якщо ліміт вичерпано, API повертає HTTP 402 BUDGET_EXHAUSTED. Ви можете змінити це значення в обліковому записі будь-коли.
Чи потрібен po_pk_ власний тариф?
Ні. Publishable Key є додатковим захисним шаром навколо вашого існуючого акаунту: він обмежує scope, origins та бюджет. Який план підходить для вашої конфігурації, показано в огляді цін.
Які ендпоінти заблоковані для po_pk_?
HTTP DELETE, а також вхід в акаунт, адміністрування користувачів, управління ключами, OAuth, адміністрування партнерів, Stripe Checkout та підбір паролів назавжди заблоковані. Документовані продуктові API дозволені, включаючи POST-видалення, вебхуки, читання фінансових даних, імпорт та CRM. Видалення Workspace, очищення кошика та зняття Legal-Hold залишаються лише через інтерфейс (403 UI_ONLY_ENDPOINT).
Експлуатація та довіра
Що перевіряють корпоративні команди перед першим дзвінком
Договори, безпека, підтримка та ліміти — все посилання в одному місці.
- Безпека та відповідність ISO 27001, SOC 2 Type II, власна інфраструктура в ЄС.
- Угода SLA 99,9 % Доступність щомісяця, гарантована договором.
- Обробка даних від імені замовника (DPA) Договір про обробку даних відповідно до GDPR.
- Список субпідрядників Усі субпідрядники, прозоро перелічені.
- Технічна підтримка Прямий зв'язок із командою підтримки через тикет.
- Ліміти запитів та заголовки Документовані мінімальні значення на токен, заголовки лімітів у кожній відповіді.
- Ціни та Credits Прозорі ціни на Credits за кожний виклик.
Наступна зупинка
Як продовжити
Рекомендований наступний крок у воронці розробників та два відповідні відгалуження.