Wallet status
Check if a wallet belongs to a verified Signa ID, from your page or your server.
The wallet status tells you if a wallet address belongs to a person with a verified Signa ID. The answer holds no personal data. It holds only the facts that the on-chain attestation already makes public.
Use it to let a verified wallet continue, for example on a smart-contract exchange. You need no Blaaiz account, no credentials, and no backend.
Read the status
Send a GET request with the wallet address and the chain id:
curl -X GET "https://api-prod.blaaiz.com/api/v1/signa-id/public/wallets/0x3efb62350e7176f070ed9e09b033b646f9a0564c/status?chain_id=8453"{
"verified": true,
"level": 1,
"country": "NGA",
"expires_at": "2027-09-12T14:03:51.000Z",
"attestations": [
{
"chain_id": 8453,
"uid": "0xbe0fddf230a69817f77d6938be311e83c864b052f1b2f4b7b420345babbd6dc7",
"explorer_url": null
}
]
}The response is the status object, with no message and no data wrapper.
| Field | Description |
|---|---|
verified | true when the wallet belongs to a verified Signa ID. |
level | 1: the person verified an identity document. 2: the person also verified a proof of address. null when verified is false. |
country | The country of the verification, as an ISO 3166-1 alpha-3 code. null when verified is false. |
expires_at | When the verification expires. null when verified is false. |
attestations | The on-chain attestations for the wallet. Each item has chain_id, uid and explorer_url. explorer_url is null for a chain with no explorer. |
| Parameter | Description |
|---|---|
address | The wallet address: 0x and 40 hexadecimal characters. |
chain_id | Optional. The chain id, from 1 to 4294967295. |
A wallet that Blaaiz does not know, a wallet with no verification, and an expired verification all get the same answer, with status 200:
{
"verified": false,
"level": null,
"country": null,
"expires_at": null,
"attestations": []
}An address or a chain_id in the wrong format returns 422.
Use the web SDK
The Signa web SDK reads the status for you, and can ask the person to verify.
- Call
signa.status()when the page loads. This call opens no window. - Call
signa.verify()from the click handler of a button.
import { createSigna } from '@blaaiz/signa-web-sdk';
const signa = createSigna({ environment: 'production' });
await signa.status({ wallet, chainId: 8453 }); // on page load
button.onclick = async () => {
const status = await signa.verify({ wallet, chainId: 8453 });
if (status.verified) {
// Let the person continue.
}
};verify() returns at once for a verified wallet. For a wallet that is not verified, it opens a Signa ID popup. In the popup, the person signs in, verifies if necessary, and links the wallet. The SDK then reads the status again and returns it.
- If the person closes the popup,
verify()returns the current status. That status is not verified. - If the browser blocks the popup,
verify()rejects withcode: 'blocked'. - If a popup for a different wallet is open,
verify()rejects withcode: 'in_progress'. - An address that is not
0xand 40 hexadecimal characters rejects at once.
Some browsers allow only a short time between the click and the popup. Call status() before the click. When status() ran in the last 60 seconds and the wallet is not verified, verify() opens the popup at once.
Do not send the Cross-Origin-Opener-Policy: same-origin header on the page. Use same-origin-allow-popups, or send no header.
Caching and limits
- The endpoint needs no authentication and accepts calls from any origin.
- A
200response carriesCache-Control: public, max-age=60. A change can take up to one minute to show. The SDK also keeps eachstatus()result for 60 seconds. - The endpoint allows 60 requests each minute and 1,000 requests each hour for each IP address. Above the limit, the call returns
429.
Request data with Signa ID
Previous Page
POSTCreate a release request
Create a request for a person to release Signa ID data to your business. Send `request_token` to your page, and call `signa.requestData({ requestToken })` from a click. The request expires 30 minutes after the create. Blaaiz sends no webhook when a request expires. A release request does not count against your open session cap. This endpoint allows 30 requests each minute for each business. Every response carries `Cache-Control: no-store`. Signa ID release must be enabled for your business. The call must use an OAuth access token with the `signa-id:release` scope. API keys cannot call it. No scope bundle contains this scope, `full-access` included, so select it by name when you create or rotate your credentials.