Aller au contenu

Création en masse

POST/v1/codes/bulk

Paramètres du corps

itemsarrayobligatoire1–500 codes. Chacun est { content, name?, slug?, folder?, fileName?, ref? }.
items[].contentobjectobligatoireLe contenu du code ; son type doit être égal à codeType.
items[].refstringfacultatifVotre propre référence (SKU, identifiant CRM), reprise dans les lignes et le fichier de résultats.
items[].folderstringfacultatifUn nom de sous-dossier sous folderId, créé s’il n’existe pas.
codeTypestringfacultatifUn type par requête. url par défaut.
dynamicbooleanfacultatiftrue par défaut.
folderIdstring | nullfacultatifOù vont les codes. Par défaut, la racine de l’espace de travail.
templateIdstring | nullfacultatifLe design de chaque code. Par défaut, le design par défaut de Dotwick.
exportobject | nullfacultatifGénère aussi un ZIP à la fin de la série, par exemple { formats: ["svg", "pdf"] }.

Exemple de requête

requêtePOST /v1/codes/bulk
curl -X POST https://api.dotwick.com/v1/codes/bulk \  -H "Authorization: Bearer sk_live_…" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: fleet-2026-09-batch-3" \  -d '{    "codeType": "url",    "folderId": "fld_8k2m4q7x",    "items": [      {        "name": "Van 15",        "content": {          "type": "url",          "url": "https://example.com/fleet/van-015"        },        "ref": "VAN-015"      },      {        "name": "Van 16",        "content": {          "type": "url",          "url": "https://example.com/fleet/van-016"        },        "ref": "VAN-016"      }    ],    "export": {      "formats": [        "svg",        "pdf"      ]    }  }'
réponse202 Acceptedextrait : la série contient aussi ses options, son résumé et des lignes d’aperçu
{  "id": "blk_9f24ab7c3e1d5f80",  "status": "queued",  "source": "api",  "codeType": "url",  "dynamic": true,  "counts": {    "total": 2,    "valid": 2,    "invalid": 0,    "created": 0,    "failed": 0,    "canceled": 0  },  "progress": 0,  "folderId": "fld_8k2m4q7x",  "exportId": null,  "createdAt": "2026-09-12T14:03:51.000Z"}

Suivre la série

La réponse est 202 Accepted avec la série. Interrogez GET /v1/bulk-imports/{id} jusqu’à ce que son statut soit succeeded, partially_succeeded ou failed, puis lisez les codes avec GET /v1/bulk-imports/{id}/rows ou téléchargez GET /v1/bulk-imports/{id}/results.csv. Ou abonnez-vous à bulk.completed et évitez l’interrogation.

Un élément mal formé fait échouer toute la requête avec validation_failed à items.N. Les éléments qui échouent aux contrôles de base de données (un slug déjà pris) sont ignorés et comptés comme non valides ; les autres sont créés. Réessayez ceux qui ont échoué avec POST /v1/bulk-imports/{id}/retry.

Limites

Un type de code par requête : envoyez une requête par type. Le plafond de lignes en masse de l’offre et sa limite de codes dynamiques s’appliquent, et les séries au-delà des tâches simultanées de l’offre attendent dans une file.