Errors
Errors on /v1/ endpoints are returned as application/problem+json.
HTTP/1.1 401 Unauthorized
Content-Type: application/problem+json
X-Request-Id: 88bce6bf-cb2d-4a51-ad72-ba7d155043eb{
"type": "https://api.worklogx.com/problems/invalid-api-key",
"title": "Authentication failed",
"status": 401,
"code": "invalid_api_key",
"requestId": "88bce6bf-cb2d-4a51-ad72-ba7d155043eb"
}#Fields
| Field | Description |
|---|---|
type | URI identifying the problem type |
title | Short English description. Do not parse it. |
status | HTTP status code |
code | Stable machine-readable error code. Use this in your code. |
requestId | ID of the request, also sent as X-Request-Id header. Include it when contacting support. |
requiredScope | Only for insufficient_scope: the missing scope |
errors | Only for validation_failed: list of { "field", "code" } |
Fields without a value are omitted.
#Error codes
| Status | code | Meaning |
|---|---|---|
| 400 | validation_failed | The request body is invalid. See errors. |
| 400 | idempotency_key_required | POST without Idempotency-Key |
| 400 | invalid_limit | limit is not between 1 and 100 |
| 400 | invalid_cursor | cursor is not a valid cursor |
| 400 | invalid_date_range | dateFrom is after dateTo |
| 400 | invalid_status | Unknown absence status filter |
| 400 | invalid_request | The request could not be processed |
| 400 | conflict | The change conflicts with the current state of the record |
| 400 | invalid_api_client | The API client cannot perform this create request |
| 401 | invalid_api_key | Missing, invalid, revoked or expired key, or key from the wrong environment |
| 403 | insufficient_scope | The API client lacks the required scope |
| 403 | api_client_disabled | The API client is disabled |
| 403 | public_api_unavailable | The Public API is not enabled for the organization |
| 404 | employee_not_found, customer_not_found, project_not_found, task_not_found, form_not_found, submission_not_found, absence_not_found, worklog_not_found | The record does not exist in your organization |
| 409 | idempotency_key_reused | Idempotency-Key reused with a different request body |
| 409 | absence_not_mutable | The absence cannot be updated in its current state |
| 429 | rate_limit_exceeded | Too many requests, see Rate Limits |
| 500 | internal_error | Unexpected error. Retry later and report the requestId if it persists. |
IDs of other organizations behave like unknown IDs and return 404.
#Validation errors
{
"type": "https://api.worklogx.com/problems/validation",
"title": "Validation failed",
"status": 400,
"code": "validation_failed",
"requestId": "3d6f0b8a-1c2e-4f5a-9b7d-6e8c0a1f2b34",
"errors": [
{ "field": "name", "code": "required" }
]
}Field error codes include required, invalid, too_long, duplicate, invalid_range, overlap, mismatch and immutable.
Known differences between backend, specification and contract are listed under Open backend findings. They are not part of the API contract.
#Retrying
429: wait for theRetry-Afterheader (seconds), then retry.500: retry with backoff. ForPOST, reuse the sameIdempotency-Key.- Other
4xx: fix the request. Retrying unchanged returns the same error.