Documentation Index
Fetch the complete documentation index at: https://docs.fribl.co/llms.txt
Use this file to discover all available pages before exploring further.
Error Handling
The Fribl API uses standard HTTP status codes and returns JSON error bodies to indicate what went wrong.Error response format
Most API errors follow this structure:422 Unprocessable Entity with structured details:
HTTP status codes
| Code | Meaning | When it occurs |
|---|---|---|
200 | OK | Request succeeded |
400 | Bad Request | Invalid request body, missing required fields, invalid file format, weight sum exceeds 1.0, or update validation failed |
401 | Unauthorized | Missing or invalid x-api-key header |
404 | Not Found | Requested CV, job, or match does not exist |
422 | Unprocessable Entity | Update payload does not match the expected CV or job update schema |
429 | Too Many Requests | Rate limit exceeded |
500 | Internal Server Error | Unexpected server-side failure |
502 | Bad Gateway | Upstream service error (sourcing endpoints) |
503 | Service Unavailable | Required external service is not configured (sourcing endpoints) |
Common error examples
Invalid API key
x-api-key header contains a valid key.
Missing required field
inputs field must be a non-empty array of strings.
Update validation failure
PUT /jobs/{id} and PUT /cvs/{id}, send content_language (or set the Accept-Language header — the API auto-forwards it), include at least one allowed dimension (information, experience/experience_preference, education/education_preference, hard_skills, soft_skills), and use split hard_skills / soft_skills arrays with canonical lowercase relationship values: required, optional, satisfies.
Resource not found
Match weight validation
experience + hardSkills + softSkills + education in your weights object does not exceed 1.0.
Processing statuses
CV and job analysis is asynchronous. After submitting a document, poll the status endpoint to track progress. The public API uses a single normalized vocabulary acrossPOST /analyze, POST /analyze/files, POST /{cvs,jobs}/status, and GET /{cvs,jobs}/{id}:
| Status | Meaning |
|---|---|
PENDING | The task is queued, actively being processed, or being retried after a transient failure. Keep polling. |
COMPLETED | Analysis is finished — retrieve results or run matching. |
FAILED | Analysis errored out — resubmit the document. |
NOT_FOUND | No record exists for that ID in the requested resource type. Returned only by the batch POST /status endpoints. |
GET /cvs/{id} and GET /jobs/{id} use HTTP status codes to signal readiness: an in-flight task returns 404 with body { "message": "...", "status": "PENDING" } (keep polling), and a ready entity returns 200 with status: "COMPLETED". A 404 with an { "error": "..." } body means the ID does not exist.