Propelus
Developer Guide

Errors

The error envelope, the error codes the API returns, and how to recover from each.

The API signals failures with standard HTTP status codes and a consistent JSON body. Anything with a status code of 300 or higher should be treated as a failure.

Error envelope

Every error response shares the same shape:

{
  "status": 400,
  "detail": "Human readable error message.",
  "code": "validation_error"
}
FieldTypeDescription
statusintegerMirrors the HTTP status code. Anything greater than 299 is a failure.
detailstringHuman-readable message. Useful for logs, but do not branch on its exact text.
codestringStable, machine-readable code. Branch on this. For 5xx errors it is a tracking UUID; include it when contacting support.

Branch your error handling on code, not on detail, since the human-readable message may change.

Client errors (4xx)

Client errors mean the request needs to be changed before retrying; an identical retry will fail the same way. The code field takes one of these values:

codeMeaningHow to recover
missing_fieldsA required field was absent.Add the missing field(s) named in detail.
validation_errorThe request failed validation.Fix the fields named in detail.
invalid_bodyThe request body could not be parsed.Send valid JSON with Content-Type: application/json.
invalid_fieldA field had an unexpected name or type.Correct the field to match the endpoint's schema.
unsupported_valueA field held a value the API doesn't accept.Use a supported value (check the endpoint reference).
empty_valueA field was present but empty.Provide a non-empty value.
invalid_parameterA query or path parameter was invalid.Correct the parameter named in detail.
invalid_credentialsAuthentication failed.Check your x-api-key and x-client-id. See Authentication.
invalid_batch_sizeThe batch size was outside the allowed range.Reduce the number of items in the batch.
max_batch_size_exceededThe batch exceeded the maximum item count.Split the request into smaller batches.
http_validation_errorThe request failed structural validation.Review the request against the endpoint schema.
unsupported_professionThe professionCode isn't recognized.Use a code returned by GET /v2/professions.
unsupported_stateThe professionState isn't supported for this profession.Confirm the state/profession pairing via GET /v2/professions.
restricted_professionYour account isn't authorized for this profession.Contact support@propelus.com to request access.
restricted_stateYour account isn't authorized for this state.Contact support@propelus.com to request access.
restricted_environmentThe operation isn't allowed in this environment.Confirm you're calling the correct environment.

Rate limiting (429)

A 429 Too Many Requests means you've exceeded your rate limit. The response includes a Retry-After header (seconds to wait) and the standard envelope. Honor Retry-After before retrying. See Rate limits for the full backoff strategy.

Server errors (5xx)

A 5xx indicates a problem on the Propelus side, not with your request. These are safe to retry:

  • Retry with exponential backoff and jitter (see Rate limits).
  • The code field is a tracking UUID. Include it, along with the approximate timestamp, when you contact support@propelus.com so the issue can be traced.

On this page