Quick start
Go from a new account to your first owner-approved digital asset — with or without writing code.
Before you begin
You'll end up with a test asset, owned by one person, approved on their phone and recorded on the blockchain. Everything here uses the free test network, so nothing you do is permanent.
You'll need a Google or GitHub account to sign in, and a phone (yours is fine) to act as the owner.
Steps
Pick the path that suits you. Both end in the same place.
Everything happens in the dashboard — no API key needed.
Create an organization. Go to developer.taliware.com, sign in, and choose New organization. Name it after your product. It starts in managed mode, which is right for almost everyone. What does that mean?
Create and deploy a smart contract. Open Smart contracts and create one on the test network. This is the home your assets are issued from. Then open its ⋯ menu and choose Deploy Contract. Its status changes to Deployed.
Invite the owner. Open Users and invite the person who will own the asset — use your own email to try it. They'll get an email asking them to install Confida and register their phone. Their status changes from Invited to Active when they're done.
Issue the asset. Open Digital assets, choose your contract, add a name and image, and pick the owner. The owner approves in Confida with their fingerprint or face, and the status changes to Minted. Done — that's your first verified asset.
Every request goes to https://developer.taliware.com/api/v1 with your key in the x-api-key header.
Create an organization and an API key. Sign in at developer.taliware.com, choose New organization, then open API keys and select Generate. Copy the key straight away — it's shown only once — and keep it on your server:
export TALIWARE_API_KEY="paste-your-key-here"Create a contract, then deploy it. The first call returns the contract's id; use it in the second.
curl https://developer.taliware.com/api/v1/cl2c/contract \
-H "x-api-key: $TALIWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "My first collection", "symbol": "MFC", "env": "TESTNET" }'
curl -X PUT https://developer.taliware.com/api/v1/cl2c/contract/CONTRACT_ID \
-H "x-api-key: $TALIWARE_API_KEY"Invite the owner. Once they've set up Confida, they appear in GET /cl2c/user with "status": "ACTIVE". Their id is the userId you'll use next.
curl https://developer.taliware.com/api/v1/cl2c/user \
-H "x-api-key: $TALIWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "email": "owner@example.com" }'Issue the asset. It starts as CREATED; once every owner approves in Confida it becomes MINTED. Check it any time with GET /cl2c/nft/{id}.
curl https://developer.taliware.com/api/v1/cl2c/nft \
-H "x-api-key: $TALIWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My first asset",
"description": "Approved by its owner in Confida",
"smartContractId": "CONTRACT_ID",
"imagePath": "https://example.com/image.jpg",
"copyright": [{ "userId": "USER_ID", "percentage": 100 }]
}'const response = await fetch("https://developer.taliware.com/api/v1/cl2c/nft", {
method: "POST",
headers: {
"x-api-key": process.env.TALIWARE_API_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "My first asset",
description: "Approved by its owner in Confida",
smartContractId: "CONTRACT_ID",
imagePath: "https://example.com/image.jpg",
copyright: [{ userId: "USER_ID", percentage: 100 }],
}),
})
if (!response.ok) {
const { error, details } = await response.json()
throw new Error(`${response.status}: ${error} ${details?.join(", ") ?? ""}`)
}
const asset = await response.json()
console.log(asset.id, asset.status) // "…", "CREATED"import os
import requests
response = requests.post(
"https://developer.taliware.com/api/v1/cl2c/nft",
headers={"x-api-key": os.environ["TALIWARE_API_KEY"]},
json={
"name": "My first asset",
"description": "Approved by its owner in Confida",
"smartContractId": "CONTRACT_ID",
"imagePath": "https://example.com/image.jpg",
"copyright": [{"userId": "USER_ID", "percentage": 100}],
},
)
response.raise_for_status()
asset = response.json()
print(asset["id"], asset["status"]) # "…", "CREATED"To split ownership, list several owners in copyright. The percentages must add up to exactly 100, and every owner has to approve.
Keep your key on the server
Never put an API key in a website, mobile app, or public repository — anyone who finds it can act as your organization. If one leaks, delete it in API keys and create a new one.
What's next
- Learn the vocabulary in Key concepts.
- When you're ready to launch, add live CRDB credits and create your contract on the live network (
"env": "MAINNET"). - Developers: browse every request in the API reference.
