Skip to content
Integra Agentic Connectors

Refusal codes

Every code the seller door refuses with, its HTTP status and what it means.

Refusal codes

A refusal is a JSON object {"code", "sentence", "correlationId"}. The code is one of the 47 below and is stable. The sentence is for people and may be reworded. The correlationId names the call in the door's log.

Every 503 answer carries Retry-After: 1: retry the same request after a second. Every other refusal is final for the request as sent.

The same codes are exported as REFUSALS from @integraledger/agentic-connectors, each with its status.

400

The body is not the operation's JSON object.

CodeMeaning
door/malformedThe body is not the operation's JSON object: it is not JSON, it is not an object, or a member is missing, has the wrong type, or is not in the schema.

401

No valid seller credential.

CodeMeaning
door/unauthenticatedThe request carries no seller credential, or one the door does not know. The answer carries WWW-Authenticate: Bearer realm="seller-door".

403

The request carries an Origin header; the door serves servers only.

CodeMeaning
door/browser-originThe request carries an Origin header. The door serves servers only; call it from your backend.

404

Nothing known by that name for this tenant.

CodeMeaning
door/not-foundNothing is known by that name for this tenant: no such path, or no record with that ATR hash.
door/resource-unknownThe resource names no resource declared for this tenant.
claim/unknownNo record matches the hash the payment carries.

405

CodeMeaning
door/methodThe path is served, but not with this method.

409

The record is in a state that does not allow this.

CodeMeaning
issue/mint-request-reusedThis mintRequestId was issued for different offers, content or request. A changed checkout needs a new id.
issue/mint-request-lapsedThis mintRequestId's record has lapsed. Append :<n> with a new n and issue again.
claim/in-progressThis ATR's payment is already claimed. On a retry of the same presentation, the first attempt won.
claim/paidThis ATR is already paid.
claim/not-this-requestThe payment is not for the options and request this ATR was issued for.
claim/channel-openThis channel is already open under an ATR. Serve its later requests yourself, and never claim them.
claim/channel-not-openNo opening of this channel was claimed. Claim the opening first.
claim/agreement-firstThe record needs the agreement step, and the agreement payment is not recorded yet. Claim this payment once it is.
claim/instrument-claimedThis payment instrument is already claimed for another record.
report/pairing-mismatchThe report names a pairing other than the record's.
settle/other-referenceThis record was settled with another reference.
settle/not-settlingThe record is not in a state that allows this report.

410

The challenge has lapsed.

CodeMeaning
claim/lapsedThe challenge for this ATR has lapsed.

413

The body is larger than this operation accepts.

CodeMeaning
door/too-largeThe body is larger than the operation accepts.

415

The body is not application/json.

CodeMeaning
door/media-typeThe body is not sent as application/json.

422

The request cannot be served as sent.

CodeMeaning
door/request-requiredThe offer or claim is on an x402 surface and carries no request commitment.
door/chosen-requiredThe report is for a record with no claim, and needs chosen: the option the payment paid, as issued.
door/reference-requiredThe report needs a reference of 1 to 256 characters with no control characters.
door/receipt-requiredThe paid report is for a confirm-only channel pairing, and needs the receipt its opening answered.
issue/input-boundsThe request is outside the bounds the door accepts (for example more than 16 offers or 56 content slots).
issue/pairing-not-servedAn offer names a pairing the resource is not declared to serve.
issue/offer-refusedAn offer's pairing cannot place the hash in that option. The sentence names the pairing and its own code.
issue/mixed-protocolsThe offers name pairings of more than one protocol. One issue serves one protocol.
core/slot-nameA content slot's name is not allowed: it must match ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$.
core/slot-reservedA content slot uses a name the ATR reserves (atrVersion, id, or the binding's slot).
core/slot-duplicateTwo content slots have the same name.
core/content-not-jsonA content slot's bytes are not exactly one JSON value (RFC 8259).
core/binding-not-jsonAn offer cannot be recorded as JSON.
core/too-largeThe ATR would be larger than the size the door allows.
claim/pairing-unknownThe pairing is not one this payment or the chosen option offers.
claim/not-boundThe payment carries no ATR hash the door can read in the pairing's field.
claim/nothing-to-checkThe pairing carries nothing the buyer signs. Report the payment instead.

503

Not available now; retry after one second.

CodeMeaning
issue/deadlineThe ATR was not ready in time. Retry with the same mintRequestId.
issue/contributor-unavailableA contributor the seller configured did not answer. Retry shortly.
issue/storage-unavailableThe ATR could not be written to the seller's storage, so no challenge may go out. Retry shortly.
issue/store-unavailableThe record store is not available. Retry shortly.
issue/capacityThe record store is at capacity. Retry shortly.
claim/store-unavailableThe record store is not available. Retry shortly.
claim/read-unavailableThe landed payment could not be read on the rail yet. Retry shortly.
settle/store-unavailableThe record store is not available. Retry shortly.
Edit on GitHub

Last updated on

On this page