ExchainDocs
DocsAPI

APIx402Get the x402 signers

Get the x402 signers

Enclave addresses and the pinned Safe contracts.

GET
/v1/x402/signers

The enclave addresses a guarded Safe lists as owners, with each member’s id and PCR0, and the Safe 1.4.1 contracts Exchain accepts. chainId is the network’s Base chain; chainIds lists every EVM chain this service registers Safes on for the node’s network. The Safe contracts are the same on each.

Authorization

nodeToken
headerAuthorizationBearer <token>

Node Token from the Exchain console. Works for wallets this node registered; the node’s network (preprod or mainnet) decides the network of the request. Use a preprod token in the playground.

Response Body

Signers and Safe contracts.

application/json
  1. response
network*string
Value in"preprod""mainnet"
chainId*integer

The network’s Base chain (84532 for preprod, 8453 for mainnet).

chainIds?array<integer>

Every EVM chain this service registers guarded Safes on for the node’s network. The Safe contracts are the same on each.

signers*array<>
Items1 <= items
safe*
asOf*string
Match^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$
Formatdate-time
schemaVersion*string

Wire schema version, "1.1" today.

Value in"1.0""1.1"
chainTip*|null
Example Request
curl -X GET 'https://cosign.exchain.network/v1/x402/signers'
Example Response
{  "network": "preprod",  "chainId": 84532,  "chainIds": [    84532,    11155111  ],  "signers": [    {      "address": "0x4e91c2a7d3b8f6051e2c9a7d4b3f8e6c1a5d9b20",      "member": "exchain-eu-1a",      "pcr0": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"    },    {      "address": "0x6b3f8d1c9e2a7405b8d3f1c6e9a2b7d4f0c8e531",      "member": "exchain-eu-1b",      "pcr0": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"    },    {      "address": "0x8b1e5d3c7f2a9046e1b8d5c3a7f9e2b4d6c1a083",      "member": "exchain-eu-1c",      "pcr0": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"    }  ],  "safe": {    "version": "1.4.1",    "singleton": "0x29fcb43b46531bca003ddc8fcb67ffe91900c762",    "proxyFactory": "0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67",    "fallbackHandler": "0xfd0732dc9e303f09fcef3a7388ad10a83459ec99",    "multiSendCallOnly": "0xa83c336b20401af773b6219ba5027174338d1836",    "permit2": "0x000000000022d473030f116ddee9f6b43ac78ba3"  },  "asOf": "2026-11-05T14:22:07.318Z",  "schemaVersion": "1.1",  "chainTip": null}

Errors

StatusCodeMeaning
400quorum_mismatchAn enclave’s address is not known yet; retry shortly.
401unauthorizedThe bearer credential is missing, unknown or revoked.

Every code and what to do about it: Errors and codes.