Skip to main content
POST
Prepare a new STO
Prepares unsigned transactions for creating a new Security Token Offering (STO). Use POST /prepare-transactions with method=newSto.

Timing

startDate is validated against the timestamp of the block that mines the STO transaction. Set it at least 10 minutes after the time you expect to send the transaction, rather than from the prepare time. This buffer covers signing, broadcast, and block inclusion; an elapsed startDate makes the transaction revert on-chain. Wait for the tokenization to succeed before preparing the STO, and use the exact token symbol available to the API key on the selected chain.

Next step

Preparing does not touch the chain. The response gives you txId and an array of unsigned transactions — you still have to sign and submit them.
1

Sign every returned transaction

Sign each entry locally with the wallet that sends the transaction — signerAddress, or investorAddress for newInvest and claimTokens. It must be whitelisted by Brickken, and it needs native gas on the target chain.
2

Submit the signed payloads

POST them to /send-transactions as { txId, signedTransactions } and Brickken broadcasts for you.If you would rather broadcast yourself, prepare with executionMode: "client-broadcast" and confirm afterwards with { txId, txHash } instead.
3

Poll until it confirms

Call GET /get-transaction-status with the txId. A pending status means it is broadcast but not yet mined — do not resubmit.
Full walkthrough: Tokenize an asset and run an STO.

Authorizations

x-api-key
string
header
required

Body

application/json
method
enum<string>
default:newSto
required

Required. Operation to prepare. Must be newSto for this endpoint.

Available options:
newSto
Example:

"newSto"

chainId
string
required

Required. Blockchain network identifier. Hex format is recommended, for example Sepolia aa36a7.

Example:

"aa36a7"

signerAddress
string
required

Required. Tokenizer wallet that signs the offering creation.

Example:

"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"

tokenizerEmail
string<email>
required

Required. Email of the tokenizer that owns the token. The tokenizer must not have another ongoing offering.

Example:

"tokenizer@example.com"

tokenSymbol
string
required

Required. Symbol of the token offered. The token must already be deployed on chainId.

Example:

"EXMPL"

offeringName
string
required

Required. Name of the STO offering.

Example:

"Series A"

tokenAmount
string
required

Required. Number of tokens offered in the STO.

Example:

"1000"

acceptedCoin
string
required

Required. Symbol of the payment token accepted for investments. It must be supported on chainId.

Example:

"USDT"

startDate
string<date-time>
required

Required. STO start date. It must be in the future when the transaction is mined and earlier than endDate; set it at least 10 minutes after the planned send time.

Example:

"2026-09-01T00:00:00.000Z"

endDate
string<date-time>
required

Required. STO end date.

Example:

"2026-12-31T23:59:59.000Z"

minRaiseUSD
string
required

Required. Minimum raise amount in USD.

Example:

"10000"

maxRaiseUSD
string
required

Required. Maximum raise amount in USD.

Example:

"100000"

minInvestment
string
required

Required. Minimum investment amount.

Example:

"100"

maxInvestment
string
required

Required. Maximum investment amount.

Example:

"10000"

Response

200 - application/json

Successful response

transactions
object[]
required

Array of unsigned transaction objects ready for signing

txId
string
required

Unique identifier for this transaction batch (required for /send-transactions). This is NOT a blockchain transaction hash.

Example:

"0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad"

info
object

Metadata about the operation