Documentación de la API

Integra CrazyOCR en tu aplicación con nuestra API REST.

Base URL

https://crazyocr.com

Protocol

HTTPS / REST

Key lifetime

Configurable (7–365 days, default 30)

Autenticación

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.

Límites y cuotas

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.

PlanSolicitudes / mesPages / MonthTamaño máx. de archivoPáginas / archivo
FreeNo API access
Basic1,00010,000200 MB200
Premium5,00050,000200 MB200

Exceeding your monthly limit returns HTTP 429. Upgrade your plan to raise the limit.

Endpoints

POST/api/v1/ocr

Submit 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).

Parámetros

NombreEnDescripción
filemultipart / binaryRequired. The file to process. Supported formats below.
languageformOptional. OCR language pack (default latin). See the language table below.
webhook_urlformOptional (Premium). HTTPS URL that receives the result when the task completes.
AuthorizationheaderRequired. Bearer <your_api_key>.

Ejemplo de solicitud

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())

Respuesta (200)

{
  "task_id": "abc123...",
  "status": "running",
  "plan": "basic",
  "webhook": null,
  "hint": "Poll GET /v1/tasks/{task_id} for the result."
}
GET/api/v1/tasks/:task_id

Retrieve a previously submitted OCR task by its ID. Poll until status is done or failed.

Parámetros

NombreEnDescripción
task_idpathRequired. The ID returned when the task was created.
AuthorizationheaderRequired. Bearer <your_api_key>.

Ejemplo de solicitud

curl https://crazyocr.com/api/v1/tasks/abc123 \
  -H "Authorization: Bearer crazy_..."

Respuesta (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.

ValueLanguages
latinEnglish, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Swedish, Norwegian, Danish, Finnish, Turkish, Vietnamese +30 (Latin script)
chChinese, English, Chinese Traditional
enEnglish
japanJapanese, Chinese, English, Chinese Traditional
koreanKorean, English
chinese_chtChinese Traditional, Chinese, English, Japanese
cyrillicRussian, Ukrainian, Belarusian, Bulgarian, Serbian (Cyrillic), Mongolian +30 (Cyrillic script)
arabicArabic, Persian, Uyghur, Urdu, Pashto, Kurdish, Sindhi, Balochi, English
devanagariHindi, Marathi, Nepali, Sanskrit, Bhojpuri +13 (Devanagari script)
thThai, English
elGreek, English
taTamil, English
teTelugu, English
kaKannada

Formatos compatibles

PNG
JPG
JPEG
WebP
BMP
HEIC
PDF
DOCX
XLSX
PPTX
TXT
CSV
EPUB

Códigos de error

CódigoSignificado
401Missing or invalid API key
400No file provided or unsupported format
413File too large for your plan
429Monthly request limit reached
404Task not found
500Processing error