Zum Inhalt springen

Massenerstellung

POST/v1/codes/bulk

Body-Parameter

itemsarrayerforderlich1–500 Codes. Jeder ist { content, name?, slug?, folder?, fileName?, ref? }.
items[].contentobjecterforderlichDer Inhalt des Codes; sein Typ muss codeType entsprechen.
items[].refstringoptionalIhre eigene Referenz (SKU, CRM-ID), in den Zeilen und der Ergebnisdatei zurückgegeben.
items[].folderstringoptionalDer Name eines Unterordners unter folderId, bei Bedarf angelegt.
codeTypestringoptionalEin Typ pro Anfrage. Standard url.
dynamicbooleanoptionalStandard true.
folderIdstring | nulloptionalWohin die Codes kommen. Standard ist die Wurzel des Arbeitsbereichs.
templateIdstring | nulloptionalDas Design jedes Codes. Standard ist das Dotwick-Standarddesign.
exportobject | nulloptionalRendert außerdem ein ZIP, wenn der Lauf endet, z. B. { formats: ["svg", "pdf"] }.

Beispielanfrage

AnfragePOST /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"      ]    }  }'
Antwort202 AcceptedAuszug – der Lauf enthält außerdem seine Optionen, die Zusammenfassung und Vorschauzeilen
{  "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"}

Den Lauf verfolgen

Die Antwort ist 202 Accepted mit dem Lauf. Fragen Sie GET /v1/bulk-imports/{id} ab, bis sein Status succeeded, partially_succeeded oder failed ist, und lesen Sie dann die Codes mit GET /v1/bulk-imports/{id}/rows oder laden Sie GET /v1/bulk-imports/{id}/results.csv herunter. Oder abonnieren Sie bulk.completed und sparen Sie sich das Abfragen.

Ein fehlerhaftes Element lässt die ganze Anfrage mit validation_failed bei items.N scheitern. Elemente, die Datenbankprüfungen nicht bestehen (ein bereits vergebener Slug), werden übersprungen und als ungültig gezählt; die anderen werden erstellt. Wiederholen Sie die fehlgeschlagenen mit POST /v1/bulk-imports/{id}/retry.

Limits

Ein Code-Typ pro Anfrage: Senden Sie eine Anfrage pro Typ. Es gelten die Zeilenobergrenze für Massenläufe und das Limit dynamischer Codes des Tarifs, und Läufe über die gleichzeitigen Jobs des Tarifs hinaus warten in einer Warteschlange.