Error Codes in Plain English: A Complete Breakdown
Every Projul AI Connect error is JSON with a status number, a short code, and, for validation problems, the field and reason.
{
"type": "https://connect.projul.com/errors/validation_failed",
"title": "Validation failed",
"status": 422,
"detail": "The request was well-formed but could not be accepted.",
"code": "validation_failed",
"request_id": "req_6ErEg3xmkg2fdk0dh34e2O",
"errors": [
{"field": "/status", "code": "invalid_enum", "message": "'Active' is not a writable project status. Accepted values: new_lead,..."}
]
}
What the codes mean
- 400: invalid_request (a malformed or missing field; fix and resend), invalid_cursor (the list page expired; start over), bulk_limit_exceeded (over 200 items in one bulk list).
- 401/403: invalid_api_key (missing, unknown, revoked or expired); insufficient_access, key_paused, account_inactive, feature_not_enabled, connect_suspended (an account or plan issue); trial_exhausted (the free calls are used up and do not reset, so add Projul AI Connect to your plan). Check "Settings", then "Projul AI Connect".
- 404 not_found: the record is missing, deleted, archived, or belongs to another company.
- 405 method_not_allowed: that operation isn't supported on that address.
- 409: resource_archived (matches an existing archived client; unarchive and retry), not_draft (the estimate is no longer editable; add a change order), estimate_exists, deletion_blocked (the invoice has a payment), idempotency_in_flight/idempotency_target_deleted, concurrency_conflict (retry).
- 412/428: stale_version (re-read the record and reapply the change), precondition_required (send back the version you read). See What do "version" and "stale" errors mean?
- 413/415: payload_too_large (send smaller batches), unsupported_media_type (send the request as JSON).
- 422 validation_failed: the field and reason are in the errors list (invalid_enum, unknown_reference, required, out_of_range and similar); file_too_large and idempotency_key_reuse (use a new key) are given as the error's own code instead.
- 429: rate_limited (wait the given time and retry) or quota_exceeded (the monthly allowance is used up until it resets). See Why does my AI say "too many requests" or slow down?
- Sign-in errors (invalid_client, invalid_grant, invalid_scope, access_denied and similar): the tool needs to sign in again.
- 500/503: Projul's side failed, not your request; retry, and note the request_id if it keeps happening.

Note: The request_id in every error identifies the exact call in Projul's logs if it needs to be traced.
Questions? Let's Chat.
support@projul.com
(844) 776-5853