Skip to main content

Success

CodeLabelDescription
200OKRequest succeeded. Response body contains the requested data.
201CreatedResource successfully created (e.g., auto-apply profile). The response body contains the newly created object.

200 OK

{
  "data": [
    {
      "id": "a1b2c3d4-5678-9abc-def0-123456789abc",
      "title": "Senior Software Engineer",
      "company": { "name": "Acme Corp" }
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 25
}

201 Created

Returned when creating new resources such as auto-apply profiles:
{
  "id": "f9e8d7c6-5432-1abc-def0-fedcba987654",
  "name": "Default Profile",
  "created_at": "2026-03-03T12:00:00Z"
}

Client Errors

CodeLabelDescription
400Bad RequestInvalid request parameters. Check the message field for details.
401UnauthorizedMissing or invalid API key. Include X-Api-Key header.
402Payment RequiredInsufficient credits. Top up your wallet.
403ForbiddenAPI key doesn’t have permission for this resource.
404Not FoundThe requested resource doesn’t exist.
429Too Many RequestsRate limit exceeded. Check Retry-After header.

400 Bad Request

{
  "status": 400,
  "error": "Bad Request",
  "message": "Parameter 'page_size' must be between 1 and 100."
}
Common causes: missing required parameters, invalid enum values, out-of-range numbers, malformed JSON body.

401 Unauthorized

{
  "status": 401,
  "error": "Unauthorized",
  "message": "Missing or invalid API key. Include 'X-Api-Key' header."
}
Common causes: missing X-Api-Key header, revoked or rotated API key, key from a different environment.

402 Payment Required

{
  "status": 402,
  "error": "Insufficient credits",
  "credits_required": 10,
  "credits_balance": 3
}
Common causes: wallet balance too low for the requested operation. Top up in the dashboard.

403 Forbidden

{
  "status": 403,
  "error": "Forbidden",
  "message": "Your subscription does not include access to the Feed API."
}
Common causes: attempting to access subscription-only endpoints on a free plan, key restricted to specific endpoint scopes.

404 Not Found

{
  "status": 404,
  "error": "Not Found",
  "message": "Profile 'f9e8d7c6-5432-1abc-def0-fedcba987654' not found."
}
Common causes: deleted resource, typo in ID, resource belongs to a different account.

429 Too Many Requests

{
  "status": 429,
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Try again in 60 seconds.",
  "retry_after": 60
}
Common causes: exceeding per-minute, per-hour, or per-day request quotas. See Rate Limits.

Server Errors

CodeLabelDescription
500Internal Server ErrorSomething went wrong on our end. Retry the request.
503Service UnavailableService is temporarily down for maintenance. Retry shortly.

500 Internal Server Error

{
  "status": 500,
  "error": "Internal Server Error",
  "message": "An unexpected error occurred. Please retry your request."
}

503 Service Unavailable

{
  "status": 503,
  "error": "Service Unavailable",
  "message": "The service is temporarily unavailable for maintenance. Please try again in a few minutes."
}

Retry Strategy

StatusRetry?StrategyDetails
400Fix the request parametersRead the message field — it tells you exactly what’s wrong. No amount of retrying will help.
401Check your API keyVerify the key is active in your dashboard. If you recently rotated keys, ensure you’re using the new one.
402Top up creditsCheck credits_required vs credits_balance in the response to know exactly how much you need.
403Upgrade your planThis endpoint requires a higher subscription tier or specific permissions.
404Verify the resource IDConfirm the resource exists and belongs to your account.
429Wait for Retry-After secondsUse the exact value from the Retry-After header. Implement exponential backoff with jitter for repeated 429s.
500Retry with exponential backoffStart at 1s, double each attempt, cap at 30s. Max 3–5 retries. If persistent, check status.jobo.world.
503Retry after 30–60 secondsTypically indicates planned maintenance. Check status.jobo.world for updates. Retry up to 5 times with 30–60s delays.