API versions — v1 and v2 are retired
Updated
Current state#
| Version | Path | Status |
|---|---|---|
| v1 | /v1/documents | Retired — returns 404 |
| v2 | /v2/documents | Retired — returns 404 |
| v3 | /v3/documents | Live, maintenance only — no new integrations |
| v3.1 | /v3.1/documents | Current. Build against this. |
v1 and v2 were retired after confirming no customer traffic. Both already return 404 in production, so no migration window applies — any code still calling them is already broken.
Why v3.1 and not v3#
v3.1 is a strict superset of v3. Same endpoints, plus:
models— discover permitted document types without spending creditsprocessandresult— multi-page document support- Accepts JPG and PNG as well as PDF (v3 is PDF-only)
- Structured, stable error codes; v3 returns a 500 on some paths where v3.1 returns a clean 4xx
- Per-page credit accounting
There is no reason to start on v3.
api/v3/classes/ does not reach api/v3.1/classes/. This matters for anyone reading the
source: the two are independent, despite older docs claiming they share code.Base URL and the /api trap#
The public base is https://api.docxtract.io/ with no /api prefix:
✓ https://api.docxtract.io/v3.1/documents
✗ https://api.docxtract.io/api/v3.1/documents → 404
The api/ directory in the codebase is the docroot for the api. subdomain. It is not part of the public path. This trips people up because the repository layout and the URL look like they should match, and they don't.
Legacy hostnames#
docxtract.rpatech.ai 301/308-redirects to api.docxtract.io. It works, but relies on a redirect and should not appear in new code, tests, or documentation.
Version reported by health#
GET /v3.1/health returns a version field read from server configuration. If it disagrees with the path you called, the deployed config is out of step with the code — worth raising rather than working around.
Something wrong or missing on this page? Tell us.