Errors

One envelope, stable codes, and what each one means you should do.

Every refusal has the same shape. The HTTP status says what kind of problem it is; the errorCode is stable and is what you should branch on.

JSON
{
  "errorCode": "SCOPE_NOT_GRANTED",
  "message": "This credential is not scoped for that operation.",
  "details": null
}
StatusCodeWhat to do
401INVALID_API_KEYCheck the header. Absent, unknown, revoked and expired all answer this.
403SCOPE_NOT_GRANTEDCall GET /me. You need a broader scope, or your plan changed.
403TENANT_SUSPENDEDThe institution's account is not being served. Talk to them.
404SESSION_NOT_FOUNDWrong identifier, or it belongs to another institution.
404CASE_NOT_FOUNDWrong reference, or it belongs to another institution.
409WORK_FLOW_NOT_PUBLISHEDThe journey is not live. Re-read GET /workflows.
409SANDBOX_SESSIONS_UNSUPPORTEDUse a production credential for hosted sessions.
409DECISION_NOT_READYKeep polling the session until it reads DECIDED.
409PLAN_LIMIT_REACHEDThe monthly allowance is spent. The institution can raise it.
409SERVICES_STOPPEDThe institution's account cannot fund the call.
422UPSTREAM_REJECTEDA provider refused your input. Check it before retrying.
429RATE_LIMITEDWait for Retry-After seconds, then retry.
502UPSTREAM_FAILEDA provider failed. Retry with backoff.
503TENANT_HOST_NOT_CONFIGUREDA deployment setting is missing. Report it.
504UPSTREAM_TIMEOUTA provider did not answer. Retry with backoff.