Quick Start
Create your first tokenized object from zero to finish in under 5 minutes with copy-paste curl commands.
Zero-to-First-Object in 7 Steps
This guide walks you through creating your first tokenized object with complete curl examples and expected responses. Save credentials as you go.
Step 1: Register a Wallet
Create your account with a wallet registration:
curl -X POST https://gateway-48587430648.europe-west6.run.app/wallets/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "secure-password-123",
"name": "Your Name"
}'
Response (201 Created):
{
"id": "wallet_abc123xyz",
"email": "user@example.com",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f42e0E",
"created_at": "2026-03-17T10:00:00Z"
}
Save your id, email, and address.
Step 2: Login (Get Bearer Token)
Authenticate to obtain a JWT token. First request an OTP:
curl -X POST https://gateway-48587430648.europe-west6.run.app/auth/otp \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
Then authenticate with the OTP:
curl -X POST https://gateway-48587430648.europe-west6.run.app/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"otp": "123456"
}'
Response (200 OK):
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ3YWxsZXRfYWJjMTIzeHl6In0...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600
}
Save the access_token. Use it as: Authorization: Bearer $TOKEN
Step 3: Create an Organization
Create a workspace to organize your resources:
curl -X POST https://gateway-48587430648.europe-west6.run.app/organizations \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Company",
"description": "Production tokenization workspace"
}'
Response (201 Created):
{
"id": "org_def456uvw",
"name": "My Company",
"description": "Production tokenization workspace",
"owner_id": "wallet_abc123xyz",
"created_at": "2026-03-17T10:00:00Z"
}
Save the id. You'll use it in the X-Org-Id header for all subsequent requests.
Step 4: Create an API Key
Generate an API key for programmatic access (recommended for production):
curl -X POST https://gateway-48587430648.europe-west6.run.app/api-keys \
-H "Authorization: Bearer $TOKEN" \
-H "X-Org-Id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{ "name": "Production Key" }'
Response (201 Created):
{
"id": "key_ghi789jkl",
"name": "Production Key",
"key": "sk_live_aBcDeF1G2h3I4j5K6l7M8n9O0p",
"created_at": "2026-03-17T10:00:00Z"
}
Save the key. This is your API key for the x-api-key header.
Step 5: Create a Template
Define the structure of your tokenized objects:
curl -X POST https://gateway-48587430648.europe-west6.run.app/templates \
-H "Authorization: Bearer $TOKEN" \
-H "X-Org-Id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "io.example.product",
"description": "A product token template",
"properties": {
"serial_number": "string",
"manufacture_date": "string",
"price": "number"
}
}'
Response (201 Created):
{
"id": "tpl_mno345pqr",
"name": "io.example.product",
"description": "A product token template",
"organization_id": "org_def456uvw",
"properties": {
"serial_number": "string",
"manufacture_date": "string",
"price": "number"
},
"created_at": "2026-03-17T10:00:00Z"
}
Save the template id.
Step 6: Create an Object (Mint)
Emit your first tokenized object instance:
curl -X POST https://gateway-48587430648.europe-west6.run.app/ebus/execute \
-H "Authorization: Bearer $TOKEN" \
-H "X-Org-Id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"action": {
"emit": {
"template_id": "tpl_mno345pqr",
"properties": {
"serial_number": "SN-12345",
"manufacture_date": "2026-01-15",
"price": 99.99
}
}
}
}'
Response (202 Accepted):
{
"action_id": "act_stu567vwx",
"object_id": "obj_yza678bcd",
"status": "processing",
"batch_id": "batch_efg789hij",
"created_at": "2026-03-17T10:00:00Z"
}
Save the object_id. The action is queued for processing.
Step 7: Verify the Object
Retrieve your created object to confirm it exists:
curl -X GET https://gateway-48587430648.europe-west6.run.app/objects/obj_yza678bcd \
-H "Authorization: Bearer $TOKEN" \
-H "X-Org-Id: $ORG_ID"
Response (200 OK):
{
"id": "obj_yza678bcd",
"template_id": "tpl_mno345pqr",
"template_name": "io.example.product",
"organization_id": "org_def456uvw",
"owner": "0x742d35Cc6634C0532925a3b844Bc9e7595f42e0E",
"properties": {
"serial_number": "SN-12345",
"manufacture_date": "2026-01-15",
"price": 99.99
},
"status": "active",
"created_at": "2026-03-17T10:00:05Z",
"batch_id": "batch_efg789hij",
"fingerprint": "0x1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p"
}
You're Done!
You've successfully created your first tokenized object. From here, you can:
- Transfer the object to another wallet address
- Update object properties
- Create more objects from the same or different templates
- Set up webhooks to listen for events
See Objects, Templates, and Code Samples for next steps.