Saltar al contenido

Documentación

API de Regi

Integrá tus sistemas con WhatsApp Business sin flujos OAuth ni SDKs obligatorios: una clave de API y un curl alcanzan para enviar tu primer template. Disponible en el plan Signal.

Última actualización: 3 de julio de 2026

Introducción

La API REST de Regi te permite operar WhatsApp Business desde tus propios sistemas (ERP, CRM, automatizaciones) sin usar el portal. La base de todos los llamados es:

https://api.regi.com.ar

Todas las respuestas son JSON. Los mensajes que envías por API aparecen también en la bandeja del portal, así tu equipo ve la conversación completa.

Autenticación

La API usa claves de tipo regi_live_… que pertenecen a tu cuenta. Se crean desde el portal en Administración → Claves de API (requiere rol administrador y plan Signal). La clave se muestra una única vez al crearla: guardala en un lugar seguro — Regi solo almacena una versión irrecuperable.

En cada request, mandala en el header Authorization:

Authorization: Bearer regi_live_TU_CLAVE
  • No hace falta ningún otro header de identificación: la clave ya identifica a tu cuenta.
  • Podés tener hasta 5 claves activas (una por sistema es una buena práctica).
  • Revocar una clave desde el portal la desactiva de inmediato.
  • Nunca publiques la clave en repositorios ni en código del lado del cliente (apps móviles, browsers).

Inicio rápido

Tres llamados y estás enviando: descubrí tu número, elegí un template aprobado y envialo.

export REGI_API_KEY='regi_live_TU_CLAVE'

curl "https://api.regi.com.ar/api/Phone?OnlyActive=true" \
  -H "Authorization: Bearer $REGI_API_KEY"

curl "https://api.regi.com.ar/api/Template?PageNumber=1&PageSize=20" \
  -H "Authorization: Bearer $REGI_API_KEY"

curl -X POST "https://api.regi.com.ar/api/Template/send" \
  -H "Authorization: Bearer $REGI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumberId":"<ID-DEL-PASO-1>","to":"549XXXXXXXXXX","templateName":"<NOMBRE-DEL-PASO-2>","languageCode":"es"}'

Si el template tiene variables {{n}} en el body, agregá components al envío — el ejemplo completo está en la referencia de abajo.

Tip: mientras desarrollás tu integración, usá tu propio número como destino. Los mensajes de prueba aparecen en la bandeja del portal como cualquier conversación, así verificás el circuito completo antes de apuntar a clientes reales.

Endpoints

GET /api/Phone

Listar números de teléfono

Devuelve los números de WhatsApp de tu cuenta. El campo `id` es el phoneNumberId que necesitás para enviar mensajes — este suele ser el primer llamado de cualquier integración.

Parámetro (query) Tipo Descripción
OnlyActive boolean true para ver solo los números habilitados para enviar.

Request

curl "https://api.regi.com.ar/api/Phone?OnlyActive=true" \
  -H "Authorization: Bearer $REGI_API_KEY"

Respuesta

{
  "data": [
    {
      "id": "c5e8a2f1-3d4b-4e5f-8c9d-1a2b3c4d5e6f",
      "displayPhoneNumber": "+54 9 261 250-5882",
      "verifiedName": "Mi Empresa",
      "isActive": true,
      "wabaName": "Mi Empresa Argentina"
    }
  ],
  "success": true
}
GET /api/Template

Listar templates

Devuelve los templates de tu cuenta con su idioma y estado. Solo los templates con status APPROVED se pueden enviar. El nombre y el idioma exactos son los que usás en el envío.

Parámetro (query) Tipo Descripción
PageNumber * number Página a consultar (arranca en 1).
PageSize * number Resultados por página (ej: 20).

Request

curl "https://api.regi.com.ar/api/Template?PageNumber=1&PageSize=20" \
  -H "Authorization: Bearer $REGI_API_KEY"

Respuesta

{
  "data": {
    "items": [
      {
        "name": "cliente_bienvenida",
        "language": "es",
        "category": "UTILITY",
        "status": "APPROVED",
        "componentsJson": "[{\"type\":\"BODY\",\"text\":\"Hola {{1}}, tu expediente es {{2}}.\"}]"
      }
    ],
    "totalCount": 1
  },
  "success": true
}
  • El campo componentsJson trae la estructura del template tal como está aprobada en Meta — ahí ves cuántas variables {{n}} espera el body.
