Error Codes
Complete reference of 27 error codes across 6 categories returned by the Jobs Service.
Error response formatjson
{
"error": {
"code": "ERR_JOBS_NOT_FOUND",
"message": "The requested job does not exist",
"http": 404,
"details": {}
}
}APIAPI Errors
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_MISSING_TENANT_ID | 401 | MISSING_TENANT_ID | Tenant ID is missing from the request context | Ensure the request includes a valid JWT with tenant context |
ERR_JOBS_NOT_FOUND | 404 | NOT_FOUND | The requested job does not exist | Verify the job ID and ensure you are authenticated under the correct tenant |
ERR_JOBS_INVALID_CRON | 400 | INVALID_CRON | The CRON expression is malformed or unsupported | Validate the CRON expression against standard 5-field or 7-field syntax |
ERR_JOBS_INVALID_PRIORITY | 400 | INVALID_PRIORITY | Priority level is outside the allowed range for your subscription tier | Check GET /quota for allowed_priority_range and adjust the priority value |
ERR_JOBS_CANNOT_UPDATE_STATUS | 400 | CANNOT_UPDATE_STATUS | Job is in a status that does not allow updates | Only queued and scheduled jobs can be updated |
ERR_JOBS_CANNOT_CANCEL_STATUS | 400 | CANNOT_CANCEL_STATUS | Job is in a terminal status and cannot be cancelled | Terminal jobs cannot be cancelled. Use retry for failed jobs |
ERR_JOBS_CANNOT_RETRY_STATUS | 400 | CANNOT_RETRY_STATUS | Job is not in a retryable status | Only failed and deadlettered jobs can be retried |
ERR_JOBS_CANNOT_REPLAY_STATUS | 400 | CANNOT_REPLAY_STATUS | Job is not in the dead letter queue | Only deadlettered jobs can be replayed from the DLQ |
ERR_JOBS_CANNOT_PURGE_STATUS | 400 | CANNOT_PURGE_STATUS | Job is not eligible for purging | Only deadlettered jobs can be purged from the DLQ |
QuotaQuota & Rate Limit
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_QUOTA_EXCEEDED | 429 | QUOTA_EXCEEDED | A tenant quota has been exceeded | Wait for existing jobs to complete, or upgrade subscription tier |
ERR_JOBS_RATE_LIMIT_EXCEEDED | 429 | RATE_LIMIT_EXCEEDED | API rate limit exceeded | Back off and retry after the retryAfter period |
ERR_JOBS_QUOTA_RESET_FAILED | 500 | QUOTA_RESET_FAILED | Internal failure when resetting quota counters | Retry the operation. If persistent, contact platform support |
SubscriptionSubscription Tier
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_FEATURE_NOT_AVAILABLE_FOR_TIER | 403 | FEATURE_NOT_AVAILABLE | Feature is not available for your subscription tier | Upgrade to the minimum required tier listed in error details |
WorkerWorker Protocol
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_WORKER_UNAUTHORIZED | 401 | WORKER_UNAUTHORIZED | Worker mTLS authentication failed | Ensure the worker uses a valid mTLS certificate with conforming CN |
ERR_JOBS_LEASE_INVALID | 403 | LEASE_INVALID | Lease token does not match the current lease | Re-lease the job via POST /_internal/worker/lease |
ERR_JOBS_LEASE_EXPIRED | 410 | LEASE_EXPIRED | The job lease has expired | Increase heartbeat frequency (recommended: every 30 seconds) |
InternalInternal / Repository
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_JOB_NOT_FOUND | 404 | JOB_NOT_FOUND | Job not found at the repository level | Verify the job ID |
ERR_JOBS_EXECUTION_NOT_FOUND | 404 | EXECUTION_NOT_FOUND | Job execution record not found | Verify the execution attempt number |
ERR_JOBS_CRON_SCHEDULE_NOT_FOUND | 404 | CRON_SCHEDULE_NOT_FOUND | CRON schedule record not found | Verify the CRON schedule ID |
ERR_JOBS_TENANT_QUOTA_NOT_FOUND | 404 | TENANT_QUOTA_NOT_FOUND | Tenant quota record not found | System auto-initializes quotas on first job enqueue. Retry the operation |
GlobalGlobal Exceptions
| Code | HTTP | Name | Description | Resolution |
|---|---|---|---|---|
ERR_JOBS_BAD_REQUEST | 400 | BAD_REQUEST | Generic bad request from ValidationPipe or DTO validation | Check the message field for specific validation errors |
ERR_JOBS_UNAUTHORIZED | 401 | UNAUTHORIZED | Authentication failed or JWT token is missing/expired | Obtain a fresh JWT from auth-svc |
ERR_JOBS_FORBIDDEN | 403 | FORBIDDEN | Insufficient permissions or tenant mismatch | Verify your role and tenant context match endpoint requirements |
ERR_JOBS_INTERNAL | 500 | INTERNAL | Unhandled internal server error | Report as a bug with the request_id from the response meta |
ERR_JOBS_DOWNSTREAM_UNAVAILABLE | 502 | DOWNSTREAM_UNAVAILABLE | A downstream service is temporarily unavailable | Retry after a short delay |
ERR_JOBS_SERVICE_UNAVAILABLE | 503 | SERVICE_UNAVAILABLE | Service is still initializing or in degraded mode | Retry the request. Lambda will complete initialization |