Lotes asíncronos
Genera cientos de descripciones en una sola operación, a un precio menor que la generación síncrona.
El ciclo del lote
- Envía el lote con POST /v1/batches — se RESERVAN los créditos de todo el lote en ese momento.
- Haz poll de GET /v1/batches/:id — cuando el proveedor termina, ese GET ingiere el resultado: crea las generaciones, cobra los éxitos contra la reserva y reembolsa el resto.
- El lote queda en status "ended" — lee las descripciones o exporta el catálogo.
Enviar el lote
El header Idempotency-Key es OBLIGATORIO (sin él responde 428): un reintento de red con la misma key devuelve el mismo lote en vez de reservar créditos dos veces.
POST /v1/batches
Idempotency-Key: lote-otono-2026-v1
{ "product_ids": ["…", "…"] }
{ "id": "…", "status": "submitted", … }El poll ingiere
El estado no se actualiza solo: es tu GET el que ingiere el resultado cuando el proveedor termina. Haz poll cada 30–60 segundos hasta ver status "ended".
GET /v1/batches/{id}
{ "id": "…", "status": "ended", "succeeded": 48, "failed": 2, … }Sin poll no hay ingesta NI reembolso: si dejas de consultar un lote, sus créditos quedan reservados y las descripciones sin materializar. Siempre lleva el poll hasta "ended" (o cancela).
Cancelar
POST /v1/batches/:id/cancel cancela un lote en progreso y reembolsa la reserva completa. Si el lote ya terminó (o ya se está ingiriendo), responde 409 — haz el poll final para cerrar el ciclo.