HyperbotsHyperAPI/Docs
POST
/v1/parse

Parse

Extract raw text from documents using OCR. Supports PDFs and images. Returns structured markdown with page-level text.

Cost$0.04/page
Latency~1s
HyperLM
Step 1: Upload your document — call POST /v1/documents/upload to get a document_key

Request

Headers

NameTypeRequiredAllowed valuesDescription
X-API-Keystring
required
—Your HyperAPI key (hk_live_* or hk_test_*).
X-AsyncstringoptionaltruefalseSet to "true" to process asynchronously and receive a job ID.
Cache-Controlstringoptional—Send `no-cache` (or `no-store`) as an alternative to `force_refresh=true`; both have the same effect. Other directives, including `max-age=0` and `public`, do not bypass the cache.

Body

NameTypeRequiredDescription
document_keystring
required
S3 document key obtained from the presigned upload endpoint (/v1/documents/upload).

Query Parameters

NameTypeDefaultAllowed valuesDescription
modestringfastfastadvancedOCR mode. `fast` returns per-page text, page geometry (`dimensions`, `page_size`, `background`) and, with `include_boxes=true`, line boxes plus typed `word_boxes`. `advanced` runs the layout-aware structured-output path and additionally populates a per-page `structured` object ({html, markdown, regions}). Defaults to `fast`. `advanced` accepts up to 60 pages and returns 413 above that; callers on the custom tier submitting asynchronously (`X-Async: true`) over the API or an SDK are raised to 500 pages. `fast` has no page cap.
include_boxesstringfalsetruefalseWhen `true`, attach a `boxes` array of line boxes ({text, bbox: [left, top, right, bottom], confidence}) and, for PDF, XPS and image inputs in `fast` mode, a `word_boxes` array of per-word boxes with typography (font, size, color, bold, italic) to each page. Coordinates are pixels in the page's `dimensions` space. Office documents (docx, pptx) return `boxes` only with `include_image=true`; `mode=advanced` returns no boxes. Defaults to `false`.
include_imagestringfalsetruefalseWhen `true`, attach a presigned `image_url` (valid ~15 minutes) to each page. A page whose image cannot be presigned is returned without `image_url` rather than failing the request. Defaults to `false`.
force_refreshbooleanfalse—When `true`, re-run OCR instead of returning the cached result. Parse results are cached per document for 24 hours, so re-submitting an unchanged file normally returns the stored output — this is how to force a genuinely fresh run after a bad result. Applies to both `fast` and `advanced`. A forced run is billed at the normal page rate, where a cached one is not charged. Defaults to `false`.

Code examples

# Get a document_key first: see POST /v1/documents/upload
curl -X POST "https://apis.hyperbots.com/v1/parse" \
  -H "X-API-Key: hk_live_your_key_here" \
  -F "document_key=550e8400-e29b-41d4-a716-446655440000"

Response

200 OK
application/json
JSON
{
  "status": "success",
  "request_id": "req_01j9x...",
  "task": "parse",
  "model_used": "HyperLM",
  "result": {
    "ocr": "Invoice\n\nBill To: Acme Corp\nDate: 2024-01-15\n\n...\n\n...",
    "pages": [
      {
        "page_number": 1,
        "text": "Invoice\n\nBill To: Acme Corp\nDate: 2024-01-15\n\n...",
        "dimensions": { "width": 1696, "height": 2176 },
        "page_size": { "width": 612, "height": 792, "unit": "pt" },
        "background": "#ffffff"
      },
      {
        "page_number": 2,
        "text": "...",
        "dimensions": { "width": 1696, "height": 2176 },
        "page_size": { "width": 612, "height": 792, "unit": "pt" },
        "background": "#ffffff"
      }
    ]
  },
  "duration_ms": 843,
  "metadata": {
    "pages": 2,
    "file_type": "pdf"
  }
}

Page images and figure crops are returned as short-lived signed storage links; the response's assets_expire_at gives the exact deadline. The text is yours to keep; the links are not. Store the request_id and read the result back with fresh links whenever you need it — Retrieving Results.