Méthode GET/products /{uid} /public
Lire les informations publiques d'un produit à partir de son identifiant : nom, marque, image, jeton, transaction, état et déclaration de vol. Aucune clef d'API.
Sur cette page
Vous lisez les informations publiques d'un produit à partir de son identifiant. En quittant cette page, vous saurez récupérer son nom, le nom et le logo de sa marque, une image, son numéro de jeton, sa transaction d'inscription, son état, et savoir s'il est déclaré volé.
Adresse complète :
GET https://api.sealtrust.io/v1/products/{uid}/publicLe même point d'entrée répond aussi sans le préfixe /v1, à
https://api.sealtrust.io/products/{uid}/public. Les deux adresses appellent
le même code. Utilisez la forme /v1 pour une nouvelle intégration.
#Autorisation
Aucune, point d'entrée public. Ce point d'entrée ne lit aucune clef d'API,
aucun jeton et aucun cookie. Le serveur ne regarde jamais l'en-tête
Authorization que vous envoyez ici, et il vous renvoie la même réponse avec
ou sans lui.
#Plafond d'appels
Aucun plafond propre à ce point d'entrée. Ce chemin relève du compteur général de l'API, compté par adresse IP appelante sur une fenêtre de 60 secondes. Ce compteur est partagé avec tous les autres chemins de l'API qui n'ont pas de plafond qui leur soit propre.
Prévoyez le code 429 dans votre client et respectez l'en-tête Retry-After
qu'il porte. La valeur de ce compteur peut changer sans préavis, donc
n'inscrivez aucun nombre en dur dans votre code.
La réponse porte normalement trois en-têtes qui décrivent ce compteur. Ne construisez rien qui exige leur présence : ils peuvent manquer.
| En-tête | Contenu |
|---|---|
X-RateLimit-Limit | le plafond appliqué sur la fenêtre |
X-RateLimit-Remaining | ce qu'il vous reste dans la fenêtre en cours |
X-RateLimit-Reset | l'horodatage de fin de la fenêtre, en secondes |
Ce compteur est indépendant du quota quotidien d'une clef d'API. Cet appel n'entame ni ce quota quotidien, ni le quota mensuel de produits de votre offre.
#Paramètres de chemin et de requête
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
uid | string | oui | L'identifiant public du produit : 0x suivi de 64 caractères hexadécimaux. C'est l'empreinte de la puce du produit. |
Vous pouvez envoyer cet identifiant avec ou sans le préfixe 0x, en majuscules
ou en minuscules. Le serveur retire les espaces de début et de fin avant de
chercher, met la valeur en minuscules et ajoute le préfixe 0x s'il manque.
Ces écritures désignent donc toutes le même produit.
Ce point d'entrée n'a aucun paramètre de requête.
#En-têtes
Aucun en-tête n'est obligatoire.
#Corps de la requête
Aucun. Cette requête n'a pas de corps.
#Requête d'exemple
Lecture du produit dont l'identifiant est
0x1111111111111111111111111111111111111111111111111111111111111111.
curl -i "https://api.sealtrust.io/v1/products/0x1111111111111111111111111111111111111111111111111111111111111111/public"const uid =
"0x1111111111111111111111111111111111111111111111111111111111111111";
const response = await fetch(
`https://api.sealtrust.io/v1/products/${encodeURIComponent(uid)}/public`,
{ method: "GET" },
);
if (!response.ok) {
throw new Error(`SealTrust a répondu ${response.status}`);
}
const produit = await response.json();
console.log(produit.product_name, produit.brand_name);
console.log(produit.is_verified, produit.declared_stolen);import requests
from urllib.parse import quote
uid = "0x1111111111111111111111111111111111111111111111111111111111111111"
response = requests.get(
f"https://api.sealtrust.io/v1/products/{quote(uid, safe='')}/public",
timeout=30,
)
print(response.status_code)
print(response.json())#Réponse d'exemple
Code HTTP 200OK
Code HTTP 200.
{
"product_name": "Sac Modèle Exemple",
"brand_name": "Exemple SAS",
"brand_logo_url": "https://exemple-sas.test/logo.png",
"image_url": "https://exemple-sas.test/media/sac-modele-exemple.jpg",
"category_name": "Maroquinerie",
"token_id": "11111111111111111111111111111111111111111111111111111111111111111111111111111",
"tx_hash": "0x2222222222222222222222222222222222222222222222222222222222222222",
"status": "written",
"declared_stolen": false,
"is_verified": true,
"verified_at": "2026-03-04T10:22:31.481000+00:00",
"contract_address": "0x3333333333333333333333333333333333333333",
"chain": null
}La réponse compte treize champs et rien d'autre.
| Champ | Type | Description |
|---|---|---|
product_name | string | null | Le nom du produit. null quand aucun nom n'a été enregistré. |
brand_name | string | null | Le nom de la marque propriétaire du produit. null quand le produit n'est rattaché à aucune marque. |
brand_logo_url | string | null | L'adresse du logo de la marque. null quand la marque n'en a pas déposé. |
image_url | string | null | L'adresse publique de l'image de couverture. Elle est cherchée dans cet ordre : une image attachée directement à l'exemplaire, puis l'image principale de son modèle, puis les médias du modèle. null seulement quand aucune de ces trois pistes n'aboutit. |
category_name | string | null | Le nom de la catégorie du produit. null quand aucune catégorie n'est rattachée. |
token_id | string | null | Le numéro du jeton sur la chaîne, écrit en base dix, dans une chaîne de caractères. Ce nombre est trop grand pour un entier ordinaire, donc lisez-le comme du texte et jamais comme un nombre de votre langage. null tant que l'inscription sur la chaîne n'est pas confirmée. |
tx_hash | string | null | L'empreinte de la transaction qui a inscrit le produit sur la chaîne. null tant qu'aucune transaction n'a été enregistrée. |
status | string | L'état technique du produit. Voir ci-dessous. |
declared_stolen | boolean | true quand une déclaration de vol est ouverte sur ce produit. |
is_verified | boolean | true quand status vaut mined ou written. false dans tous les autres cas. |
verified_at | string | null | Date et heure de création de l'enregistrement du produit, au format ISO 8601. Voir l'avertissement ci-dessous. |
contract_address | string | L'adresse du contrat qui porte le jeton. |
chain | null | Ce champ vaut toujours null aujourd'hui. Voir ci-dessous. |
#Lire l'état d'un produit
status porte une valeur technique. Cette page en documente deux, parce que
le reste de la réponse en dépend : mined et written sont les deux seules
valeurs pour lesquelles is_verified vaut true.
Lisez is_verified et declared_stolen plutôt que d'interpréter status
vous-même. declared_stolen existe justement pour cela : status porte la
valeur stolen au moment d'une déclaration fraîche, puis reprend la valeur
written dès que le dossier de vol est clos, alors que declared_stolen dit
dans un champ à lui si une déclaration est ouverte.
#Erreurs
Le corps d'une réponse d'erreur porte un champ detail.
| Code | Condition | Que faire |
|---|---|---|
| 404 | Aucun produit ne porte cet identifiant. detail vaut Product not found. | Le serveur cherche d'abord votre identifiant nettoyé, passé en minuscules et préfixé de 0x, puis votre chaîne brute telle que vous l'avez envoyée. Envoyez la forme canonique : 0x suivi de 64 caractères hexadécimaux en minuscules. Vérifiez aussi que vous envoyez bien une empreinte de puce et non un numéro de série. |
| 429 | Trop d'appels depuis votre adresse. La réponse porte l'en-tête Retry-After, en secondes. | Attendez le nombre de secondes indiqué par Retry-After, puis réessayez. Répartissez vos appels au lieu de les envoyer en rafale. |
| 500 | Une erreur inattendue s'est produite pendant le traitement de votre appel. detail vaut Internal Server Error. La réponse porte un en-tête X-Request-Id. | Réessayez. Si l'erreur persiste, contactez le support en indiquant cet identifiant de requête et l'heure de l'appel. |
Ce point d'entrée est public : il ne renvoie ni 401, ni 403.
#Voir aussi
GET /resolve/{identifier}, lire en un appel tout ce qu'une page produit affiche.GET /timeline/{identifier}, lire l'historique public d'un produit.GET /certificate/{identifier}, lire le certificat d'authenticité d'un article.- Notions de base, distinguer modèle, lot et article avant de commander la moindre étiquette.
Cette page vous a-t-elle été utile ?
Votre réponse ouvre un courriel pré-rempli dans votre messagerie, à destination de contact@sealtrust.io. Vous le relisez avant de l'envoyer.