Quickstart
You create your first item in the console, you retrieve its QR code, and you check that it answers publicly, first in a browser and then from the command line.
On this page
At the end of this walkthrough, you have an item created, its QR code downloaded, and a public address that answers whoever scans it. Everything happens in the console of your brand. The first four steps require no code. The fifth repeats the same check from the command line.
Every step ends with a check. If a check fails, do not move on to the next one: the section What can stop you gives the exact server response for the most common refusals.
#1. Open the console
Go to https://admin.sealtrust.io and sign in with the email address and password of your
account.
Check. The left sidebar shows "Getting Started", "Catalog" and "Settings".
#2. Create your first item
In the sidebar, open "Catalog", then "Create product". Stay on the "Single product" tab.
Three fields are required:
- Product name. The text the customer will see.
- Brand. It is prefilled and locked if your account manages only one. It shows the name
followed by the identifier of the brand in parentheses, for example
Exemple SAS (#12). - Category. To be chosen from the dropdown list.
The "Product model (optional)" field can stay empty.
Below those fields, the "Authentication:" row offers three positions: NFC, QR, NFC + QR. Choose QR, then click "Create".
The "Preview what will be written on-chain" button shows, before creation, what will be written. This is the last moment when something can be corrected.
Check. A green banner shows "Product(s) created successfully!", the name you entered, a "QR" badge and the words "Minting in progress on blockchain...". The latter means that the minting has been started in the background.
#3. Open the item record
Click "View products". The minting happens in the background. The item appears in the list as soon as its blockchain transaction has been sent, so refresh the page if the list does not show it yet. Then click its row to open its record.
Check. The record shows a "Blockchain" block with the contract, the "Tx Hash" and "Mint date", which carries the date of the minting. The "Token ID" row carries no value yet: it fills in when the transaction is confirmed on chain, which takes a moment longer. Further down, a "QR Code" block shows the image of the code, a "Download QR (PNG)" button and the row that gives the verification URL.
#4. Open the verification URL
Copy the value shown on that row. It ends with
/p/ followed by the serial number of the item, twelve uppercase characters:
.../p/DEM000000000The serial number is drawn at random at creation. Its alphabet leaves out the letters I, L, O and U, so that no character can be confused with a digit when a person reads a label back.
This is exactly what the printed QR code encodes. Copy the whole value as it is displayed, host included. Do not retype it from memory.
Open the address in a browser, in a private window, to see what a customer sees.
Check. The address leads to the public page of the item, which shows its name and its brand. No account is asked for.
#5. Verify through the public API
The same check, without a browser. This endpoint requires no authentication. Replace
DEM000000000 with the serial number you noted at step 4.
curl "https://api.sealtrust.io/v1/resolve/DEM000000000"const identifiant = "DEM000000000";
const reponse = await fetch(
`https://api.sealtrust.io/v1/resolve/${encodeURIComponent(identifiant)}`,
);
const donnees = await reponse.json();
console.log(reponse.status);
console.log(donnees.product_name, "-", donnees.brand_name);import requests
reponse = requests.get(
"https://api.sealtrust.io/v1/resolve/DEM000000000",
timeout=30,
)
print(reponse.status_code)
print(reponse.json()["product_name"], "-", reponse.json()["brand_name"])Check. The response is a 200. It carries product_name and brand_name, which repeat
what you entered at step 2, as well as uid_hash, contract_address and tx_hash. The
token_id field stays null until the transaction is confirmed, like the "Token ID" row at
step 3. The certificate and passport fields are null, and media and events are empty
lists, as long as nothing fills them. An unknown identifier answers 404 with the message
Product not found.
This endpoint accepts four forms of identifier: the printed serial number, the token
identifier, the item hash (0x followed by 64 hexadecimal characters) and a certificate
number. It is capped at 60 calls per minute and per calling address.
Your first item is verifiable. The walkthrough is complete.
#What can stop you
| Response | What happened | What to do |
|---|---|---|
| The "Create" button stays grayed out | The product name, the brand or the category is not filled in. All three are required. | Fill in the three fields. The button then becomes active. |
403, detail {"code": "AUTH_METHOD_NOT_ALLOWED", "allowed": "qr"} | You chose NFC or NFC + QR, and your plan allows QR only. The detail gives the method requested and the ones your plan allows. The four plans of the catalog allow NFC: today this refusal touches only the accounts that stayed on an older plan limited to QR. | Choose QR for this walkthrough, or contact us to open NFC on your plan. |
403, detail {"code": "QUOTA_EXCEEDED", "resource": "products", "period": "monthly", ...} | The creation would exceed the number of items your plan allows for the month. The detail gives the current count, the quantity requested and the maximum. | Wait for the next period or have the cap raised. |
403 Brand must have an active plan | No plan is attached to this brand. | Contact us to attach a plan. |
404 Product not found at step 5 | The identifier sent matches no item. Most often, the serial number was retyped instead of being copied. | Copy back the value shown on the item record. |
429, body {"detail": "Rate limit exceeded: 60 requests per 60s"} | You exceeded 60 calls per minute on the public endpoint of step 5. | Wait the number of seconds given by the Retry-After header. |
The responses that go through also carry the X-RateLimit-Limit,
X-RateLimit-Remaining and X-RateLimit-Reset headers: you can slow down before reaching
the cap.
#And through the partner API
The partner API has been creating items since August 21, 2026.
POST /v1/partner/mint/batch takes a batch of rows, in JSON or in CSV, up to
500 rows per call. It answers 200 with a batch identifier, and the processing creates the
items in the background. You follow the progress with
GET /v1/partner/mint/batch/status/{job_id}. Both calls require the
mint:batch scope on your API key.
Two points to know before writing your integration.
- A batch row carries five fields, and only five:
product_name,brand_id,category_id,metadata_uri, andexternal_ref, which is optional. Any other field makes the request fail with a 400. - This path produces QR items only. The server sets the identification method and the technical identifier of the item itself, and a batch row cannot carry them. For NFC items, go through the console.
The endpoint is still described field by field, with its authorizations, its caps and the
list of its errors, on its reference page,
POST
#What comes next
- Core concepts: what product, model, batch, item, certificate, passport and seal cover.
- Create products: creation one at a time and in batches from the console, CSV file included.
- GET
/resolve : the complete reference for the endpoint used at step 5./{identifier} - POST
/partner : the complete reference for the endpoint described just above./mint /batch - Partner API, overview: creating an API key, authentication and call caps.
- Physical identification: what the QR code and the NFC chip each bring.
Was this page helpful?
Your answer opens a pre-filled email in your mail app, addressed to contact@sealtrust.io. You read it over before sending it.