Endpoints for creating and processing verifications
Create a new verification link that can be shared with users.
This endpoint allows you to create a verification link that users can use to verify their wallet ownership. You can specify custom fields to collect additional information from users during the verification process.
Rate limit: 10 requests per minute.
id: A unique identifier for the verification
internal_id: (optional in API, generated on dashboard): A unique identifier for the verification that is not shared with the user
service_name: The name of your service
chain: Currently only "solana" is supported
webhook: URL to call when verification is complete (required if not a folder verification)
expiration: ISO format date when the verification link expires
secret: A secret key included in webhook calls for verification
redirect_url: URL to redirect users after successful verification
one_time: If true, the link can only be used once
folder_id: ID of a folder to associate this verification with
custom_fields: Array of custom fields to collect during verification. Each custom field should be an object with the following properties:
id: Unique identifier for the field (string)
type: Field type, one of:
"text" - Simple text input
"email" - Email address with validation
"url" - URL with validation
"twitter" - Twitter handle (accepts @username or twitter.com/username formats)
"telegram" - Telegram username (accepts @username or t.me/username formats)
"discord" - Discord username
"number" - Numeric input with validation
"telephone" - Telephone number with validation
"date" - Date input with validation
"wallet" - Wallet address with validation
name: Display name for the field (string)
required: Whether the field is required (boolean)
placeholder: Optional placeholder text for the field (string)
Example custom field:
{
"id": "field_1234567890",
"type": "email",
"name": "Email Address",
"required": true,
"placeholder": "Enter your email address"
}
token_gate: Whether to enable token gating for this verification (boolean)
token_address: The token address to check for token gating (string, required if token_gate is true)
token_amount: The minimum token amount required for successful verification (number, required if token_gate is true)
is_nft: Whether the token is an NFT (boolean, default: false)
force_email_verification: Whether to require email verification using OTP (boolean, default: false)
force_telegram_verification: Whether to require telegram verification using OTP (boolean, default: false)
force_twitter_verification: Whether to require twitter verification (boolean, default: false)
force_telephone_verification: Whether to require sms verification using OTP (boolean, default: false)
false
[]
false
false
false
false
false
false
POST /new HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 418
{
"id": "text",
"internal_id": "text",
"service_name": "text",
"webhook": "text",
"chain": "text",
"expiration": "text",
"secret": "text",
"redirect_url": "text",
"one_time": false,
"folder_id": "text",
"custom_fields": [
{}
],
"token_gate": false,
"token_address": "text",
"token_amount": 1,
"is_nft": false,
"force_email_verification": false,
"force_telegram_verification": false,
"force_twitter_verification": false,
"force_telephone_verification": false
}
No content
API endpoint to verify a wallet signature.
This endpoint allows third-party services to verify wallet signatures without having to implement the verification logic themselves.
Rate limit: 60 requests per minute.
wallet_address: The wallet address that signed the message
message: The message that was signed
signature: The signature to verify
chain: The blockchain used (e.g., 'solana', 'ethereum')
nonce: The unique nonce that was included in the message
domain: The domain of the service requesting verification
POST /api/verify-signature HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 104
{
"wallet_address": "text",
"message": "text",
"signature": [
1
],
"chain": "text",
"nonce": "text",
"domain": "text"
}
{}
Generate a service-specific authentication message.
This endpoint generates a signed message that includes the service name to prevent phishing attacks.
Rate limit: 20 requests per minute.
service_name: The name of the service requesting authentication
wallet_address: The wallet address to authenticate
chain: The blockchain used (e.g., 'solana', 'ethereum')
domain: The domain of the service requesting authentication
POST /api/generate-auth-message HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"wallet_address": "text",
"chain": "text",
"service_name": "text",
"domain": "text"
}
{}