Distribution Status
Check whether a uniqueHash has been distributed on-chain. This is the
reconciliation endpoint: use it whenever you are unsure if a distribution
happened — after a TRANSACTION_STATUS_UNKNOWN error, a network timeout, or a
response that never arrived — before retrying or adjusting balances.
Endpoint
GET /api/airdrop/status?uniqueHash=<hash>Authentication
Required header:
Authorization: Bearer YOUR_BEARER_TOKEN
The bearer token also selects the network (testnet or mainnet) to query. No request signature is required — this endpoint is read-only.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
uniqueHash | string | Yes | The SHA256 hash (64 hex characters) used in the original airdrop request |
Response
Success (200 OK)
{
"success": true,
"uniqueHash": "a1b2c3d4...",
"processed": true,
"network": "mainnet",
"timestamp": "2025-11-18T12:00:00Z"
}| Field | Type | Description |
|---|---|---|
processed | boolean | true if this hash has been recorded on-chain — the distribution happened and the funds moved |
network | string | Network queried (derived from your bearer token) |
The answer comes from the smart contract’s is_processed view — the on-chain
source of truth. Every completed distribution permanently records its hash.
Reconciliation flow: processed: true → the distribution landed; mark it
complete. processed: false → wait for any in-flight transaction to expire
(~60 seconds after your original request), re-check, and if still false it
is safe to resend the same airdrop request with the same
uniqueHash. Never mint a new uniqueHash for a retry of the same payment.
Errors
400 INVALID_HASH- Missing or malformeduniqueHash401- Missing or invalid bearer token500 NETWORK_ERROR- The on-chain view could not be queried; retry
Code Example
async function isDistributed(apiKey: string, uniqueHash: string): Promise<boolean> {
const response = await fetch(
`https://YOUR_API_DOMAIN/api/airdrop/status?uniqueHash=${uniqueHash}`,
{ headers: { Authorization: `Bearer ${apiKey}` } }
);
const data = await response.json();
if (!data.success) throw new Error(data.error.message);
return data.processed;
}Related
- POST /api/airdrop - Process an airdrop
- Transaction Verification - Verify a known transaction hash