Navigate...
Create Draft
sdk.distributions.createDraft(req)
Create a distribution in DRAFT status. This is the first step of the two-step flow — create a draft, optionally review and edit recipients, then call prepare() to generate calldata. You can provide recipients directly, reference an existing list by listId, or add recipients later with replaceRecipients().
Sending native currency (ETH, POL, BNB, …)
Pass the zero address 0x0000000000000000000000000000000000000000 as tokenAddress to target the native currency. No token approval is needed for the later prepare() step. The server normalizes tokenSymbol to the chain’s nativeSymbol.
You can create a draft without recipients and add them later using replaceRecipients(). This is useful when the recipient list needs to be built incrementally.
Add recipients later
API key required to run methods
API Key *
Base URL
request.name
string
required
Distribution name
Name
request.notes
string
optional
Optional notes or description
Notes (optional)
request.chainId
number
required
Target blockchain chain ID
Chain ID
Select chain
request.tokenAddress
string
required
ERC-20 token contract address. For native currency (ETH, POL, BNB, etc.) pass the zero address 0x0000000000000000000000000000000000000000.
Token Address
For native currency (ETH, POL, BNB, MATIC…) use
request.tokenSymbol
string
required
Token symbol (e.g. "USDC"). For native currency the server normalizes this to the chain’s nativeSymbol.
Token Symbol
request.listId
string
optional
Use recipients from an existing list — mutually exclusive with recipients
List ID
Select a list or paste ID
request.recipients
RecipientDto[]
optional
Inline recipients [{ address, amount, label?, tags? }] — mutually exclusive with listId
Recipients JSON (optional, alternative to List ID)
request.account
string
optional
Sender wallet address
Account (optional)
request.idempotencyKey
string
optional
Unique key to prevent duplicates — returns existing distribution if key already used
Idempotency Key (optional)
request.isDeflationary
boolean
optional
Set to true if the token has transfer fees (deflationary tokens)
Is Deflationary (optional)
request.strategy
string
optional
Distribution execution strategy
Strategy (optional)
Returns
Distribution
Created distribution in DRAFT status — editable until you call prepare()
id
string
Distribution ID — use this for subsequent calls
projectId
string
Project that owns the distribution
name
string
Distribution name
status
string
DRAFT — editable, not yet prepared for execution
chainId
number
Target blockchain chain ID
tokenAddress
string
Token contract address
tokenSymbol
string
Token symbol
totalRecipients
number | null
Number of recipients (if provided)
totalAmount
string | null
Total token amount (if recipients provided)
listId
string | null
Linked recipient list ID (if used)
account
string | null
Sender wallet address
createdAt
string
ISO 8601 creation timestamp
updatedAt
string
ISO 8601 last update timestamp
Errors
Validation error
The request is not authorized
You do not have permission to access this resource
See Also
updateDraft()
Update draft metadata (name, chain, token) before preparing
replaceRecipients()
Replace or set recipients on the draft
prepare()
Generate calldata when ready — transitions to PREPARED
getApproveCalldataForDistribution()
Get exact token approval amount for this distribution
Generated Code