Saltar al contenido principal
Tres endpoints crean muchas tareas en una sola solicitud. Cada uno crea tareas normales: el sondeo, los webhooks, los créditos y los límites del plan son los mismos que para una tarea individual.

Compara los tres endpoints

Cuál usar

  • Hasta 500 tareas y tú gestionas los reintentos: POST /v1/async/task/batch. Recibes todos los ids de tarea en la respuesta.
  • Más tareas que la concurrencia de tu plan, o un trabajo diario de miles: POST /v1/batches. El servidor guarda los elementos y los va enviando según lo permitan el límite de tu plan y la cola de cada motor, así que no tienes que reintentar los 429 ni los 503 tú mismo.
  • Un mismo prompt preguntado desde muchos puntos alrededor de un lugar: POST /v1/async/task/grid.

POST /v1/async/task/batch

Envía un array de hasta 500 solicitudes de tarea (referencia). Se pueden mezclar motores.
Una solicitud bien formada devuelve 200. results[i].index coincide con la posición en tu array, y cada resultado tiene task o error:
La solicitud entera se rechaza, sin crear ninguna tarea, en estos casos: Un idempotencyKey repetido devuelve la tarea existente como éxito. Consulta Idempotencia.

POST /v1/batches

Envía hasta 10.000 elementos (referencia). Cada elemento acepta los campos de tarea taskType, payload, priority e idempotencyKey, más un customId opcional (hasta 128 caracteres) que se devuelve en los resultados. Indica webhook.url en el lote, no en los elementos.
La respuesta es 202 con el lote. Los primeros elementos ya están enviados:

Reglas del sobre

Validación de todo o nada

Cada elemento pasa las mismas comprobaciones que una tarea individual antes de guardar nada: campos, alcance de la clave, motores privados, endpoints dedicados, región y payload.location. Si algún elemento falla, la respuesta es 400 VALIDATION_ERROR, no se guarda nada y details enumera hasta 50 elementos con fallos:

Cómo se ejecutan los elementos

El lote libera elementos como tareas cuando el límite de tu plan y la cola del motor tienen hueco. Las cuentas se turnan, así que un lote grande no retrasa uno pequeño de otra cuenta. Cada elemento liberado pasa por la misma admisión que una tarea individual: crea una retención de créditos y cuenta para el límite diario de créditos de la clave. Cuando se rechaza un elemento, el código decide qué ocurre: El lote pasa a COMPLETED cuando no queda ningún elemento pendiente y todas las tareas han terminado. Con webhook.url, el servidor publica entonces el evento batch.completed.

Lee el progreso y los resultados

GET /v1/batches/{id} devuelve el lote con counts por estado de elemento: pending, queued, processing, completed, failed, rejected. Sondearlo también hace avanzar los elementos pendientes.
GET /v1/batches/{id}/items enumera los elementos en orden de envío:
Un elemento REJECTED lleva error: { code, message }. Los cuerpos de resultado solo se incluyen dentro de la ventana de sondeo de 24 horas de Tareas asíncronas. Consulta también Obtener un lote y Listar los elementos de un lote.

POST /v1/async/task/grid

Haz un mismo prompt desde cada punto de una cuadrícula cuadrada alrededor de un centro (referencia). Cada punto se convierte en una tarea con ese punto como payload.location, así que el motor debe aceptar una ubicación: CHATGPT, GEMINI, GOOGLE, AIMODE o GOOGLE_SERP. No envíes payload.location tú mismo.
La fila 0 es el borde norte y la columna 0 el borde oeste. La respuesta devuelve grid (con id y spacingMeters), un summary y points en orden de filas, cada uno con row, col, location y task o error. El punto central se admite primero, solo. Si se rechaza (por ejemplo, 422 LOCATION_UNSUPPORTED, 403 KEY_SCOPE_DENIED, 402 INSUFFICIENT_CREDITS o un plan lleno), ese error es la respuesta para toda la cuadrícula y no se crea ninguna tarea. Los puntos posteriores al centro que se rechazan por capacidad fallan en su sitio con success: false. Vuelve a leer una cuadrícula con GET /v1/async/task/grid/{id}. Añade ?include=response para obtener los resultados de las tareas terminadas. Los puntos que nunca se admitieron no aparecen, y el id de cuadrícula de otra cuenta devuelve 404. Reenviar la misma cuadrícula con el mismo id admite solo los puntos que faltan; consulta Idempotencia.

Siguientes pasos

Idempotencia

Cómo trata cada endpoint una clave repetida.

Créditos y límites

Concurrencia del plan y ritmo de envío.