List compatible LLM models
Returns a cached, normalized OpenRouter catalog filtered to models that advertise
strict structured output (structured_outputs + response_format), have valid finite
provider-list cost (internally) that is converted to customer retail rates, produce text, and are not expired.
Default mode=suggested returns a short recommended subset. mode=search discovers the
full compatible catalog with optional q / pagination. Field grounding and schema
suggestion remain restricted to certified models.
Authorization
bearerAuth Existing Eigenpal API key presented as a bearer token.
In: header
Query Parameters
suggested (default): short recommended subset.
search: full compatible catalog filtered by q.
"suggested"Value in
- "suggested"
- "search"
Case-insensitive substring match against id, label, or provider. Used with mode=search.
length <= 2001-based page index when paginating search results.
1 <= value1Page size for search; ignored for suggested mode (bounded server-side).
1 <= value <= 10025Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/models/llm" \ -H "Authorization: Bearer $OPENPARSER_API_KEY"{ "mode": "suggested", "catalog_version": "string", "fetched_at": "2019-08-24T14:15:22Z", "stale": true, "data": [ { "id": "string", "label": "string", "provider": "string", "created_at": "2019-08-24T14:15:22Z", "context_length": 1, "recommendation": "suggested", "is_default": true, "certified_grounding": true, "certified_suggest": true, "supports_grounding": true, "supports_suggest": true, "pricing_known": true, "reasoning": { "supported_efforts": [ "none" ], "default_effort": "none", "mandatory": true, "supports_max_tokens": true }, "deprecated_at": "2019-08-24T14:15:22Z", "pricing": { "prompt_usd_per_1m": 0, "completion_usd_per_1m": 0, "basis": "customer_retail" } } ], "page": 1, "limit": 1, "total": 0, "has_more": true}{ "error": { "code": "unauthorized", "message": "invalid API key", "request_id": "req_01h2example", "retryable": false }}{ "error": { "code": "forbidden", "message": "API key lacks required scope", "request_id": "req_01h2example", "retryable": false }}{ "error": { "code": "rate_limited", "message": "request rate limit exceeded", "request_id": "req_01h2example", "retryable": true }}List OCR models GET
Returns the hosted OCR model registry with current capabilities, option defaults, retail page prices, and availability. Clients should discover this endpoint instead of hard-coding model IDs or provider-specific options.
Parse a document synchronously POST
Admit a parse job, wait up to the sync wait limit, and return the selected terminal parse representation when ready. `output_format` defaults to the versioned provider-neutral `openparser@1`; `raw` returns a stable provider envelope around the selected provider's untouched successful result. Terminal `failed` within the wait window returns `422` `ErrorResponse`; terminal `indeterminate` returns `504` `ErrorResponse`. Returns `202` with a durable job reference and `Location` if the wait limit expires first. Example (`multipart/form-data`): ```bash curl -X POST 'https://api.openparser.dev/parse' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -H "Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)" \ -F 'request={"ocr_model":"paddleocr-vl-1.6","output_format":"openparser@1"};type=application/json' \ -F 'file=@./document.pdf' ```