API 문서
REST API로 CrazyOCR을 애플리케이션에 통합하세요.
Base URL
https://crazyocr.com
Protocol
HTTPS / REST
Key lifetime
Configurable (7–365 days, default 30)
인증
Every request must include your API key in the Authorization header using the Bearer scheme.
Authorization: Bearer crazy_your_api_key_here
Create and manage keys in the API Management tab. Keys can be set to expire (7–365 days) when created, and can be revoked at any time. The Free plan does not include API access.
요청 한도 및 할당량
API calls and web OCR share the same monthly quota (requests + pages combined) — there is no separate API pool. Basic: 1,000 requests / 10,000 pages per month. Premium: 5,000 requests / 50,000 pages per month. API tasks are counted against your quota but never stored in your OCR history or file storage. Quotas reset on the 1st of each month.
| 플랜 | 요청 / 월 | Pages / Month | 최대 파일 크기 | 페이지 / 파일 |
|---|---|---|---|---|
| Free | — | — | No API access | — |
| Basic | 1,000 | 10,000 | 200 MB | 200 |
| Premium | 5,000 | 50,000 | 200 MB | 200 |
Exceeding your monthly limit returns HTTP 429. Upgrade your plan to raise the limit.
엔드포인트
/api/v1/ocrSubmit an image or document for OCR. The task is queued and processed asynchronously; poll GET /api/v1/tasks/:task_id for the result (or register a webhook).
매개변수
| 이름 | 위치 | 설명 |
|---|---|---|
| file | multipart / binary | Required. The file to process. Supported formats below. |
| language | form | Optional. OCR language pack (default latin). See the language table below. |
| webhook_url | form | Optional (Premium). HTTPS URL that receives the result when the task completes. |
| Authorization | header | Required. Bearer <your_api_key>. |
요청 예시
curl -X POST https://crazyocr.com/api/v1/ocr \ -H "Authorization: Bearer crazy_..." \ -F "file=@document.pdf" \ -F "language=latin" \ -F "webhook_url=https://your-app.com/ocr-done"
# Python
import requests
res = requests.post(
"https://crazyocr.com/api/v1/ocr",
headers={"Authorization": "Bearer crazy_..."},
files={"file": open("document.pdf", "rb")},
data={"language": "latin"},
)
print(res.json())응답 (200)
{
"task_id": "abc123...",
"status": "running",
"plan": "basic",
"webhook": null,
"hint": "Poll GET /v1/tasks/{task_id} for the result."
}/api/v1/tasks/:task_idRetrieve a previously submitted OCR task by its ID. Poll until status is done or failed.
매개변수
| 이름 | 위치 | 설명 |
|---|---|---|
| task_id | path | Required. The ID returned when the task was created. |
| Authorization | header | Required. Bearer <your_api_key>. |
요청 예시
curl https://crazyocr.com/api/v1/tasks/abc123 \ -H "Authorization: Bearer crazy_..."
응답 (200)
{
"task_id": "abc123...",
"status": "done",
"pages": 3,
"char_count": 12500,
"content": "Extracted text...",
"error": null
}Supported languages
The language parameter selects an OCR language pack. It is optional — the default latin covers English plus 45 Latin-script languages.
| Value | Languages |
|---|---|
| latin | English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Swedish, Norwegian, Danish, Finnish, Turkish, Vietnamese +30 (Latin script) |
| ch | Chinese, English, Chinese Traditional |
| en | English |
| japan | Japanese, Chinese, English, Chinese Traditional |
| korean | Korean, English |
| chinese_cht | Chinese Traditional, Chinese, English, Japanese |
| cyrillic | Russian, Ukrainian, Belarusian, Bulgarian, Serbian (Cyrillic), Mongolian +30 (Cyrillic script) |
| arabic | Arabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English |
| devanagari | Hindi, Marathi, Nepali, Sanskrit, Bhojpuri +13 (Devanagari script) |
| th | Thai, English |
| el | Greek, English |
| ta | Tamil, English |
| te | Telugu, English |
| ka | Kannada |
지원 형식
오류 코드
| 코드 | 의미 |
|---|---|
| 401 | Missing or invalid API key |
| 400 | No file provided or unsupported format |
| 413 | File too large for your plan |
| 429 | Monthly request limit reached |
| 404 | Task not found |
| 500 | Processing error |
로그인하여 API 키를 관리하세요.
로그인