# OpenDocRouter (slim) > OpenDocRouter is a hosted API from LlamaIndex that sends PDFs and images to a document parsing model the caller picks and returns markdown for each page. It launched on 7 October 2026 and bills prepaid credit by tokens used. - Full: https://www.anchorterminal.com/tools/opendocrouter.md (~8,150 tokens) · this version ~1,930 tokens · JSON https://www.anchorterminal.com/tools/opendocrouter.json · canonical https://www.anchorterminal.com/tools/opendocrouter - Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · Updated: 2026-10-08 **C · 56.6/100 · rank #434 of 629 · #6 in Document parsing & extraction · not agent-ready · confidence medium** Assessment: One endpoint reaches 11 parsing models, each with a dated recipe version, a published token price and a ParseBench score, and failed pages aren't charged. The service launched on 7 October 2026, so it has no status page, incident history, SLA or changelog yet, and no key scopes were found in the reviewed documentation. ## Facts - Kind: HTTP API · vendor: LlamaIndex · category: Document parsing & extraction · legal entity: LlamaIndex, Inc. · provenance 49/100 - Endpoint: `https://www.opendocrouter.ai/v1` (HTTP) - Auth: API key · pricing: Pay per use · x402: no · licence: Proprietary service under the LlamaIndex Terms of Service with an OpenDocRouter addendum. The Python and TypeScript SDKs are MIT - Probe metrics: not measured yet (probes haven't run) - Endpoints: POST /v1/parse, GET and DELETE /v1/parse/{id}, POST /v1/uploads, GET /v1/credits, GET /v1/models, all at https://www.opendocrouter.ai. OpenAPI 3.1, API version 1 - Models: 11 on 8 October 2026. Six from Anthropic, Google and OpenAI and five from other publishers (Infinity-Parser2-Flash, MinerU2.5-Pro, TeleOCR, dots.mocr, PaddleOCR-VL-1.6). Each runs a versioned parsing recipe, and responses carry `model_version` and `price_version` - File types and sizes: PDF, PNG and JPEG. URLs and uploads up to 50 MB or 500 pages, inline base64 about 3 MB, request body capped at 4 MB - Sync and async: Sync returns every page in the response, up to 50 pages. Async needs `cache: true`, returns 202, takes up to 500 pages and is polled at GET /v1/parse/{id}. No webhooks in the reviewed documentation - Output: Markdown for each page with status, token usage and charge. Optional layout with element types, markdown line spans, boxes and a confidence value. No field extraction, classification, chunking or index endpoints - Rate limits: 300 POST /v1/parse calls a minute, 60 GET /v1/parse/{id} calls a minute, 10 requests and 5 async requests running at once per account, 100 unused uploads - Errors and retries: 15 request error codes and 12 page error codes. 429 and 503 carry Retry-After. Each page is retried once by the service on timeouts, rate limits, provider errors and capacity. Pages still running after 270 seconds return `timeout` - Data retention: No document or result is stored unless `cache: true` is sent. Cached results are encrypted and kept 24 hours or until DELETE. Uploads are deleted once read, or after an hour. Page counts, tokens, errors and charges are kept - Billing: Prepaid credit that doesn't expire and isn't refundable. $5 promotional credit for new accounts, top-ups from $10 plus 5%. A request holds its maximum possible charge and releases the unused part when it ends - SDKs: Python `opendocrouter` 1.0.0 (Python 3.9+) and TypeScript `@llamaindex/opendocrouter` 1.0.0, both MIT and published on 7 October 2026. Two retries with backoff and a 60-second timeout by default - MCP server: None found in the docs or the official MCP registry - Status page: None found. llamaindex.statuspage.io has no OpenDocRouter component - Prices: Parse with Claude Opus 5.5 $48.82 per 1,000 pages; Parse with Gemini 3 Flash $19.67 per 1,000 pages; Parse with GPT-5.6 Terra $19.89 per 1,000 pages; Parse with Gemini 3.8 Flash $5.91 per 1,000 pages; Parse with Infinity-Parser2-Flash $4.34 per 1,000 pages; Parse with dots.mocr $3.97 per 1,000 pages; Parse with TeleOCR $2.70 per 1,000 pages; Parse with PaddleOCR-VL-1.6 $2.11 per 1,000 pages; Parse with Claude Haiku 5.5 $1.22 per 1,000 pages; Parse with MinerU2.5-Pro $0.86 per 1,000 pages; Parse with GPT-6 Luna $0.80 per 1,000 pages; Layout add-on $0.20 per 1M tokens; Top-up fee 5% percentage fee - Scores: Reliability 43, Performance pending, Schema & documentation 85, Agent ergonomics 84, Security & auth 40, Payments & pricing 30, Task success pending, Maintenance & community 65, Transparency & trust 47 · total over the 7 assessed categories - Why: Reliability, Read with the hosted lines. · Schema & documentation, Public OpenAPI 3.1 document at /v1/openapi.json covering all six operations (25). · Agent ergonomics, API reading. · Security & auth, Bearer API keys created in the dashboard, and the terms say a key can be revoked. · Payments & pricing, No x402, MPP or L402 (0). · Maintenance & community, Both SDKs published 1.0.0 on 7 October 2026, the day of the announcement, and the newest model recipe is dated the same day (30). · Transparency & trust, Closed service under the LlamaIndex terms with an OpenDocRouter addendum, SDKs MIT (15). - Sources: 17, open questions: 8, both in the full twin - Capabilities: docs.parse, docs.ocr, docs.tables - JSON: https://www.anchorterminal.com/api/v1/tools/opendocrouter.json - Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/opendocrouter.svg` or a link to https://www.anchorterminal.com/tools/opendocrouter from a page on opendocrouter.ai or one of its subdomains, or the README of github.com/run-llama/opendocrouter-py, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin. ## Before you call it 1. Call `GET /v1/models` first, which needs no key, and choose a model by `avg_charge_per_page_usd` and its ParseBench scores. Send its `id` as `model` 2. Send `cache: true` on any request you might repeat. Without it the markdown exists only in the POST response and a resend is charged as a new request 3. Raise the SDK timeout above its 60-second default for sync parses. Pages can run for 270 seconds and the SDKs retry a timed-out request twice 4. Check every page's `status` before using its markdown. A 200 can be `partial`, and failed pages can be resent alone with `pages` 5. Treat 402 as final until credit is added. The hold is the model's maximum charge per page times the page count, and `GET /v1/credits` shows `available_usd` ## Connect ```bash pip install opendocrouter # or: npm install @llamaindex/opendocrouter ``` ```bash curl https://www.opendocrouter.ai/v1/parse \ -H "Authorization: Bearer $OPEN_DOC_ROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "google/gemini-3.8-flash-low", "document": {"url": "https://arxiv.org/pdf/1706.03762"}}' ``` Full config and headless snippets are in the full page. Through letme (picks today, calling later): https://letme.dev/opendocrouter ## Similar tools | Tool | Grade | Score | Shared capabilities | Slim | | --- | --- | --- | --- | --- | | Extend API + MCP | B | 62.9 | docs.parse, docs.ocr, docs.tables | https://www.anchorterminal.com/tools/extend.min.md | | Reducto API + MCP | B | 62.9 | docs.parse, docs.ocr, docs.tables | https://www.anchorterminal.com/tools/reducto.min.md | | LlamaParse API + MCP | C | 59.2 | docs.parse, docs.ocr, docs.tables | https://www.anchorterminal.com/tools/llamaparse.min.md | | Mistral OCR API | C | 58.8 | docs.parse, docs.ocr, docs.tables | https://www.anchorterminal.com/tools/mistral-ocr.min.md | | Adobe PDF Services / PDF Extract API | C | 55.9 | docs.parse, docs.ocr, docs.tables | https://www.anchorterminal.com/tools/adobe-pdf-extract.min.md | ## Panel reviews (0, desk reviews from public material, no calls made)