🔐
Walver.io Docs
  • Walver.io Documentation
  • Introduction to Walver.io
  • Getting Started with Walver.io
  • Token Gating
  • Webhook Integration
  • The Verification Process
  • Creator Dashboard
  • Best Practices
  • Security Features
  • Walver Python SDK Documentation
  • Walver JavaScript SDK Documentation
  • Signature Verification Python package
  • JavaScript Widget Documentation
  • Frequently Asked Questions (FAQ)
  • Api reference
    • Getting started
    • API authentication
    • Verification
    • Folders
    • API Keys
    • Models
Powered by GitBook
On this page
  1. Api reference

Verification

PreviousAPI authenticationNextFolders

Endpoints for creating and processing verifications

  • POSTCreate Verification
  • POSTVerify Signature Api
  • POSTGenerate Auth Message

Create Verification

post

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)

Body
idstringRequired
internal_idany ofOptional
stringOptional
or
nullOptional
service_namestringRequired
webhookany ofOptional
stringOptional
or
nullOptional
chainstringRequired
expirationany ofOptional
stringOptional
or
nullOptional
secretany ofOptional
stringOptional
or
nullOptional
redirect_urlany ofOptional
stringOptional
or
nullOptional
one_timeany ofOptionalDefault: false
booleanOptional
or
nullOptional
folder_idany ofOptional
stringOptional
or
nullOptional
custom_fieldsany ofOptionalDefault: []
object[]Optional
or
nullOptional
token_gateany ofOptionalDefault: false
booleanOptional
or
nullOptional
token_addressany ofOptional
stringOptional
or
nullOptional
token_amountany ofOptional
integerOptional
or
numberOptional
or
nullOptional
is_nftany ofOptionalDefault: false
booleanOptional
or
nullOptional
force_email_verificationany ofOptionalDefault: false
booleanOptional
or
nullOptional
force_telegram_verificationany ofOptionalDefault: false
booleanOptional
or
nullOptional
force_twitter_verificationany ofOptionalDefault: false
booleanOptional
or
nullOptional
force_telephone_verificationany ofOptionalDefault: false
booleanOptional
or
nullOptional
Responses
200
Successful Response
application/json
Responseany
422
Validation Error
application/json
post
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

Verify Signature Api

post

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

Body
wallet_addressstringRequired
messagestringRequired
signatureany ofRequired
integer[]Optional
or
stringOptional
chainstringRequired
noncestringRequired
domainstringRequired
Responses
200
Successful Response
application/json
Responseobject · ResponseVerifySignatureApiApiVerifySignaturePost
422
Validation Error
application/json
post
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 Auth Message

post

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

Body
wallet_addressstringRequired
chainstringRequired
service_namestringRequired
domainstringRequired
Responses
200
Successful Response
application/json
Responseobject · ResponseGenerateAuthMessageApiGenerateAuthMessagePost
422
Validation Error
application/json
post
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"
}
{}