Skip to main content
POST
Añade hasta 1000 contactos a un lote existente y deja la operación en cola para su procesamiento. El mismo endpoint admite dos formatos de body:
  • Un contacto: envía sus propiedades directamente en la raíz del body.
  • Varios contactos: envía un objeto con el array contacts. Cada elemento del array es un contacto completo.
No envíes un contacto individual dentro de contacts salvo que quieras utilizar el formato de carga múltiple.
identifier es opcional, aunque se recomienda enviarlo para relacionar el resultado con el registro del sistema de origen. Si se omite, el servicio genera uno automáticamente.
Si omites scheduledAt, el contacto entra en la selección del siguiente ciclo y se marca a la brevedad posible. Si lo incluyes, debe ser una fecha futura expresada en UTC y fija cuándo se realizará el primer intento. Los campos contactPriority y customFields son opcionales. contactPriority ordena el contacto frente a los demás contactos del lote: cuanto menor sea su valor, antes se seleccionará. customFields permite guardar datos propios que viajarán con el contacto.
Envía los teléfonos con el código de país y únicamente dígitos, sin el signo +. Un número que contenga + se rechaza con una respuesta 400.

Tratamiento de contactos duplicados

onDuplicate y resetAttempts son campos opcionales de cada contacto:
  • Si el contacto ya existe y omites onDuplicate, sus datos se actualizan, se trata como duplicado y no se vuelve a poner en marcación.
  • Envía "onDuplicate": "recontact" cuando quieras volver a poner en marcación un contacto cuyo identifier ya existe en el lote.
  • Añade "resetAttempts": true si, además de recontactarlo, quieres reiniciar sus contadores de intentos.
En una carga múltiple, estos campos se incluyen dentro del objeto del contacto al que deben aplicarse, no en la raíz del body. Por tanto, una misma petición puede solicitar la reactivación de algunos contactos y aplicar el tratamiento habitual a otros.
Usa resetAttempts junto con onDuplicate: "recontact". Si no necesitas reiniciar los intentos, puedes enviar solo onDuplicate.

Ejemplos de solicitud

En el ejemplo múltiple, el primer contacto solicita recontacto y reinicio de intentos. El segundo omite ambos campos, por lo que conserva el tratamiento de duplicados habitual del lote.
Una respuesta con status: "queued" confirma que los contactos quedaron en cola. Usa operationId para identificar la operación devuelta por la API.

Authorizations

apikey
string
header
required

API key obtenida desde la interfaz de Inagent, dentro del marcador.

Headers

Idempotency-Key
string

Clave para hacer el reintento seguro. Opcional.

Un UUID por operación lógica, reusado en los reintentos de ese mismo envío. Ver "Reintentos seguros" en la descripción de la API.

Maximum string length: 255
Pattern: ^[\x20-\x7E]+$

Path Parameters

batchId
string<uuid>
required

Id del lote.

Body

application/json

Contacto que se va a cargar en el lote.

El campo identifier no es obligatorio: si se omite, el servicio genera uno automáticamente. Se recomienda indicarlo siempre que exista, ya que es lo que permite relacionar el contacto con el registro del sistema de origen.

name
string
required

Nombre del contacto. Obligatorio y no vacío.

Example:

"Juan Pérez"

addresses
object[]
required

Direcciones por las que intentar el contacto, con su orden de marcación.

Minimum array length: 1
identifier
string

Identificador del contacto en el sistema de origen. Si se omite, el servicio genera uno automáticamente.

Example:

"CLI-001"

customFields
object

Datos adicionales que se almacenan con el contacto. No intervienen en la marcación y quedan disponibles para el asistente y para la consulta posterior del contacto.

Example:
contactPriority
integer

Prioridad del contacto frente a los demás contactos del lote. Cuanto menor sea el valor, antes se seleccionará para la marcación.

Example:

0

scheduledAt
string<date-time>

Cuándo intentar la PRIMERA marcación. Debe ser una fecha futura en UTC y estar dentro de los próximos 30 días.

Sin este campo el contacto entra a la selección del siguiente ciclo.

Example:

"2026-09-23T08:41:43.522Z"

onDuplicate
enum<string>

Usa recontact para volver a llamar al contacto aunque su identifier ya exista en el lote.

Available options:
recontact
resetAttempts
boolean

Con true, reinicia los contadores de intentos cuando el contacto duplicado se vuelve a poner en marcación.

Response

Contactos aceptados. La inserción se realiza en segundo plano.

operationId
string<uuid>
required

Identifica esta carga. Se resuelve en GET /batches/operations/{operationId}.

Example:

"9f1c7e2a-4b3d-4a1e-9c8f-2d5b6e7a8c90"

operationUrl
string
required

URL del recurso de operación, la misma que viene en el header Location.

Example:

"/autocontact/api/v1/batches/operations/9f1c7e2a-4b3d-4a1e-9c8f-2d5b6e7a8c90"

status
enum<string>
required
Available options:
queued
contactsReceived
integer
required

Cuántos contactos se recibieron y validaron.

Example:

150

chunksPublished
integer
required

Número de bloques en los que se dividió la carga. La operación se considera finalizada cuando todos se han procesado.

Example:

3

message
string