Saltar al contenido principal
POST
/
campaigns
/
{id}
/
contacts
cURL
curl --request POST \
  --url https://api.altur.io/api/v1.0/campaigns/{id}/contacts \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "contacts": [
    {
      "contact": "<string>",
      "name": "<string>",
      "context": "<string>",
      "extracted_data": {},
      "f_id": "<string>"
    }
  ],
  "if_duplicate": "skip"
}
'
{
  "success": true,
  "summary": {
    "created": 123,
    "updated": 123,
    "skipped_duplicate": 123,
    "failed": 123
  },
  "results": [
    {
      "index": 123,
      "id": "<string>",
      "contact": "<string>",
      "error": "<string>"
    }
  ]
}
Límite de Tasa: 12 solicitudes por segundo
Hasta 1000 contactos por solicitud. Cada item se procesa de forma independiente, así que una fila inválida no rompe el lote. La respuesta incluye un summary agregado y results por item.
Envía un header Idempotency-Key (UUID recomendado) para que los reintentos no encolen lotes duplicados.

Manejo de Duplicados

if_duplicate controla el comportamiento cuando el número del contacto ya existe en la campaña:
  • skip (por defecto): mantener el contacto existente, devolver skipped_duplicate.
  • update: sobreescribir name, context, extracted_data y f_id en el contacto existente, devolver updated.

Estados por item

StatusSignificado
createdNuevo contacto creado
updatedContacto existente actualizado (solo cuando if_duplicate=update)
skipped_duplicateContacto existente preservado
failedVer error (INVALID_PHONE_NUMBER, MISSING_CONTACT, SERVER_ERROR)

Ejemplos

curl -X POST "https://api.altur.io/api/v1.0/campaigns/1234/contacts" \
  -H "Authorization: api-key YOUR_API_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: c1a45e88-ad34-4f57-9d2e-91a1d4f50f7e" \
  -d '{
    "if_duplicate": "update",
    "contacts": [
      {
        "f_id": "user_12345",
        "name": "Juan Pérez",
        "contact": "+521234567890",
        "context": "Atrasado 30 días, debe $1200",
        "extracted_data": { "balance": "1200" }
      },
      {
        "f_id": "user_12346",
        "name": "Sofía Pérez",
        "contact": "+529876543210"
      }
    ]
  }'

Ejemplo de Respuesta

{
  "success": true,
  "summary": { "created": 2, "updated": 0, "skipped_duplicate": 0, "failed": 0 },
  "results": [
    { "index": 0, "status": "created", "id": "42", "contact": "+521234567890" },
    { "index": 1, "status": "created", "id": "43", "contact": "+529876543210" }
  ]
}

Autorizaciones

Authorization
string
header
requerido

Add api-key YOUR_API_SECRET_KEY as the value of the Authorization header.

Encabezados

Idempotency-Key
string

Optional client-generated key (UUID recommended) to make the request idempotent.

Parámetros de ruta

id
integer
requerido

The identifier of the Campaign

Cuerpo

application/json

Batch of contacts to create

contacts
object[]
requerido
Required array length: 1 - 1000 elements
if_duplicate
enum<string>
predeterminado:skip

Behavior when the contact's phone number already exists in this campaign.

Opciones disponibles:
skip,
update

Respuesta

Batch processed

success
boolean
summary
object
results
object[]