JobFront Docs

504

Retry with backoff

Request timed out — The request took too long. The API stops at 50 seconds and says so in JSON.

Response body

{ "error": { "code": "request_timeout", … } }

Should you retry?

Yes — with exponential backoff, and honour Retry-After when it is present.

What it means

Two codes, one client action. request_timeout is the API's own answer: the request passed its 50-second limit (error.details.timeout_seconds is 50), or a search inside it timed out. gateway_timeout means the proxy in front of the API stopped waiting first, at 58 seconds; it is a rare backstop. Neither means the request was malformed, and a request that times out returns no records, so it is never billed. Both carry Retry-After. Set your HTTP client's timeout to at least 55 seconds so you receive request_timeout instead of abandoning the request and seeing a bare network error such as ECONNABORTED; use 60 seconds to receive the proxy's gateway_timeout as well. A 504 with no JSON body came from the load balancer; treat it the same way. On MCP the timeout is the JSON-RPC error -32007 — see MCP errors.

Common causes

How to fix it

Retry with exponential backoff, starting at Retry-After seconds. If the same request keeps timing out, it is too expensive as written: follow the cursor instead of a deep offset, lower limit, or narrow the filters or free-text term. Check that your client timeout is at least 55 seconds.

Endpoints that return this

Read from the OpenAPI specification, so this list cannot claim an endpoint returns a status the contract does not list.

MethodEndpointWhat it does
GET /v4/jobs Search jobs
GET /v4/jobs/search Search jobs (alias of /v4/jobs)
GET /v4/jobs/options Job facet values
GET /v4/jobs/{job_id} One job by global id
GET /v4/autocomplete/titles Job-title suggestions
GET /v4/autocomplete/sources Source (company) suggestions
GET /v4/sources Search sources (companies)
GET /v4/sources/search Search sources (alias of /v4/sources)
GET /v4/sources/options Source facet values
GET /v4/sources-id/{source_id} One source by id
GET /v4/sources-url/{url_source} One source by URL
GET /v4/sources/{url_source} One source by URL (alias)
GET /v4/sources-id/{source_id}/jobs A source's jobs (by id)
GET /v4/sources/{url_source}/jobs A source's jobs (by URL)
GET /v4/sources-id/{source_id}/related Related sources (by id)
GET /v4/sources/{url_source}/related Related sources (by URL)
GET /v4/jobs/hidden Jobs you have hidden
POST /v4/jobs/hidden/{job_id} Hide a job
DELETE /v4/jobs/hidden/{job_id} Un-hide a job
GET /v4/sources/blocked Companies you have blocked
POST /v4/sources/blocked/{source_id} Block a company
DELETE /v4/sources/blocked/{source_id} Unblock a company
GET /v4/me Your plan and current quota
GET /v4/usage Daily usage history
POST /mcp MCP server (JSON-RPC 2.0)