- Docs
- Getting Started
- Quickstart
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://api-testnet.dual.network/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 for subsequent API calls:
curl -X POST https://api-testnet.dual.network/wallets/login \\-H "Content-Type: application/json" \\-d '{"email": "user@example.com","password": "secure-password-123"}'
Response (200 OK):
{"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ3YWxsZXRfYWJjMTIzeHl6In0...","expires_in": 3600,"user_id": "wallet_abc123xyz"}
Save the token. Use it as: Authorization: Bearer $TOKEN
Step 3: Create an Organization
Create a workspace to organize your resources:
curl -X POST https://api-testnet.dual.network/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://api-testnet.dual.network/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://api-testnet.dual.network/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://api-testnet.dual.network/ebus/actions \\-H "Authorization: Bearer $TOKEN" \\-H "X-Org-Id: $ORG_ID" \\-H "Content-Type: application/json" \\-d '{"action_type": "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://api-testnet.dual.network/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.