Documentation
Public API
Read-only API without authentication. Solana mainnet only for now. Responses are factual: “domain X serves mint Y” and its proofs, with no safety ratings.
Base URL and access
https://snapca.org/v1
No authentication needed. Methods: GET and OPTIONS (CORS preflight, 204 response).
CORS: access-control-allow-origin: *. Solana only: solana or solana:mainnet.
GET /v1/verify/asset/{chain}/{address}
| Parameter | Description |
|---|---|
chain | solana or solana:mainnet. Other networks return 400. |
address | Base58 mint address (32–44 characters). |
Request:
curl "https://snapca.org/v1/verify/asset/solana:mainnet/YOUR_TOKEN_ADDRESS"Confirmed record:
{
"verdict": "verified",
"chain": "solana:mainnet",
"asset": "YOUR_TOKEN_ADDRESS",
"contract_meta": {
"name": "Your token",
"symbol": "TOKEN",
"decimals": 6,
"creator": "CreatorWallet...",
"deployed_at": "2026-10-20T08:43:04.669Z"
},
"project": {
"slug": "snapca",
"name": "Snapca",
"website": "https://snapca.org"
},
"domains": [
{
"domain": "snapca.org",
"status": "active",
"proof_method": "well_known",
"verified_at": "2026-10-20T08:43:04.669Z",
"proof_url": "https://snapca.org/.well-known/snapca.json",
"domain_proof_present": true
}
],
"channels": [
{
"type": "website",
"label": "snapca.org",
"url": "https://snapca.org",
"verified_at": "2026-10-20T08:43:04.669Z"
}
],
"snapshot": {
"content_hash": "sha256:...",
"archive_url": "/snapshot/...",
"captured_at": "2026-10-20T08:43:04.669Z",
"observed_contracts": ["YOUR_TOKEN_ADDRESS"]
},
"verification": {
"creator_signed": true,
"creator_role": "creator",
"domain_proof": true
},
"checked_at": "2026-10-26T12:00:00Z"
}Address not found in the registry:
{
"verdict": "unknown",
"chain": "solana:mainnet",
"asset": "YOUR_TOKEN_ADDRESS",
"domains": [],
"channels": [],
"checked_at": "2026-10-26T12:00:00Z"
}Response fields
| Field | Description |
|---|---|
verdict | verified — binding confirmed. unknown — no records. The external API may also return unverified or conflicted. |
chain, asset | Network and mint the check applies to. |
contract_meta | name, symbol, decimals, creator, deployed_at. For seed records creator may be empty. |
project | slug, name, website. |
domains[] | domain, status, proof_method (well_known or meta_tag), verified_at, proof_url, domain_proof_present. |
channels[] | Confirmed channels. Currently only website: type, label, url, verified_at. |
snapshot | content_hash (sha256), archive_url, captured_at, observed_contracts[]. |
verification | creator_signed — creator signature present; creator_role; domain_proof — the domain serves the proof. |
checked_at | API response time in ISO 8601. |
GET /v1/verify/domain/{domain}
Returns all confirmed mint addresses on a domain. The domain is normalized (lowercase, no www., punycode).
curl "https://snapca.org/v1/verify/domain/snapca.org"{
"verdict": "verified",
"domain": "snapca.org",
"contracts": [
{
"chain": "solana:mainnet",
"asset": "YOUR_TOKEN_ADDRESS",
"symbol": "TOKEN",
"status": "active"
}
],
"project": {
"slug": "snapca",
"name": "Snapca",
"website": "https://snapca.org"
},
"domains": [
{
"domain": "snapca.org",
"status": "active",
"proof_method": "well_known",
"verified_at": "2026-10-20T08:43:04.669Z",
"proof_url": "https://snapca.org/.well-known/snapca.json",
"domain_proof_present": true
}
],
"checked_at": "2026-10-26T12:00:00Z"
}If no records exist:
{
"verdict": "unknown",
"domain": "example.com",
"contracts": [],
"domains": [],
"checked_at": "2026-10-26T12:00:00Z"
}Response fields
| Field | Description |
|---|---|
verdict | verified or unknown. |
domain | Normalized domain. |
contracts[] | chain, asset, symbol, status. |
project | slug, name, website. |
domains[] | Same as in token verification. |
checked_at | API response time in ISO 8601. |
Rate limits and caching
- 120 requests per minute per IP.
- On excess —
429and aRetry-Afterheader (seconds). - Headers
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset. - Cache:
Cache-Control: public, max-age=60, s-maxage=60, stale-while-revalidate=120.
Errors
| Code | Body | Reason |
|---|---|---|
400 | { "error": "Unsupported chain" } | Network is not Solana. |
400 | { "error": "Invalid Solana mint address" } | Invalid mint format. |
400 | { "error": "invalid domain" } | Invalid domain. |
429 | { "error": "rate limited" } | Rate limit exceeded. |
500 | { "error": "internal error" } | Internal error. |