Create wallet verification challenge
curl --request POST \
--url https://test-api.shodai.network/v0/siwe/nonce \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266'})
};
fetch('https://test-api.shodai.network/v0/siwe/nonce', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
"nonce": "0123456789abcdef0123456789abcdef",
"issuedAt": "2026-08-07T20:00:00.000Z"
},
"meta": {
"apiVersion": "v0",
"requestId": "req_123"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}Wallet Access
Create wallet verification challenge
Creates an account-bound EIP-4361 nonce for a wallet address. OAuth bearer tokens require agreements.write; API keys require the equivalent account entitlement. The challenge expires after five minutes, and requesting another nonce invalidates the prior nonce for the same authenticated account and address.
POST
/
v0
/
siwe
/
nonce
Create wallet verification challenge
curl --request POST \
--url https://test-api.shodai.network/v0/siwe/nonce \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266'})
};
fetch('https://test-api.shodai.network/v0/siwe/nonce', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
"nonce": "0123456789abcdef0123456789abcdef",
"issuedAt": "2026-08-07T20:00:00.000Z"
},
"meta": {
"apiVersion": "v0",
"requestId": "req_123"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing API credential",
"requestId": "<string>",
"details": "<unknown>"
}
}
Use an OAuth bearer access token with the
agreements.write scope, or provide X-API-Key as the alternative credential. See Authentication for delegated OAuth access and Link a wallet and access agreements for the creator and participant access model.Authorizations
ApiKeyAuthOAuthBearerAuth
Canonical API-key credential. Send X-API-Key: cns_pk_..., or Authorization: Bearer cns_pk_... only as an API-key compatibility alias.
Body
application/json
EVM wallet address to verify.
Pattern:
^0x[0-9a-fA-F]{40}$Was this page helpful?
⌘I