Skip to main content
Distribute SOL from one wallet to many with Launchpad Trade API
POST/funding/distribute
Send SOL from a single source wallet to multiple destination wallets in one API call. Choose an amount mode to control how SOL is split and a transfer method to control how transactions are routed.

Quick Start

curl -X POST https://api.launchpad.trade/funding/distribute \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sourcePrivateKey": "YOUR_PRIVATE_KEY",
    "destinationPublicKeys": ["DEST_PUBLIC_KEY_1", "DEST_PUBLIC_KEY_2"],
    "amount": {
      "mode": "FIXED",
      "value": 0.5
    },
    "method": "DIRECT"
  }'

Parameters

ParameterTypeDescription
sourcePrivateKeystringPrivate key of the source wallet
destinationPublicKeysstring[]Public keys of the destination wallets. Required for all amount modes except CUSTOM
destinationsobject[]Destinations with individual amounts. Required when amount.mode is CUSTOM. Replaces destinationPublicKeys
amountobjectAmount configuration. See Amount Modes and properties below
methodstring(Optional) Transfer method — DIRECT (default) or ISOLATED. See Transfer Methods. Coming soon: EXCHANGE, PRIVACY

amount

PropertyTypeDescription
modestringFIXED, TOTAL, RANGE, or CUSTOM
valuenumberAmount in SOL. Required when mode is FIXED or TOTAL
minnumberMinimum amount in SOL. Required when mode is RANGE
maxnumberMaximum amount in SOL. Required when mode is RANGE

destinations[]

PropertyTypeDescription
publicKeystringDestination wallet public key
amountnumberSOL amount for this wallet

Amount Modes

Each destination receives the same amount.
{
  "amount": {
    "mode": "FIXED",
    "value": 0.5
  }
}
3 wallets × 0.5 SOL = 1.5 SOL total.
The API validates that the source wallet has sufficient SOL to cover the total distribution amount plus fees before starting.

Response

{
  "success": true,
  "data": {
    "sourcePublicKey": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
    "method": "DIRECT",
    "mode": "FIXED",
    "transfers": [
      {
        "destination": "3Jd8f...",
        "amount": 0.5,
        "status": "SUCCESS",
        "signature": "5UfDuX..."
      },
      {
        "destination": "9Pm2x...",
        "amount": 0.5,
        "status": "SUCCESS",
        "signature": "3KmPqY..."
      }
    ],
    "summary": {
      "totalWallets": 2,
      "successCount": 2,
      "failedCount": 0,
      "totalSolSent": 1.0,
      "totalFees": 0.00001
    },
    "latency": 525
  }
}

Partial Success

Some transfers may fail individually while others succeed. The response still returns "success": true with per-destination details. Failed transfers have status: "FAILED" and an error field with the reason. When failures occur, a warnings array is included at the root of the response:
{
  "success": true,
  "data": { ... },
  "warnings": ["3 transfer(s) failed"]
}
Each transfer is independent. There is no atomic guarantee — check the status field for each destination.

Errors

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Source wallet has 1.2 SOL, needs 1.5 SOL + fees"
  }
}
CodeMessageCause
INVALID_WALLETInvalid private keySource private key is invalid
INVALID_DESTINATIONInvalid public keyOne of the destination public keys is invalid
NO_DESTINATIONSNo destination walletsNo destinations provided
INSUFFICIENT_BALANCEInsufficient SOLSource wallet does not have enough SOL
INVALID_AMOUNTInvalid amount configurationAmount mode, value, or range is invalid
INVALID_RANGEmin must be ≤ maxRange min exceeds max
TOO_MANY_DESTINATIONSMaximum 50 destinations per requestMore than 50 destinations submitted
METHOD_UNAVAILABLEMethod not availableEXCHANGE or PRIVACY not yet available
RATE_LIMITRate limit exceededToo many requests — see Rate Limits
INTERNAL_ERRORInternal server errorRetry or contact support

Notes

  • Maximum 50 destinations per request
  • Transfers are batched in groups of 20 per transaction — all wallets in the same batch share the same signature. If a batch fails, all wallets in that batch are marked FAILED
  • The source wallet pays all Solana transaction fees in addition to the distributed amounts
  • Each transfer is independent — partial failures do not roll back successful transfers

What’s Next?

Withdraw

Consolidate SOL from many wallets to one

Transfer Methods

Compare DIRECT, ISOLATED, EXCHANGE, and PRIVACY PROTOCOL

Check Balance

Verify wallet balances before distributing

Create Wallets

Generate destination wallets in bulk