Saltar al contenido

Creación en lote

POST/v1/codes/bulk

Parámetros del cuerpo

itemsarrayobligatorioDe 1 a 500 códigos. Cada uno es { content, name?, slug?, folder?, fileName?, ref? }.
items[].contentobjectobligatorioEl contenido del código; su tipo debe ser igual a codeType.
items[].refstringopcionalTu propia referencia (SKU, id del CRM), repetida en las filas y en el archivo de resultados.
items[].folderstringopcionalEl nombre de una subcarpeta bajo folderId, que se crea si no existe.
codeTypestringopcionalUn tipo por solicitud. Por defecto url.
dynamicbooleanopcionalPor defecto true.
folderIdstring | nullopcionalAdónde van los códigos. Por defecto, la raíz del espacio de trabajo.
templateIdstring | nullopcionalEl diseño de todos los códigos. Por defecto, el diseño predeterminado de Dotwick.
exportobject | nullopcionalGenera también un ZIP cuando termina la tanda, p. ej. { formats: ["svg", "pdf"] }.

Solicitud de ejemplo

solicitudPOST /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"      ]    }  }'
respuesta202 Acceptedextracto: la tanda también incluye sus opciones, su resumen y filas de vista previa
{  "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"}

Seguir la tanda

La respuesta es 202 Accepted con la tanda. Consulta GET /v1/bulk-imports/{id} hasta que su estado sea succeeded, partially_succeeded o failed, y luego lee los códigos con GET /v1/bulk-imports/{id}/rows o descarga GET /v1/bulk-imports/{id}/results.csv. O suscríbete a bulk.completed y evita las consultas.

Un elemento mal formado hace fallar toda la solicitud con validation_failed en items.N. Los elementos que fallan las comprobaciones de la base de datos (un slug ya en uso) se omiten y se cuentan como no válidos; los demás se crean. Reintenta los fallidos con POST /v1/bulk-imports/{id}/retry.

Límites

Un tipo de código por solicitud: envía una solicitud por tipo. Se aplican el tope de filas en lote del plan y su límite de códigos dinámicos, y las tandas que superan las tareas simultáneas del plan esperan en una cola.