Errors

Every non-2xx answer from api.trlay.dev is one envelope, generated from the contract's closed code vocabulary.

Every non-2xx response carries one envelope, application/problem+json, RFC 9457.

{
  "type": "https://tollrelay.com/problems/mandate-exceeded",
  "title": "This call is over the mandate.",
  "status": 402,
  "detail": "The identity's mandate does not cover this call. The response says what remains.",
  "instance": "/verify",
  "code": "mandate_exceeded",
  "receipt": "rcpt_eu_...",
  "request_id": "req_..."
}

Fields

The problem envelope's fields
FieldTypeDescription
typestringThe problem's address under https://tollrelay.com/problems/.
titlestringOne sentence for a person. Changes without notice.
statusintegerThe HTTP status, repeated in the body.
detailstringWhat happened and what to do next. Changes without notice.
instancestring, optionalThe path of the request that failed.
codestringThe machine name, from the closed vocabulary below. A caller branches on this, never on title or detail.
receiptstring, optionalThe receipt id this response reflects, when it reflects one.
request_idstringThe id of this request, echoed from x-request-id.

Codes

A caller branches on status and code, never on title or detail: both change without notice. Adding a code is a deliberate change to the contract's vocabulary.

The closed code vocabulary, by status
StatusCodeTitle
400idempotency_key_missingThis write needs an Idempotency-Key.
400validation_failedThe request does not fit the schema.
401credential_invalidThat credential cannot be used.
401credential_missingThis request needs a credential.
401token_invalidThat identity token cannot be verified.
402mandate_exceededThis call is over the mandate.
403credential_revokedThis credential is revoked.
403credential_untrustedThis credential is not on the trust list.
403delegation_invalidThis agent is not delegated by its organisation.
403identity_revokedThis identity is revoked.
403membership_missingThis person is not a member of the organisation.
403organisation_not_verifiedThis identity's organisation has not passed verification.
403scope_missingThis credential cannot do that.
403seller_not_allowedThis seller is outside the mandate.
403seller_sanctionedThis seller is on a sanctions list.
404identity_not_foundThere is no identity with that id.
404organisation_not_foundThere is no organisation with that id.
404route_not_foundNo route answers this path.
404verifier_not_foundThere is no verifier with that id.
409billing_not_configuredThis organisation has no billing set up.
409handle_takenThat handle is taken.
409idempotency_conflictThat Idempotency-Key was used with a different body.
409idempotency_in_flightA write with that Idempotency-Key is still running.
409region_immutableAn organisation's region cannot change.
422envelope_binding_failedThe envelope does not match the payment.
422settlement_unverifiableThe settlement cannot be verified.
422subject_unresolvableThe subject cannot be read.
429rate_limitedToo many requests.
500internalSomething went wrong on our side.
501not_implementedThis surface is not live yet.