Skip to main content

Submit one user-signed Relayed-V3 transaction for co-signing and broadcast.

POST 

/v1/relay

The idempotency key is (tx.sender, tx.nonce) plus the SHA-256 of the canonical signing bytes. Posting the same bytes again returns the stored response with duplicate: true and never creates a second reservation or a second broadcast. Unknown body members are rejected. variants, transactions and alternates give VARIANTS_NOT_SUPPORTED: one request carries one transaction, signed once. Once the transaction is co-signed (state COSIGNED), the answer is always 200 or 202. Authentication: the signed transaction is the credential when the sender has an account or is an authorised sender on chain. Relaying for arbitrary senders needs a sponsor API key.

Optional logical idempotency key (header Idempotency-Key or body member intentKey; if you send both, the header is used). It is stored per (sender, key) for 86 400 000 ms. The same key with different bytes or a different nonce, while the first intent is not DEAD, gives 409 INTENT_ALREADY_SUBMITTED carrying the first intent. After DEAD the key is free again. The same key with the same bytes is an ordinary replay. The key can only reject a request, so it never contradicts the idempotency key above. Send one key per user action, so that a retry after a timeout cannot relay the same action twice.

Free relays: a short list of calls to the CoRelayer contract is relayed free of charge. GET /v1/pricing publishes it as howToBuy.freeOperations. A free call to the contract while it is paused (paused or deposits_paused, sender is not the owner) gives 503 CONTRACT_PAUSED before anything is co-signed.

Request​

Responses​

Co-signed and acknowledged by at least one gateway (state BROADCAST or later).

Response Headers
    CoRelayer-Request-Id

    Request id, also the instance of a problem document and the log correlation id.

    RateLimit-Remaining

    Remaining units in the current window.