Skip to main content
POST
Create Stealth Pool

Authorizations

Authorization
string
header
required

Token obtained from the /v1/spl/login flow.

Body

application/json
payer
string
required
Example:

"3rXKwQ1kpjBd5tdcco32qsvqUh1BnZjcYnS5kYrP7AYE"

authority
string
required

Authority allowed to manage the pool.

Example:

"3rXKwQ1kpjBd5tdcco32qsvqUh1BnZjcYnS5kYrP7AYE"

handle
string
required

Human-readable handle, up to 255 UTF-8 bytes. Stored as its exact bytes — NOT trimmed, lowercased, or normalized, so John.Doe@… is a different handle than john.doe@….

Required string length: 1 - 255
Example:

"john.doe@magicblock.id"

destinations
string[]
required

1-10 destination owner pubkeys (owners, not token accounts).

Required array length: 1 - 10 elements
Example:
splitAcrossKeys
boolean

Optional. When true, split payments may resolve independently across the destination keys.

validator
string

Optional. Validator identity to receive the delegated pool.

Example:

"MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57"

cluster

Optional. Cluster selector or custom http(s) RPC URL.

Available options:
mainnet,
devnet,
mainnet-private,
devnet-private
Example:

"mainnet"

Response

Unsigned setup and ER update transactions

kind
enum<string>
required
Available options:
stealthPool
version
enum<string>
required
Available options:
legacy,
v0
transactionBase64
string
required

The ER update transaction.

sendTo
enum<string>
required
Available options:
base,
ephemeral
recentBlockhash
string
required
lastValidBlockHeight
integer
required
instructionCount
integer
required
Required range: x >= 0
requiredSigners
string[]
required
stealthPool
string
required

Derived stealth-pool PDA.

setupTransaction
object
required

The base-chain setup transaction. It uses the same transaction response contract as the top-level transaction; sendRpcEndpoint is omitted when sendTo is base.

sendRpcEndpoint
string<uri>