bruxel.aiDevelopers

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.

Lotes asíncronos — Bruxel