1
Get access and an API key
In the WalletConnect Pay merchant dashboard, open the Wallet Verification tab on the API keys page and request access. Once access is enabled, create an API key. The full key is shown only once, so store it in a secret manager. See Dashboard & API keys for details.Send the key as a bearer token on every request:A missing, unknown, or revoked key, or an account without access, returns
Environment
401 unauthorized.2
Create a verification
Create a verification
The request body can be up to 16 KiB. Larger bodies return
413 request_error.A successful request returns 201 with the verification object plus a url:201 Created
3
Send the user the link
Give the user the
url however fits your product: send it as a link, redirect the browser to it, or embed it in an iframe. The verification page walks the user through connecting and signing.4
Poll for the result
Poll the verification until its To find verifications later, list them with
state is terminal: verified, failed, expired, or cancelled.Read a verification
GET /verifications. Results are newest first and support limit (1–100, default 20), an opaque cursor, and the filters state, reference_id, from (inclusive), and to (exclusive). The response is { "data": [...], "next_cursor": "..." }, and next_cursor is null on the last page.5
Read the result
When
state is verified, the attestation field holds the address, the exact signed message, the signature, and how it was checked. See Results & attestations for every field and how to re-check the signature yourself.Idempotency
Send anIdempotency-Key header (1–255 characters) on create so you can retry safely. Keys are scoped to your account and kept for 24 hours.
- Retrying with the same key and the same body returns
200with the same verification and nourl. Keep theurlfrom the first201. - Reusing a key with a different body returns
409 idempotency_key_mismatch.
One live session per reference
Eachreference_id can have only one pending verification at a time. Creating another while one is pending returns 409 reference_in_progress, and the link is not re-issued:
409 Conflict
reference_id. Use the re_verification purpose so the signed message says why.
Cancel a verification
Cancel a pending verification to stop its link from working:Cancel a verification
cancelled. Cancelling a verification in any other state returns 409 not_cancellable.
Error handling
Errors use one envelope. Switch oncode. The message text may change.
Error envelope
Frequently Asked Questions
What happens if the link expires?
What happens if the link expires?
The verification moves to
expired once expires_at passes without a signature, and the link stops working. Create a new verification to get a new link.Can I get the link again?
Can I get the link again?
No. The
url is returned only in the first 201 response. If you lose it, cancel the verification and create a new one.