TaxSplit API Reference
Complete API documentation for integrating TaxSplit into your applications. Build custom token launchpads and manage Solana Token-2022 tokens with on-chain metadata programmatically.
Base URL
https://taxsplit.devAuthentication
Most endpoints require JWT authentication. To get a token:
- 1Request a challenge message from
POST /auth/challenge - 2Sign the message with your Solana wallet
- 3Verify the signature at
POST /auth/verifyto receive a JWT token - 4Include the token in the
Authorizationheader:Bearer <token>
Rate Limits
- •General API: 100 requests per 15 minutes
- •Token creation: 5 requests per hour
- •Upload endpoints: 20 requests per hour
Authentication
TaxSplit uses wallet-based authentication with JWT tokens. Obtain a token via the challenge-verify flow, then include it in the Authorization header for authenticated endpoints.
/auth/challengeRequest a challenge message to sign with your Solana wallet.
Request Body
{
"walletAddress": "DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK"
}Response (200 OK)
{
"challenge": "Sign this message to authenticate: 1234567890",
"expiresAt": "2024-01-01T12:05:00Z"
}/auth/verifyVerify the signed challenge message and receive a JWT token for authenticated requests.
Request Body
{
"walletAddress": "DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK",
"signature": "base58_encoded_signature",
"message": "Sign this message to authenticate: 1234567890"
}Response (200 OK)
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "uuid",
"walletAddress": "DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK"
}
}Token expires in: 7 days
Tokens
Create Solana Token-2022 tokens with on-chain metadata and built-in tax distribution mechanisms. All token creation endpoints require JWT authentication.
/tokens/generate-distribution-walletGenerate a distribution wallet for fee collection. Called when user opens token creation page.
Response (200 OK)
{
"walletId": "uuid",
"address": "DistributionWalletAddress..."
}Note: The walletId must be sent in create-unsigned request. The wallet address is derived deterministically on backend.
/tokens/upload-imageUpload token image to IPFS. Image is optimized to 512x512 JPG.
Request (multipart/form-data)
image: [File] (PNG/JPG, max 1MB)Response (200 OK)
{
"success": true,
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"imageCid": "QmAbc..."
}/tokens/create-unsignedCreate an unsigned Solana Token-2022 transaction with on-chain metadata. Transaction expires in 5 minutes and must be signed by the user wallet.
Request Body
{
"name": "My Token",
"symbol": "MTK",
"description": "Token description",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
// Optional social links
"twitter": "https://twitter.com/mytoken",
"telegram": "https://t.me/mytoken",
"website": "https://mytoken.com",
// Token economics
"transferFeePercent": 5,
"burnPercent": 10,
"developerFeePercent": 30,
"developerWallet": "DevWalletAddress...",
// Distribution settings
"distributionInterval": "15m",
"percentageToSellPerDistribution": 25,
"rewardToken": "SOL",
"minimumHoldingRequirement": "1000000",
// Token settings
"decimals": 6,
"supply": "1000000000000000",
"transferFeeAdjustable": false,
"immutableMetadata": true
}Response (200 OK)
{
"transaction": "base64_encoded_transaction",
"transactionId": "uuid",
"expiresAt": "2024-01-01T12:05:00Z",
"mintKeypair": {
"publicKey": "MintPublicKey...",
"secretKey": [/* encrypted */]
}
}⏱️ Transaction expires in 5 minutes
/tokens/submitSubmit a signed transaction to Solana and save token metadata.
Request Body
{
"transactionId": "uuid",
"signedTransaction": "base64_encoded_signed_transaction"
}Response (200 OK)
{
"success": true,
"signature": "transaction_signature",
"mintAddress": "TokenMintAddress...",
"token": {
"id": "uuid",
"mintAddress": "TokenMintAddress...",
"name": "My Token",
"symbol": "MTK",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"createdAt": "2024-01-01T12:00:00Z"
}
}Token Management
Retrieve and manage your created tokens.
/tokensGet paginated list of all visible tokens.
Query Parameters
page(number, default: 1) - Page numberlimit(number, default: 20, max: 100) - Items per pageResponse (200 OK)
{
"tokens": [
{
"id": "uuid",
"mintAddress": "TokenMintAddress...",
"name": "My Token",
"symbol": "MTK",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"description": "Token description",
"transferFeePercent": 5,
"poolAddress": "PoolAddress...",
"createdAt": "2024-01-01T12:00:00Z"
}
],
"pagination": {
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}
}/tokens/meGet list of tokens created by authenticated user.
Response (200 OK)
{
"tokens": [
{
"id": "uuid",
"mintAddress": "TokenMintAddress...",
"name": "My Token",
"symbol": "MTK",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"distributionEnabled": true,
"createdAt": "2024-01-01T12:00:00Z"
}
]
}/tokens/:mintAddressGet detailed information about a specific token.
Path Parameters
mintAddress(string) - Solana mint addressResponse (200 OK)
{
"token": {
"id": "uuid",
"mintAddress": "TokenMintAddress...",
"name": "My Token",
"symbol": "MTK",
"decimals": 6,
"supply": "1000000000000000",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"description": "Token description",
"twitter": "https://twitter.com/mytoken",
"telegram": "https://t.me/mytoken",
"website": "https://mytoken.com",
"transferFeePercent": 5,
"burnPercent": 10,
"developerFeePercent": 30,
"developerWallet": "DevWalletAddress...",
"distributionWallet": "DistributionWalletAddress...",
"distributionInterval": "15m",
"distributionEnabled": true,
"poolAddress": "PoolAddress...",
"poolCreatedAt": "2024-01-01T12:30:00Z",
"createdAt": "2024-01-01T12:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
}Distribution Settings
Manage automatic tax distribution settings for your tokens.
/distribution/:tokenId/settingsGet distribution settings for a token.
Response (200 OK)
{
"rewardToken": "SOL",
"distributionModel": "proportional",
"minimumHoldingRequirement": "1000000",
"percentageToSellPerDistribution": 25,
"distributionEnabled": true,
"distributionInterval": "15m",
"burnPercent": 10,
"developerFeePercent": 30,
"developerWallet": "DevWalletAddress...",
"telegramGroupId": "-1001234567890"
}/distribution/:tokenId/settingsUpdate distribution settings for a token.
Request Body (all fields optional)
{
"rewardToken": "SOL",
"minimumHoldingRequirement": "1000000",
"percentageToSellPerDistribution": 50,
"distributionEnabled": true,
"telegramGroupId": "-1001234567890",
"distributionInterval": "30m",
"burnPercent": 15,
"developerFeePercent": 40,
"developerWallet": "NewDevWalletAddress..."
}Validation Rules
distributionInterval: 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24hburnPercent: 0-100developerFeePercent: 0-100developerWallet: Valid Solana address (32-44 characters)Burns
Track token burn statistics and history.
/burns/:mintAddressGet burn statistics for a specific token including total amount burned and burn history.
Path Parameters
mintAddress(string) - Token mint addressResponse (200 OK)
{
"totalBurned": "50000000000",
"burns": [
{
"id": "uuid",
"amount": "10000000000",
"signature": "transaction_signature",
"timestamp": "2024-01-01T12:00:00Z"
}
]
}Featured Tokens
Promote your token with premium placement on the TaxSplit homepage.
/featuredGet list of active featured tokens (promoted tokens).
Response (200 OK)
{
"featured": [
{
"id": "uuid",
"tokenMint": "TokenMintAddress...",
"token": {
"name": "Featured Token",
"symbol": "FTK",
"imageUri": "https://ipfs.io/ipfs/QmAbc...",
"description": "Token description"
},
"startsAt": "2024-01-01T12:00:00Z",
"endsAt": "2024-01-15T12:00:00Z",
"daysRemaining": 5
}
]
}/featured/create-unsignedCreate unsigned transaction for featured promotion purchase.
Request Body
{
"tokenMint": "TokenMintAddress...",
"durationDays": 7
}Response (200 OK)
{
"transaction": "base64_encoded_transaction",
"promotionId": "uuid",
"amount": "2.1",
"expiresAt": "2024-01-01T12:05:00Z"
}Cost: 0.3 SOL per day
DEX Integration
Create liquidity pools on Raydium CPMM (Constant Product Market Maker).
/dex/raydium/cpmm/create-unsignedCreate unsigned transaction for Raydium CPMM pool.
Request Body
{
"tokenMint": "TokenMintAddress...",
"tokenAmount": "1000000000000",
"solAmount": "1000000000"
}Response (200 OK)
{
"transaction": "base64_encoded_transaction",
"poolId": "pool_identifier",
"poolKeys": {
"id": "PoolAddress...",
"baseMint": "TokenMintAddress...",
"quoteMint": "So11111111111111111111111111111111111111112",
"lpMint": "LpMintAddress...",
"baseVault": "BaseVaultAddress...",
"quoteVault": "QuoteVaultAddress..."
}
}LaunchLabs
Raydium LaunchLab bonding curve integration for token launches with automated liquidity provision.
/launchpad/create-unsignedCreate unsigned transaction for Raydium LaunchLab bonding curve deployment.
Request Body
{
"tokenMint": "TokenMintAddress...",
"tokenAmount": "1000000000000",
"targetMarketCap": "100000"
}Response (200 OK)
{
"transaction": "base64_encoded_transaction",
"bondingCurveId": "bonding_curve_identifier",
"expectedLaunchTime": "2024-01-15T12:00:00Z"
}/launchpad/:mintAddress/statusGet bonding curve status and progress for a token launch.
Path Parameters
mintAddress(string) - Token mint addressResponse (200 OK)
{
"bondingCurveId": "bonding_curve_identifier",
"status": "active",
"currentMarketCap": "45000",
"targetMarketCap": "100000",
"progress": 45,
"tokensSold": "450000000000",
"totalTokens": "1000000000000",
"solCollected": "45.5",
"createdAt": "2024-01-01T12:00:00Z"
}Error Handling
All errors follow a consistent format for easy handling.
Error Response Format
{
"error": "Error message",
"details": [/* optional validation errors */]
}HTTP Status Codes
Example Errors
Validation Error:
{
"error": "Validation error",
"details": [
{
"path": ["name"],
"message": "String must contain at least 1 character(s)"
}
]
}Authentication Error:
{
"error": "Unauthorized",
"message": "Invalid or expired token"
}Not Found Error:
{
"error": "Token not found"
}