GET /api/v1/jobs/{jobId} — Retrieve Job Status and Result
GET /api/v1/jobs/ polls job status and returns the parsed result when complete. Includes response shapes for all statuses and polling examples.
The GET /api/v1/jobs/{jobId} endpoint lets you check the status of a job and retrieve its result once parsing completes. Because FileRouter processes documents asynchronously, you call this endpoint repeatedly until the job transitions to complete or failed. The response shape changes depending on the job’s current status.
GET https://filerouter.dev/api/v1/jobs/{jobId}
The TypeScript FileRouterClient polls this endpoint automatically and resolves its promise when the job completes or rejects it when the job fails. You only need to poll manually when using the REST API directly from a non-TypeScript environment.
The UUID of the job to retrieve. You get this value from the id field in the POST /api/v1/jobs response. Example: 550e8400-e29b-41d4-a716-446655440000.
A map of output format IDs to their normalized values. The keys match the outputs array you specified when creating the job (e.g., { "markdown": "..." }).
When the job operation was "compare", the result field contains a CompareResult — not a ParseResult. The key difference is the providers array, which holds one entry per provider that was run, each containing that provider’s individual ParseResult.
A description of the error that caused the job to fail. May be null if the failure reason is unavailable.
Results expire after 7 days. Fetching a job whose result has expired returns HTTP 410 Gone. Download or store your results before the expiry window if you need them long-term.
No job with the given jobId exists for your account. Verify the UUID and ensure you’re using the same API key that created the job.
404 error body
{ "status": 404, "code": "not_found", "detail": "No job found with the given ID.", "title": "Not Found", "type": "https://filerouter.dev/problems/not-found", "instance": "/api/v1/jobs/550e8400-e29b-41d4-a716-446655440000", "request_id": "01J2Y9QX3MXJQHD2YQ9N7J93M4"}
410 Gone — Result expired
The job completed, but its result has passed the 7-day retention window and has been deleted. You can no longer retrieve the result for this job ID.
410 error body
{ "status": 410, "code": "result_expired", "detail": "The result for this job has expired and is no longer available.", "title": "Gone", "type": "https://filerouter.dev/problems/result-expired", "instance": "/api/v1/jobs/550e8400-e29b-41d4-a716-446655440000", "request_id": "01J2Y9QX3MXJQHD2YQ9N7J93M4"}
500 Internal Server Error
An unexpected server-side error occurred. The response includes a request_id — include it when contacting support.