Publishable Keys
브라우저 안전한 API 호출. 자체 백엔드 불필요.
프론트엔드에 Publishable Key (po_pk_)를 배치할 수 있습니다: 스코프 제한, 오리진 바인딩, 예산 캡.
Claude 아티팩트, ChatGPT 캔버스, Grok 및 모든 자체 웹 앱용.
- 자신의 EU 인프라 귀하의 데이터는 유럽에 보관됩니다.
- ISO/IEC 27001 인증 취득 보안 인증됨.
- SOC 2 Type II 준비 중 국제 감사 표준.
- 24년 이상의 경험 검증됨. 안정적. 미래 지향적.
브라우저에서 직접
AI 캔버스에서 API 호출로 바로 이동
Claude, ChatGPT 또는 Grok에서 PDF-to-Text 앱을 구축하고 있습니다. 백엔드가 없으면 API 호출이 이루어지지 않았습니다: CORS가 차단되고, 시크릿 키가 소스 코드에 노출되며, 공개 키는 계정에 부하를 줍니다. 바로 이 격차를 Publishable Keys가 메꿉니다.
Claude, ChatGPT 또는 Grok에 삽입
모든 AI Canvas를 백엔드 없이 실제 API 기반 데모로 변환하는 프롬프트입니다.
이 API 문서를 읽으세요:
https://api.paperoffice.ai/latest/docs/llms-full.txt 단일 파일 React 앱(Claude 아티팩트 / ChatGPT 캔버스 / Grok)을 구축하세요:
사용자가 PDF를 업로드하면 앱이 브라우저에서 직접
/job/add/paperoffice_aiocr___generate를 호출하고
추출된 텍스트를 표시합니다. 인증: Bearer po_pk_MY_PUBLISHABLE_KEY (사용자에게 키 요청).
동기식 결과를 위해 processing_lane=instant을 사용하세요. 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 "file_1=@invoice.pdf" \ -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 — 각 제한은 고유한 코드로 보고됩니다.
보안 매트릭스
6가지 통제, 모두 서버 측에서 강제 적용
스코프 제한, 오리진 바인딩, 예산 캡, 언제든지 취소 가능. 모든 제어는 서버 측에서 강제됩니다 — 따라서 키가 프론트엔드 코드에 있을 수 있습니다.
-
범위 제한
키는 명시적으로 허용한 엔드포인트 그룹에만 접근할 수 있습니다:
ocr:read,llm:generate,translate:text등. 범위를 벗어난 호출은 HTTP 403을 반환합니다. -
원본 바인딩
각 요청은 키의 허용 목록과 일치하는 Origin 헤더를 포함해야 합니다(정확한 호스트 또는 서브도메인 와일드카드). 일치하지 않으면 API HTTP 403을 반환합니다.
-
추가 분 제한 없음
po_pk_ 전용 고유한 분당 제한은 없습니다. 계정의 일반 토큰 속도 제한이 적용되며, 소비는 평생 예산으로 캡됩니다.
-
예산 제한
각 키에는 수명 주기 예산이 할당됩니다. 예산이 소진되면 API은 HTTP 402 BUDGET_EXHAUSTED를 반환하며, 소비는 청구 시점이 아닌 즉시 중단됩니다.
-
언제든지 취소 가능
키는 계정에서 언제든지 취소할 수 있습니다. 취소된 키는 API에서 더 이상 허용되지 않습니다.
-
고정 차단
HTTP DELETE 및 계정 로그인, 키 관리, OAuth, 파트너 관리자, 결제 변경 및 비밀번호 크래킹은 모든 po_pk_에 대해 영구적으로 차단됩니다. 문서화된 제품-API(POST 삭제, 웹훅, 청구 읽기 및 CRM 포함)은 허용됩니다.
키 계층 구조
세 가지 키 유형, 명확한 책임
서버용 Secret Key, 브라우저용 Publishable Key — 그리고 사용자 관련 접근 및 속도 제한이 적용된 User Token 추가.
| 접두사 | 유형 | 사용 사례 | 브라우저 안전 | 기본 범위 |
|---|---|---|---|---|
poai_ | API 키 | 서버 간 통신, 생성 계정 권한 | 아니요 | 플랜 및 권한 내 모든 엔드포인트 |
po_ut_ | User Token | 사용자 범위, 티어 제한 | 아니요 | 티어 기반 |
po_pk_ | Publishable Key | 브라우저 / AI-Canvas (Claude, ChatGPT, Grok) | 예 | 범위 목록 |
세 가지 프리셋
한 번의 클릭. 하나의 키. 하나의 목적.
각 프리셋은 구체적인 사용 사례에 맞게 구성되어 있습니다 — 안전한 기본값, 선별된 스코프, 현실적인 예산. 모든 설정은 대시보드에서 언제든지 조정 가능합니다.
-
DEFAULT안전한 읽기 전용간단한 데모 및 내부 도구용 안전한 기본 권한: OCR, LLM, 번역, 문서, 검색.
권한 범위 (Scopes)
이 프리셋으로 시작하기 -
AIDEMOAI 플레이그라운드 추천Claude 아티팩트, ChatGPT 캔버스 및 Grok 데모용. AI 데모를 실시간으로 실행하는 데 필요한 모든 것.
권한 범위 (Scopes)
이 프리셋으로 시작하기 -
WIDGET공개 웹사이트자사 웹사이트의 연락처 양식, 채팅 위젯 및 예약 버튼용.
권한 범위 (Scopes)
이 프리셋으로 시작하기
첫 번째 API 호출
브라우저에서 첫 번째 호출을 준비하셨나요?
키 생성, llms-full.txt 열기, 프롬프트 삽입 — 앱이 API을 Claude, ChatGPT 또는 Grok에서 직접 호출합니다.
자주 묻는 질문
모든 중요 사항 한눈에 보기
po_pk_와 poai_의 차이점은 무엇입니까?
poai_(API 키)는 서버 간 통합용이며, 생성된 계정의 권한으로 작동하므로 브라우저에 절대 포함되지 않아야 합니다. po_pk_(Publishable Key)은 브라우저 코드용으로 설계되었으며, 범위가 제한되고 출처가 고정되며 예산이封顶됩니다. 동일한 API이지만 안전 프로파일이 다릅니다.
왜 자체 백엔드에서 리버스 프록시를 사용하지 않습니까?
이것은 고전적인 방법이지만 여전히 백엔드가 필요합니다. AI 아티팩트(Claude, ChatGPT, Grok)는 자체 백엔드 없이 운영되도록 설계되었습니다. Publishable Keys를 사용하면 Secret Key를 노출하지 않고도 이를 가능하게 합니다: 경계는 서버 측에서 강제됩니다.
Claude 아티팩트의 CORS 샌드박스에도 불구하고 작동합니까?
예. 호출은 브라우저에서 직접 실행되며, 오리진 헤더는 브라우저가 자동으로 설정합니다. PaperOffice는 벤더 허용 목록을 제공하지 않습니다 — 키 생성 시 개발자 도구에서 오리진을 입력하세요.
po_pk_가 공개적으로 노출되면 어떻게 됩니까?
피해는 제한됩니다: Origin 잠금은 타사 도메인에서의 사용을 차단하고, 예산 제한은 소비를 종료하며, 속도 제한은 자동화된 접근을 늦춥니다. 계정에서 키를 무효화하십시오 — 이후 API은 해당 키를 더 이상 수락하지 않습니다.
자신의 도메인을 허용된 원본으로 추가할 수 있습니까?
네. 키 생성 시 허용 목록에 각 원본을 추가합니다 — 정확한 호스트 또는 하위 도메인 와일드카드로 사용할 수 있습니다. WIDGET 프리셋은 이를 위해 설계되었습니다: 자신의 도메인을 등록하고 백엔드 없이 채팅, 예약 또는 연락처 위젯을 임베딩하십시오.
키별로 예산을 어떻게 설정합니까?
생성 시 라이프타임 리밋을 선택합니다. 프리셋에는 각각 기본값이 포함되어 있습니다. 리밋에 도달하면 API에서 HTTP 402 BUDGET_EXHAUSTED를 반환합니다. 계정 내에서 언제든지 값을 조정할 수 있습니다.
po_pk_는 별도의 요금제가 필요한가요?
아니요. Publishable Key는 기존 계정 주변의 추가 보호 계층입니다: 스코프, 오리진 및 예산을 제한합니다. 어떤 플랜이 설정에 적합한지는 가격표를 참조하세요.
po_pk_에 대해 차단된 엔드포인트는 무엇인가요?
HTTP DELETE 및 계정 로그인, 사용자 관리자, 키 관리, OAuth, 파트너 관리자, Stripe 체크아웃 및 비밀번호 크래킹은 영구적으로 차단됩니다. 문서화된 제품-API이 허용되며, 여기에는 POST 삭제, 웹훅, 청구 읽기, 가져오기 및 CRM이 포함됩니다. Workspace 삭제, 휴지통 비우기 및 법적 보유 해제는 UI 전용(403 UI_ONLY_ENDPOINT)으로 유지됩니다.
운영 및 신뢰
첫 번째 통화 전에 엔터프라이즈 팀이 확인하는 사항
계약, 보안, 지원 및 한도, 모든 것이 한 곳에 링크되어 있습니다.
다음 정류장
계속하기
개발자 퍼널에서 권장되는 다음 단계와 두 가지 관련 분기.