{"openapi":"3.1.0","info":{"title":"DOCAXO Public API","description":"The DOCAXO public API: upload a file, run a document operation as an asynchronous **job**,\npoll or receive a **signed webhook**, download the result.\n\n* **Auth** — `Authorization: Bearer dxk_live_…` (billed) or `dxk_test_…` (free sandbox).\n  Create keys under *Account → API keys*.\n* **Metering** — operations that touch the GPU or a converter (OCR, convert, compress,\n  redact) consume **one page credit per page**, except OCR / searchable PDF which cost\n  **3 credits per page**. API Starter: €19/month incl. VAT with 2,000 credits, then\n  €0.015 per credit (€0.045 per OCR page). Lightweight page operations (merge, split,\n  rotate…) are rate-limited but free.\n* **Idempotency** — send `Idempotency-Key` on `POST /jobs`; replays return the original\n  response for 24h with `Idempotent-Replayed: true`.\n* **Rate limits** — token bucket per key (`X-RateLimit-*`, `Retry-After` on 429).\n* **Errors** — always `{\"error\": {\"type\", \"code\", \"message\", \"doc_url\", \"request_id\"}}`.","version":"2026-09-01"},"paths":{"/files":{"post":{"tags":["Files"],"summary":"Upload a file (multipart) or request a presigned upload URL","description":"Send `multipart/form-data` with a `file` part, **or** JSON\n`{filename, content_type, size_bytes}` to get a presigned `PUT` URL (S3 deployments;\nfinish with `POST /files/{id}/complete`).","operationId":"create_file_files_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_file_files_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create File Files Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Files"],"summary":"List files","operationId":"list_files_files_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Starting After"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Files Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/{file_id}/complete":{"post":{"tags":["Files"],"summary":"Finish a presigned upload","operationId":"complete_file_files__file_id__complete_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Complete File Files  File Id  Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/{file_id}":{"get":{"tags":["Files"],"summary":"Retrieve a file","operationId":"get_file_files__file_id__get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get File Files  File Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Files"],"summary":"Delete a file","operationId":"delete_file_files__file_id__delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete File Files  File Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs":{"post":{"tags":["Jobs"],"summary":"Create a job","description":"Reserves page credits for billed operations at accept time; credits are settled\nwhen the job succeeds and released when it fails or is cancelled. Send an\n`Idempotency-Key` to make retries safe for 24 hours.","operationId":"create_job_jobs_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Jobs"],"summary":"List jobs","operationId":"list_jobs_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Starting After"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["queued","running","succeeded","failed","cancelled"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Jobs Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Retrieve a job","operationId":"get_job_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/cancel":{"post":{"tags":["Jobs"],"summary":"Cancel a job","operationId":"cancel_job_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Job Jobs  Job Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/result":{"get":{"tags":["Jobs"],"summary":"Download the result","description":"Streams the output file. OCR jobs with `output=blocks` have no file: request\n`?format=json` (or `Accept: application/json`) for the normalised blocks.\n`?format=url` returns a short-lived presigned URL on S3 deployments.","operationId":"get_job_result_jobs__job_id__result_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}},{"name":"format","in":"query","required":false,"schema":{"enum":["download","json","url"],"type":"string","description":"download = stream bytes; json = OCR blocks / metadata; url = presigned S3 URL","default":"download","title":"Format"},"description":"download = stream bytes; json = OCR blocks / metadata; url = presigned S3 URL"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/octet-stream":{},"application/json":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks":{"post":{"tags":["Webhooks"],"summary":"Create a webhook endpoint","description":"The signing `secret` is returned **once**. Verify `Docaxo-Signature` on every delivery.","operationId":"create_webhook_webhooks_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Webhook Webhooks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Webhooks"],"summary":"List webhook endpoints","operationId":"list_webhooks_webhooks_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Webhooks Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/{webhook_id}":{"get":{"tags":["Webhooks"],"summary":"Retrieve a webhook endpoint","operationId":"get_webhook_webhooks__webhook_id__get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Webhook Webhooks  Webhook Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Webhooks"],"summary":"Update a webhook endpoint","operationId":"update_webhook_webhooks__webhook_id__patch","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Webhook Webhooks  Webhook Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"Delete a webhook endpoint","operationId":"delete_webhook_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Webhook Webhooks  Webhook Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/{webhook_id}/test":{"post":{"tags":["Webhooks"],"summary":"Send a signed test event now","operationId":"test_webhook_webhooks__webhook_id__test_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Webhook Webhooks  Webhook Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/{webhook_id}/deliveries":{"get":{"tags":["Webhooks"],"summary":"Delivery log for an endpoint","operationId":"list_deliveries_webhooks__webhook_id__deliveries_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Deliveries Webhooks  Webhook Id  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account":{"get":{"tags":["Account & usage"],"summary":"The account behind this key","operationId":"get_account_account_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Account Account Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/usage":{"get":{"tags":["Account & usage"],"summary":"Credits used / remaining and overage this period","operationId":"get_usage_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Usage Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operations":{"get":{"tags":["Reference"],"summary":"Operation catalogue (supported vs. operation_unsupported)","operationId":"list_operations_operations_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Internal-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Internal-Token"}},{"name":"X-Account-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Account-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Operations Operations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/errors":{"get":{"tags":["Reference"],"summary":"Error code reference","operationId":"list_error_codes_errors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Error Codes Errors Get"}}}}}}},"/pricing":{"get":{"tags":["Reference"],"summary":"API pricing (VAT-inclusive)","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pricing Pricing Get"}}}}}}}},"components":{"schemas":{"Body_create_file_files_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"}},"type":"object","title":"Body_create_file_files_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobCreate":{"properties":{"operation":{"type":"string","title":"Operation","description":"ocr | searchable_pdf | convert | compress | merge | split | rotate | reorder | delete_pages | protect | unlock | redact"},"file_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"File Id","description":"Single input (use file_ids for merge)"},"file_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":50},{"type":"null"}],"title":"File Ids"},"options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Options"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Up to 20 string keys echoed back on the job and in webhooks"}},"type":"object","required":["operation"],"title":"JobCreate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookCreate":{"properties":{"url":{"type":"string","maxLength":2048,"title":"Url"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"},"events":{"items":{"type":"string"},"type":"array","title":"Events","description":"Subset of ['job.succeeded', 'job.failed', 'job.cancelled', 'file.expired', 'webhook.test']; empty = all"}},"type":"object","required":["url"],"title":"WebhookCreate"},"WebhookUpdate":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"WebhookUpdate"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","code","message","doc_url"],"properties":{"type":{"type":"string","enum":["api_error","authentication_error","billing_error","conflict_error","idempotency_error","invalid_request_error","not_found_error","permission_error","rate_limit_error"]},"code":{"type":"string","enum":["authentication_required","invalid_api_key","email_unverified","plan_required","insufficient_scope","mode_mismatch","validation_error","operation_unsupported","invalid_options","unsupported_file_type","file_too_large","file_not_ready","page_limit_exceeded","insufficient_credits","spending_cap_reached","concurrency_limit","rate_limited","idempotency_key_reused","idempotency_in_progress","not_found","job_not_finished","no_downloadable_result","result_expired","presigned_unavailable","webhook_delivery_failed","queue_unavailable","internal_error"]},"message":{"type":"string"},"doc_url":{"type":"string","format":"uri"},"request_id":{"type":"string","nullable":true},"param":{"type":"string","nullable":true}}}}}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"dxk_live_… | dxk_test_…","description":"API key created under Account → API keys. `dxk_test_` keys use the free sandbox."}}},"tags":[{"name":"Files","description":"Upload sources (multipart or presigned PUT). Files expire automatically."},{"name":"Jobs","description":"Asynchronous document operations with progress, cancellation and results."},{"name":"Webhooks","description":"HMAC-SHA256 signed deliveries (`Docaxo-Signature: t=…,v1=…`) with retries."},{"name":"Account & usage","description":"Plan, limits, credits used/remaining and overage this period."},{"name":"Reference","description":"Operation catalogue, error codes, pricing."}],"servers":[{"url":"/api/v1"},{"url":"https://docaxo.com/api/v1"}],"security":[{"ApiKey":[]}],"x-error-codes":[{"code":"authentication_required","type":"authentication_error","status":401,"message":"Provide an API key: Authorization: Bearer dxk_live_… or dxk_test_…"},{"code":"invalid_api_key","type":"authentication_error","status":401,"message":"The API key is unknown, revoked or expired"},{"code":"email_unverified","type":"permission_error","status":403,"message":"Verify the account email address before using downloads or the API"},{"code":"plan_required","type":"permission_error","status":403,"message":"The API Starter plan is required for live requests"},{"code":"insufficient_scope","type":"permission_error","status":403,"message":"The API key is missing a required scope"},{"code":"mode_mismatch","type":"permission_error","status":403,"message":"Object belongs to the other mode (live vs test)"},{"code":"validation_error","type":"invalid_request_error","status":422,"message":"The request body or parameters are invalid"},{"code":"operation_unsupported","type":"invalid_request_error","status":422,"message":"This operation is not available through the API yet"},{"code":"invalid_options","type":"invalid_request_error","status":422,"message":"Options are invalid for this operation"},{"code":"unsupported_file_type","type":"invalid_request_error","status":415,"message":"Unsupported or mismatching file type"},{"code":"file_too_large","type":"invalid_request_error","status":413,"message":"File exceeds the maximum upload size"},{"code":"file_not_ready","type":"conflict_error","status":409,"message":"File upload has not been completed"},{"code":"page_limit_exceeded","type":"invalid_request_error","status":422,"message":"Document has more pages than the plan allows per job"},{"code":"insufficient_credits","type":"billing_error","status":402,"message":"Not enough API page credits"},{"code":"spending_cap_reached","type":"billing_error","status":402,"message":"The account spending cap would be exceeded"},{"code":"concurrency_limit","type":"rate_limit_error","status":429,"message":"Too many jobs in flight for this key"},{"code":"rate_limited","type":"rate_limit_error","status":429,"message":"Too many requests"},{"code":"idempotency_key_reused","type":"idempotency_error","status":422,"message":"Idempotency-Key was already used with a different request body"},{"code":"idempotency_in_progress","type":"conflict_error","status":409,"message":"A request with this Idempotency-Key is still being processed"},{"code":"not_found","type":"not_found_error","status":404,"message":"No such object"},{"code":"job_not_finished","type":"conflict_error","status":409,"message":"The job has not finished yet"},{"code":"no_downloadable_result","type":"conflict_error","status":409,"message":"The job produced no downloadable output"},{"code":"result_expired","type":"not_found_error","status":404,"message":"The result has expired"},{"code":"presigned_unavailable","type":"invalid_request_error","status":501,"message":"Presigned URLs need the S3 object store; use multipart upload / streamed download"},{"code":"webhook_delivery_failed","type":"api_error","status":502,"message":"The webhook endpoint did not accept the test delivery"},{"code":"queue_unavailable","type":"api_error","status":503,"message":"The job queue is unavailable, retry shortly"},{"code":"internal_error","type":"api_error","status":500,"message":"Something went wrong on our side"}]}