curl --request POST \
--url https://api.sandbox.brickken.com/prepare-transactions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"method": "newTokenization",
"chainId": "aa36a7",
"signerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"tokenizerEmail": "tokenizer@example.com",
"name": "Example Token",
"tokenSymbol": "EXMPL",
"tokenType": "EQUITY",
"supplyCap": "1000000",
"url": "https://example.com/token-docs",
"preMints": [
{
"amount": "1000"
}
],
"initialHolders": [
{
"walletAddress": "0x1111111111111111111111111111111111111111"
}
]
}
'import requests
url = "https://api.sandbox.brickken.com/prepare-transactions"
payload = {
"method": "newTokenization",
"chainId": "aa36a7",
"signerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"tokenizerEmail": "tokenizer@example.com",
"name": "Example Token",
"tokenSymbol": "EXMPL",
"tokenType": "EQUITY",
"supplyCap": "1000000",
"url": "https://example.com/token-docs",
"preMints": [{ "amount": "1000" }],
"initialHolders": [{ "walletAddress": "0x1111111111111111111111111111111111111111" }]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
method: 'newTokenization',
chainId: 'aa36a7',
signerAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
tokenizerEmail: 'tokenizer@example.com',
name: 'Example Token',
tokenSymbol: 'EXMPL',
tokenType: 'EQUITY',
supplyCap: '1000000',
url: 'https://example.com/token-docs',
preMints: [{amount: '1000'}],
initialHolders: [{walletAddress: '0x1111111111111111111111111111111111111111'}]
})
};
fetch('https://api.sandbox.brickken.com/prepare-transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.brickken.com/prepare-transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'method' => 'newTokenization',
'chainId' => 'aa36a7',
'signerAddress' => '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
'tokenizerEmail' => 'tokenizer@example.com',
'name' => 'Example Token',
'tokenSymbol' => 'EXMPL',
'tokenType' => 'EQUITY',
'supplyCap' => '1000000',
'url' => 'https://example.com/token-docs',
'preMints' => [
[
'amount' => '1000'
]
],
'initialHolders' => [
[
'walletAddress' => '0x1111111111111111111111111111111111111111'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.brickken.com/prepare-transactions"
payload := strings.NewReader("{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.brickken.com/prepare-transactions")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.brickken.com/prepare-transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"transactions": [
{
"from": "0x1234567890abcdef1234567890abcdef12345678",
"to": "0xabcdef1234567890abcdef1234567890abcdef12",
"value": "0x00",
"nonce": 3792,
"chainId": 11155111,
"data": "0xd362e8a70000000000000000000000000000000000000000000000000000000000000040...",
"type": 2,
"maxPriorityFeePerGas": "1150000",
"maxFeePerGas": "1156037",
"gasLimit": "0xccef"
}
],
"txId": "0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad",
"info": {
"tokenizerEmail": "tokenizer@example.com",
"tokenSymbol": "EXMPL",
"investorEmail": "investor@example.com"
}
}newTokenization
Prepares the unsigned transactions that deploy a new tokenized asset.
curl --request POST \
--url https://api.sandbox.brickken.com/prepare-transactions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"method": "newTokenization",
"chainId": "aa36a7",
"signerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"tokenizerEmail": "tokenizer@example.com",
"name": "Example Token",
"tokenSymbol": "EXMPL",
"tokenType": "EQUITY",
"supplyCap": "1000000",
"url": "https://example.com/token-docs",
"preMints": [
{
"amount": "1000"
}
],
"initialHolders": [
{
"walletAddress": "0x1111111111111111111111111111111111111111"
}
]
}
'import requests
url = "https://api.sandbox.brickken.com/prepare-transactions"
payload = {
"method": "newTokenization",
"chainId": "aa36a7",
"signerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"tokenizerEmail": "tokenizer@example.com",
"name": "Example Token",
"tokenSymbol": "EXMPL",
"tokenType": "EQUITY",
"supplyCap": "1000000",
"url": "https://example.com/token-docs",
"preMints": [{ "amount": "1000" }],
"initialHolders": [{ "walletAddress": "0x1111111111111111111111111111111111111111" }]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
method: 'newTokenization',
chainId: 'aa36a7',
signerAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
tokenizerEmail: 'tokenizer@example.com',
name: 'Example Token',
tokenSymbol: 'EXMPL',
tokenType: 'EQUITY',
supplyCap: '1000000',
url: 'https://example.com/token-docs',
preMints: [{amount: '1000'}],
initialHolders: [{walletAddress: '0x1111111111111111111111111111111111111111'}]
})
};
fetch('https://api.sandbox.brickken.com/prepare-transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.brickken.com/prepare-transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'method' => 'newTokenization',
'chainId' => 'aa36a7',
'signerAddress' => '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
'tokenizerEmail' => 'tokenizer@example.com',
'name' => 'Example Token',
'tokenSymbol' => 'EXMPL',
'tokenType' => 'EQUITY',
'supplyCap' => '1000000',
'url' => 'https://example.com/token-docs',
'preMints' => [
[
'amount' => '1000'
]
],
'initialHolders' => [
[
'walletAddress' => '0x1111111111111111111111111111111111111111'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.brickken.com/prepare-transactions"
payload := strings.NewReader("{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.brickken.com/prepare-transactions")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.brickken.com/prepare-transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"method\": \"newTokenization\",\n \"chainId\": \"aa36a7\",\n \"signerAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n \"tokenizerEmail\": \"tokenizer@example.com\",\n \"name\": \"Example Token\",\n \"tokenSymbol\": \"EXMPL\",\n \"tokenType\": \"EQUITY\",\n \"supplyCap\": \"1000000\",\n \"url\": \"https://example.com/token-docs\",\n \"preMints\": [\n {\n \"amount\": \"1000\"\n }\n ],\n \"initialHolders\": [\n {\n \"walletAddress\": \"0x1111111111111111111111111111111111111111\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"transactions": [
{
"from": "0x1234567890abcdef1234567890abcdef12345678",
"to": "0xabcdef1234567890abcdef1234567890abcdef12",
"value": "0x00",
"nonce": 3792,
"chainId": 11155111,
"data": "0xd362e8a70000000000000000000000000000000000000000000000000000000000000040...",
"type": 2,
"maxPriorityFeePerGas": "1150000",
"maxFeePerGas": "1156037",
"gasLimit": "0xccef"
}
],
"txId": "0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad",
"info": {
"tokenizerEmail": "tokenizer@example.com",
"tokenSymbol": "EXMPL",
"investorEmail": "investor@example.com"
}
}POST /prepare-transactions with method=newTokenization.
Prerequisites
- The required asset-name field is
name.tokenNameis not accepted. - After sending, wait until the tokenization succeeds before using its symbol in
newSto,mintToken, orwhitelist. - Use
GET /get-token-infoto inspect the exact symbols available to the API key.
Next step
Preparing does not touch the chain. The response gives youtxId and an array of unsigned transactions — you still have to sign and submit them.
Sign every returned transaction
signerAddress, or investorAddress for newInvest and claimTokens. It must be whitelisted by Brickken, and it needs native gas on the target chain.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.Poll until it confirms
GET /get-transaction-status with the txId. A pending status means it is broadcast but not yet mined — do not resubmit.Authorizations
Body
Required. Operation to prepare. Must be newTokenization for this endpoint.
newTokenization "newTokenization"
Required. Blockchain network identifier. Hex format is recommended, for example Sepolia aa36a7.
"aa36a7"
Required. Wallet address that signs the deployment transactions. It must be whitelisted by Brickken and becomes the tokenizer of the new token.
"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
Required. Email of the tokenizer account. The account must exist and hold an active tokenization license.
"tokenizer@example.com"
Required. Name of the tokenized asset. Use name; tokenName is not supported.
"Example Token"
Required. Symbol of the new token. Must be 2 to 5 uppercase letters or numbers, and must not be already in use.
"EXMPL"
Optional. Token type. Defaults to EQUITY when omitted.
EQUITY, DEBT, BILL_FACTORING, ICO, STABLECOIN, REVENUE_SHARE, RWA_TOKEN, PROFIT_SHARING "EQUITY"
Optional. Maximum token supply. Defaults to 0 when omitted.
"1000000"
Optional. Token documentation URL. Defaults to an empty string when omitted.
"https://example.com/token-docs"
Optional. Tokenizer wallet address used as the token issuer. If omitted, signerAddress is used.
^0x[a-fA-F0-9]{40}$"0x4444444444444444444444444444444444444444"
Optional. Payment token contract address for the new asset. If omitted, the chain default payment token is used.
^0x[a-fA-F0-9]{40}$"0x5555555555555555555555555555555555555555"
Optional. Pre-mint amounts. If provided, initialHolders must also be provided with the same length.
Show child attributes
Show child attributes
[{ "amount": "1000" }]
Optional. Initial holders paired by index with preMints. Provide walletAddress directly, or email when a DFNS wallet can be resolved.
Show child attributes
Show child attributes
[
{
"walletAddress": "0x1111111111111111111111111111111111111111"
}
]
Response
Successful response
Array of unsigned transaction objects ready for signing
Show child attributes
Show child attributes
Unique identifier for this transaction batch (required for /send-transactions). This is NOT a blockchain transaction hash.
"0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad"
Metadata about the operation
Show child attributes
Show child attributes