All requests require an API key via the
X-API-Key header.
See Authentication for details.Overview
Before a wallet can interact with any action endpoint, it must be registered as a Turtle member. Membership links a wallet address to a Turtle user, which is what enables deposit attribution and revenue tracking. Supported ecosystems are EVM (Ethereum, Arbitrum, Base, and every supported EVM chain), Solana, and TON. The Membership API follows a three-step flow that proves wallet ownership: check membership, request a sign-in message, then submit the signed message.Authentication Flow
1
Check Membership Status
Verify if a wallet address is already associated with a Turtle account
2
Request Signature Agreement
Generate a message that must be signed by the wallet to prove ownership
3
Create Membership
Submit the signed message to create a new user account and associate the wallet
Endpoints
Check Membership Status
GET /v2/membership/
The wallet address to check
The blockchain ecosystem. Supported values:
evm, solana, tonResponse Example
Response Fields
Whether the wallet address is already associated with a Turtle account.
Request Signature Agreement
POST /v2/membership/agreement
The wallet address requesting membership
The blockchain ecosystem. Supported values:
evm, solana, tonThe URL of the application (used in the signature message)
The chain ID for EVM wallets. Not required for Solana or TON
Response Example
Response Fields
A single-use nonce that must be included when submitting the signed message.
Create Membership
POST /v2/membership/
The wallet address creating the membership
The blockchain ecosystem. Supported values:
evm, solana, tonThe signature of the message returned by the agreement endpoint
The nonce returned by the agreement endpoint
The distributor ID to associate the membership with. When provided, the user will be tracked as having signed up through the distributor’s integration.
Response Example
Response Fields
Whether the wallet is now a registered Turtle member.
An error message when the request fails, or an empty string on success.
Complete Flow Example
Here’s a complete example of the membership creation flow:curl
Error Handling
Common Errors
Invalid Wallet Ecosystem
Invalid Wallet Ecosystem
Status Code: 400 Bad RequestResponse:Solution: Use one of the supported ecosystems:
evm, solana, or tonInvalid Wallet Address
Invalid Wallet Address
Status Code: 400 Bad RequestResponse:Solution: Ensure the wallet address is valid for the specified ecosystem
Wallet Already Exists
Wallet Already Exists
Status Code: 409 ConflictResponse:Solution: This wallet is already associated with an account. You do not need to create a new membership.
Invalid or Expired Nonce
Invalid or Expired Nonce
Status Code: 400 Bad RequestResponse:Solution: Request a new agreement and sign it promptly. Nonces expire after a short period
Security Considerations
- Nonces are single-use and expire after a short period
- Messages follow the EIP-4361 standard for EVM wallets
- All signatures are verified server-side before creating accounts