POST /api/Template/send

Enviar un template

Envía un template de WhatsApp a un número de destino. Si el template tiene variables en el body, van en components en el mismo orden que los {{n}}. La respuesta incluye el id del mensaje en Regi y en Meta.

Campo (body) Tipo Descripción
phoneNumberId * string (GUID) El id del número emisor (de GET /api/Phone).
to * string Número de destino en formato internacional sin "+" (ej: 5492611234567).
templateName * string Nombre exacto del template (de GET /api/Template).
languageCode * string Idioma exacto del template (ej: "es").
components array Parámetros del template. Para variables del body: [{"type":"body","parameters":[{"type":"text","text":"valor"}]}].
force boolean Salta la protección anti-duplicado (ver "Protección de costos"). Usalo solo en reenvíos deliberados: cada template se factura.

Request

curl -X POST "https://api.regi.com.ar/api/Template/send" \
  -H "Authorization: Bearer $REGI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumberId": "c5e8a2f1-3d4b-4e5f-8c9d-1a2b3c4d5e6f",
    "to": "5492611234567",
    "templateName": "cliente_bienvenida",
    "languageCode": "es",
    "components": [
      {
        "type": "body",
        "parameters": [
          { "type": "text", "text": "Juan Pérez" },
          { "type": "text", "text": "PS-1234" }
        ]
      }
    ]
  }'

Respuesta

{
  "conversationId": "019defe0-0ea1-7001-9250-8ca635440a18",
  "messageId": "019f258c-4bb3-75a4-bc3e-0e5638a7b8a4",
  "metaMessageId": "wamid.HBgNNTQ5..."
}
  • El mensaje enviado aparece también en la bandeja del portal, atribuido a tu clave de API.
  • Enviar un template no abre la ventana de 24 horas — se abre cuando el cliente responde.

Protección de costos

Cada template enviado se factura (Meta cobra por mensaje). Para evitar gastos por accidente — un retry de tu sistema, un loop — la API bloquea el envío de un template a un destinatario que ya recibió uno hace menos de 2 horas y todavía no respondió. En ese caso recibís un 400 con el detalle.

Si el reenvío es intencional, agregá "force": true al body del envío. La respuesta del cliente resetea la protección automáticamente.

Errores

Status Código Causa Qué hacer
401 invalid_api_key La clave no existe, está revocada, venció, o el header Authorization no tiene el formato "Bearer regi_live_…". Verificá la clave en Administración → Claves de API. Si fue revocada, creá una nueva.
403 El endpoint no es parte de la superficie pública de la API (las claves solo acceden a los endpoints documentados acá), o intentaste gestionar claves con una clave. Usá solo los endpoints de esta página. La gestión de claves es exclusiva del portal.
400 errors.Template Protección de costos: ya se envió un template a ese destinatario hace menos de 2 horas y el cliente todavía no respondió. Si el reenvío es intencional, repetí el request con "force": true (se factura de nuevo).
429 rate_limited Superaste el límite de 60 requests por minuto de tu cuenta. Respetá el header Retry-After y reintentá. Para envíos masivos, espaciá los requests.
502 Meta API unavailable Meta rechazó el envío (por ejemplo, cantidad de parámetros incorrecta) o su API está caída. El detail incluye el código de error de Meta. Revisá el detail del error. Los códigos de Meta están documentados en nuestra guía de errores de WhatsApp.

Los códigos de error propios de WhatsApp (rechazos de Meta en el envío) están explicados en la guía de errores de WhatsApp.

Límites y consumo

  • Rate limit: 60 requests por minuto por cuenta. Al superarlo recibís 429 con el header Retry-After.
  • Segundos de API: el uso se mide en segundos de procesamiento. El plan Signal incluye 30.000 segundos por mes; el excedente se factura a US$ 0,001 por segundo al cierre del período. Un envío de template típico consume menos de un segundo.
  • Monitoreo: el consumo del mes se ve en tiempo real en el portal, en Administración → Claves de API.
  • Claves: hasta 5 activas por cuenta. Para rotar una clave, creá la nueva, actualizá tu sistema y revocá la anterior.

¿Todavía no tenés acceso a la API?

El acceso por API está incluido en el plan Signal, junto con 30.000 segundos de procesamiento por mes y agentes ilimitados vía API.

Ver planes y precios