Méthode GET/partner /mint /batch /status /{job_id}
Lit l'avancement d'un lot de produits envoyé à la frappe, à partir de l'identifiant rendu au moment de l'envoi.
Sur cette page
Vous suivez l'avancement d'un lot envoyé à la frappe, et vous savez quand arrêter votre boucle. Interrogez ce point d'entrée autant de fois que nécessaire : il ne crée ni ne modifie aucun produit, et il ne consomme aucun quota quotidien. Lisez l'avertissement ci-dessous avant de conclure, à partir de cette lecture, que vos articles existent.
Le serveur expose deux adresses qui appellent le même code :
/v1/partner/mint/batch/status/{job_id} et
/partner/mint/batch/status/{job_id}. Utilisez la forme /v1 pour toute
nouvelle intégration.
#Autorisation
Droit requis sur la clef : mint:batch.
C'est le même droit que l'envoi d'un lot. Une clef qui n'a pas ce droit reçoit 403, et le message nomme le droit manquant.
Authentifiez-vous par l'en-tête Authorization, au format Bearer.
Authorization: Bearer votre_clefSeule une clef de la marque qui a envoyé le lot peut le lire.
#Plafond d'appels
Le plafond de débit de l'API partenaire s'applique à ce point d'entrée, sur une fenêtre fixe de 60 secondes.
Deux compteurs tournent en même temps, un pour votre clef, un pour la somme des clefs de votre marque. Le plafond appliqué vient d'une valeur posée sur votre compte, ou à défaut de votre offre. Quand aucune des deux n'est définie, il est de 120 appels par fenêtre.
Ne devinez pas cette valeur. Toute réponse qui a franchi le contrôle de débit porte quatre en-têtes qui la donnent. Une réponse 401, un 403 d'authentification ou un 503 arrivent avant ou pendant ce contrôle, et ne les portent pas.
| En-tête | Ce qu'il contient |
|---|---|
X-RateLimit-Limit | le plafond applicable, en appels par fenêtre |
X-RateLimit-Remaining | ce qu'il vous reste dans la fenêtre en cours |
X-RateLimit-Reset | l'horodatage, en secondes depuis 1970, où la fenêtre repart |
X-RateLimit-Scope | key ou brand, selon celui des deux compteurs qui est le plus contraignant |
Ce point d'entrée ne consomme aucune unité de votre quota quotidien, et aucune unité du quota mensuel de produits de votre offre.
#Paramètres de chemin et de requête
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
job_id | chaîne | oui | L'identifiant de lot rendu par l'envoi du lot, dans le champ job_id de sa réponse. Placez-le dans le chemin de l'adresse. |
Ce point d'entrée n'accepte aucun paramètre de requête.
#Corps de la requête
Aucun. C'est une lecture, elle n'a pas de corps.
#Requête d'exemple
curl -sS https://api.sealtrust.io/v1/partner/mint/batch/status/0000a1b2c3d4e5f6 \
-H "Authorization: Bearer st_test_0000000000000000000000000000000000000000000000"import { SealTrustClient } from "@sealtrust-io/sdk";
const sealtrust = new SealTrustClient({
apiKey: "st_test_0000000000000000000000000000000000000000000000",
});
const etat = await sealtrust.products.getBatchStatus("0000a1b2c3d4e5f6");
console.log(etat.status);
console.log(etat.is_finished);import requests
response = requests.get(
"https://api.sealtrust.io/v1/partner/mint/batch/status/0000a1b2c3d4e5f6",
headers={
"Authorization": "Bearer st_test_0000000000000000000000000000000000000000000000"
},
timeout=30,
)
print(response.status_code)
print(response.json()["status"])#Réponse d'exemple
Code HTTP 200OK
Code HTTP 200, pour un lot de 500 lignes en cours de traitement, dont douze lignes ont déjà abouti.
{
"job_id": "0000a1b2c3d4e5f6",
"status": "started",
"is_finished": false,
"batch_status": "pending",
"items_count": 500,
"success_count": 12,
"error_count": 0,
"enqueued_at": "2026-08-20T09:14:32.118431+00:00",
"started_at": "2026-08-20T09:14:33.402118+00:00",
"ended_at": null,
"result": null,
"exc_info": null
}Les douze clefs sont toujours présentes dans cette forme de réponse. Seules
leurs valeurs changent. Les compteurs sont là dès votre premier appel : chaque
ligne du lot est comptée au moment où elle aboutit. Quand le traitement du lot
arrive à son terme, is_finished passe à vrai et ended_at porte une date. Cela vous dit que le traitement est allé
au bout. Pour savoir combien d'articles ont été créés, lisez success_count.
| Champ | Type | Description |
|---|---|---|
job_id | chaîne | L'identifiant que vous avez demandé, repris tel quel. |
status | chaîne | L'avancement du traitement du lot. Les valeurs sont détaillées ci-dessous. |
is_finished | booléen | Vrai quand le traitement du lot est terminé. Un lot qui répond status: "failed" peut porter l'une ou l'autre valeur. Pilotez votre boucle sur status. |
batch_status | chaîne ou nul | L'état du lot lui-même. Les valeurs sont détaillées ci-dessous. |
items_count | entier ou nul | Le nombre de lignes du lot. |
success_count | entier ou nul | Le nombre d'articles réellement créés à l'instant de votre lecture, compté ligne par ligne. |
error_count | entier ou nul | Le nombre de lignes réellement en échec à l'instant de votre lecture, compté ligne par ligne. |
enqueued_at | chaîne ou nul | Date et heure à laquelle le lot a été accepté et mis en attente de traitement. |
started_at | chaîne ou nul | Date et heure du début du traitement. Nul tant qu'il n'a pas commencé. |
ended_at | chaîne ou nul | Date et heure de fin du traitement. Nul tant qu'il n'est pas terminé. |
Les trois dates portent le décalage +00:00 : elles suivent le temps
universel.
La réponse porte deux champs de plus, result et exc_info. Ils sont internes
à notre traitement. Ignorez-les : ne les affichez pas, ne les stockez pas, n'y
branchez aucune logique. Aucun des deux ne vous dit combien d'articles ont été
créés.
#Les valeurs de status
| Valeur | Ce qu'elle veut dire |
|---|---|
queued | le lot attend son tour |
started | le lot est en cours de traitement |
finished | le lot est allé au bout, quel que soit le nombre d'articles créés |
failed | le traitement s'est arrêté sur un échec. Des lignes peuvent avoir abouti quand même : lisez success_count |
unknown | aucun lot accessible avec cette clef ne correspond à cet identifiant |
D'autres valeurs que ces cinq peuvent apparaître. Les types du SDK TypeScript
en déclarent quatre de plus :
deferred, scheduled, stopped et canceled. Écrivez votre boucle de façon
à traiter une valeur inattendue sans planter.
Bouclez tant que le statut vaut queued ou started. Arrêtez-vous sur
finished, sur failed et sur unknown. Arrêter votre boucle ne vous dit rien
du nombre d'articles créés : ce nombre se lit dans success_count.
#Les valeurs de batch_status
Un lot envoyé par cette API part à pending. Seul son traitement le fait
changer, vers retrying, vers pending_multisig, ou vers un état terminal,
success, partial ou failed. La valeur running n'apparaît pas sur cette
voie : n'écrivez pas de branche pour elle. partial signifie qu'une partie
seulement des articles a été créée. Comparez alors success_count et
items_count.
#La réponse quand aucun lot accessible ne correspond
Quand aucun lot accessible avec votre clef ne correspond à l'identifiant, vous recevez 200, avec deux champs et rien d'autre.
{
"job_id": "0000a1b2c3d4e5f6",
"status": "unknown"
}#La seconde forme de réponse, sur un lot ancien
Nous ne gardons le détail du déroulement que pendant un temps. Passé ce délai, la réponse prend une seconde forme, construite à partir de l'état du lot lui-même. Elle porte les sept premiers champs et rien d'autre : ni les trois dates, ni les deux champs internes. Les compteurs, eux, sont dans les deux formes. Traitez les deux formes.
{
"job_id": "0000a1b2c3d4e5f6",
"status": "failed",
"is_finished": true,
"batch_status": "failed",
"items_count": 500,
"success_count": 0,
"error_count": 500
}Elle peut porter n'importe quel statut, y compris queued et started. Ne
déduisez pas de sa forme que le lot est terminé.
Dans cette forme de réponse, is_finished vaut vrai pour success, partial
et failed, et status vient de l'état du lot. Un lot dont chaque ligne a été
rejetée y répond status: "failed" et is_finished: true, et la première
forme répond la même chose pour la même exécution. Ne comparez pas deux
lectures faites à des moments différents pour en déduire que le lot a changé
d'état. Le nombre d'articles créés se lit dans success_count.
#Erreurs
| Code | Condition | Que faire |
|---|---|---|
| 401 | l'en-tête Authorization est absent | ajoutez-le, la réponse porte aussi WWW-Authenticate: Bearer |
| 401 | l'en-tête ne commence pas par Bearer suivi d'un espace | corrigez la forme de l'en-tête, la réponse porte aussi WWW-Authenticate: Bearer |
| 401 | la valeur envoyée après Bearer fait moins de 40 caractères | envoyez le secret complet, cette réponse ne porte pas WWW-Authenticate |
| 401 | la valeur envoyée n'est pas une clef connue | vérifiez que vous copiez le secret entier, sans espace ni retour à la ligne |
| 403 | la clef a été révoquée, le message donne son état | créez une nouvelle clef depuis la console de votre marque |
| 403 | la clef a atteint sa date d'expiration | créez une nouvelle clef, l'ancienne ne redeviendra jamais valide |
| 403 | la clef n'a pas le droit mint:batch, le message le nomme | créez une clef portant ce droit, il commande aussi l'envoi d'un lot |
| 403 | vous n'avez pas accès à ce lot | vérifiez que vous interrogez le bon identifiant avec la clef de la bonne marque |
| 429 | votre clef a dépassé son propre plafond de débit | attendez le nombre de secondes indiqué par Retry-After, puis réessayez. X-RateLimit-Scope vaut alors key |
| 429 | l'ensemble des clefs de votre marque a dépassé le plafond de la marque | attendez le nombre de secondes indiqué par Retry-After, puis réessayez. X-RateLimit-Scope vaut alors brand. Ajouter des clefs ne relève pas ce plafond |
| 500 | une erreur interne inattendue | réessayez. Si le refus se répète, écrivez-nous en donnant la valeur de l'en-tête X-Request-Id de la réponse |
| 503 | le service qui tient les compteurs de débit est momentanément indisponible | l'appel n'a rien lu. Réessayez plus tard |
Aucun code d'erreur de cette liste ne dépend du contenu du lot. Le contrôle des
refus liés au lot lui-même, taille, colonnes, catégories et quota de votre
offre, a lieu au moment de l'envoi, sur POST /v1/partner/mint/batch.
#Voir aussi
POST /partner/mint/batch, envoyer un lot de lignes de produits, jusqu'à 500 par appel.- Créer des produits, à l'unité et en lot, créer un produit, créer une série entière, importer un fichier.
- Erreurs de l'API, reconnaître un code d'erreur et décider s'il faut corriger ou rejouer.
- Intégrer le SDK TypeScript, installer le SDK, créer le client et reconnaître les deux familles d'erreurs.
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.