Skip to main content
POST
Nueva instancia
Auth: TokenAccountRate-limit: 20/minIdempotente: no

Descripción

Crea una nueva instancia de WhatsApp en tu cuenta. La instancia nace disconnected, el siguiente paso es llamar a GET /api/instance/connect/:instance para obtener el QR code o pairing code. Durante la creación, puedes enviar, en el mismo body, la configuración inicial de proxy, webhook, WebSocket, integración Chatwoot, integración Typebot, ajustes de comportamiento y almacenamiento S3. Cada bloque es independiente: envía solo lo que necesites.
La instancia se crea dentro de la cuota de tu cuenta. Si has alcanzado el límite, recibirás 403 con el mensaje Account instance quota exceeded, elimina una instancia que ya no uses para liberar espacio.
Las fallas en sub-bloques (webhook / websocket / chatwoot) no abortan la creación de la instancia. Cada bloque es log-and-continue: la instancia se crea, el sub-bloque aparece como enabled: false o ausente en la respuesta y los logs del servidor describen la causa. Para Chatwoot, la falla también se expone en chatwoot.status: "error" + chatwoot.error: "<message>" en el payload de retorno.

Ejemplos

Mínimo

Crea la instancia con solo el name. El TokenInstance es generado automáticamente por el servidor y devuelto en instance.token en la respuesta, guárdalo para autenticar las llamadas subsiguientes.

Con token personalizado

Define manualmente el TokenInstance en el campo token en lugar de dejar que el servidor genere uno. Útil para reutilizar un valor ya registrado en otro sistema, el token debe ser único dentro de tu cuenta.

Con settings personalizados

Crea la instancia con el bloque settings ya definido: rechaza llamadas automáticamente con un mensaje por defecto, mantiene presencia online, deshabilita la sincronización de historial e ignora estados. Equivale a llamar a POST /api/instance/settings/:instance justo después.

Con proxy

Aprovisiona la instancia apuntando a un proxy SOCKS5 autenticado. La contraseña se cifra at-rest con AES-256-GCM y nunca se devuelve en la respuesta.

Con webhook

En la misma solicitud, configura el webhook default para recibir solo los eventos message.exchange y call.update, con Authorization personalizado para validar el origen. La media no se envía en base64, el destino la obtiene vía la URL devuelta.

Con WebSocket

Habilita el broadcast en tiempo real vía WebSocket filtrando por los eventos message.exchange y call.update. Útil para dashboards y bots que necesitan latencia mínima sin exponer un endpoint público de webhook.

Con S3

Apunta el almacenamiento de media a un bucket AWS S3 (us-east-1), con prefijo media/ para organizar las subidas. La s3SecretKey se cifra at-rest y nunca aparece en la respuesta.

Con Chatwoot

Aprovisiona la instancia ya vinculada a una inbox de Chatwoot (WhatsApp - Orion), con firma de agente activa y reapertura automática de conversaciones resueltas. Si la activación de Chatwoot falla, la instancia se crea de todos modos y el objeto chatwoot regresa con status: "error".

Con Typebot

Aprovisiona la instancia ya con un bot de Typebot registrado. Este bloque configura un único bot; agrega más después vía POST /api/typebot/set/:instance. Si la activación falla (bridge no disponible o campos inválidos), la instancia se crea de todos modos y el objeto typebot regresa con status: "error".

Completo

Combina todos los bloques en la misma solicitud: token personalizado, proxy SOCKS5, webhook, WebSocket, integración Chatwoot, ajustes de comportamiento y almacenamiento S3. Cada bloque permanece independiente, las fallas en sub-bloques no abortan la creación de la instancia.

Respuesta exitosa

La respuesta incluye el TokenInstance generado y el resumen de cada integración configurada (proxy, webhook, websocket, chatwoot, settings, s3). Guarda el instance.token, es lo que autentica las llamadas subsiguientes de la propia instancia.
201 Created
El chatwootApiToken no es devuelto en esta respuesta (solo se expone en plaintext en GET /api/chatwoot/list/:instance). El s3.secretKey y la proxy.password nunca son devueltos por ningún endpoint.

Chatwoot con error

Si el bloque chatwoot* fue enviado pero la configuración falló (p. ej., token inválido), la instancia se crea de todos modos y el objeto chatwoot en la respuesta viene con status: "error" y un error accionable:
Puedes corregir las credenciales vía POST /api/chatwoot/set/:instance sin recrear la instancia.

Typebot con error

Si el bloque typebot* fue enviado pero la configuración falló (p. ej., bridge no configurado en el servidor, typebotUrl ausente o typebotTriggerType inválido), la instancia se crea de todos modos y el objeto typebot en la respuesta viene con status: "error" y un error accionable:
Puedes configurar el bot después vía POST /api/typebot/set/:instance sin recrear la instancia.

Cabeceras

string
requerido
Tu TokenAccount.
string
requerido
application/json

Cuerpo de la solicitud

string
requerido
Identificador de la instancia (usado en las rutas :instance de todos los demás endpoints). No puede estar en blanco y debe ser único dentro de tu cuenta. Se recomienda kebab-case o snake_case.
string
Token personalizado para la instancia. Si se omite, se genera automáticamente (recomendado).

Bloque proxy (opcional)

boolean
Habilita el uso de un proxy específico para esta instancia.
string
IP o hostname del proxy.
string
Puerto como string (p. ej., "8080").
string
http, https o socks5.
string
Usuario del proxy (opcional).
string
Contraseña del proxy (opcional, cifrada at-rest con AES-256-GCM).

Bloque webhook (opcional)

boolean
Habilita el envío de eventos a una URL.
string
URL donde RyzeAPI hará POST de los eventos.
string
Valor que RyzeAPI envía en la cabecera Authorization de cada POST (útil para validar origen). Ej.: Bearer secret-key-123.
boolean
Si es true, cada tipo de evento puede tener su propia URL (default: false).
string[]
Lista de eventos que la instancia debe despachar. Ej.: ["message.exchange", "call.update"].
boolean
Incluye media recibida como base64 dentro del body del webhook.
El bloque webhook crea un webhook con label default. Para múltiples webhooks por instancia, usa POST /api/events/webhook después.

Bloque WebSocket (opcional)

boolean
Habilita el broadcasting de eventos vía WebSocket para esta instancia.
string[]
Lista de eventos que serán emitidos vía WebSocket. Si está vacío con websocketEnabled=true, todos los eventos son emitidos.
boolean
Incluye media recibida como base64 en los frames del WebSocket.

Bloque Chatwoot (opcional)

boolean
Habilita la integración con Chatwoot.
string
URL de la instalación de Chatwoot (p. ej., https://chatwoot.example.com). Requerido si chatwootEnabled=true.
integer
ID numérico de la cuenta de Chatwoot. Requerido si chatwootEnabled=true.
string
Token de API de la cuenta de Chatwoot (el access_token del agente). Requerido si chatwootEnabled=true. Cifrado at-rest. No se devuelve en esta respuesta, pero se expone en plaintext en GET /api/chatwoot/list/:instance.
string
Nombre del inbox que se creará en Chatwoot (p. ej., "WhatsApp - Orion").
boolean
Si es true, los mensajes enviados a través de la API se prefijan con la firma del agente de Chatwoot.
boolean
Si es true, los mensajes de grupo no se convierten en conversaciones en Chatwoot.
boolean
Si es true, las nuevas conversaciones inician como pending en lugar de open.
boolean
Si es true, los nuevos mensajes en conversaciones resueltas las reabren automáticamente.
La integración Chatwoot necesita estar habilitada en el servidor. Si no está disponible, la creación de la instancia continúa y chatwoot regresa con enabled: false (la falla aparece en los logs del servidor). Consulta el resumen de Chatwoot para detalles.

Bloque Typebot (opcional)

Configura un único bot de Typebot junto con la creación de la instancia. Para varios bots, usa POST /api/typebot/set/:instance después. Consulta el resumen de Typebot para el enrutamiento por trigger.
boolean
Habilita la integración con Typebot.
string
URL del Typebot publicado (viewer). Requerido si typebotEnabled=true. Ej.: https://typebot.co/meu-bot-abc123.
string
Cómo se acciona el bot: all (cualquier mensaje) o keyword. Requerido si typebotEnabled=true.
string
Operador del trigger, requerido si typebotTriggerType es keyword. Uno de: contains, equals, startsWith, endsWith, regex.
string
Palabra/expresión del trigger, requerida si typebotTriggerType es keyword.
integer
predeterminado:"0"
Expira la sesión por inactividad tras N minutos (0 = nunca).
string
Mensaje enviado al usuario cuando la sesión expira.
string
Palabra que finaliza el bot de inmediato (p. ej., "sair").
string
Despedida enviada cuando el bot se finaliza por la typebotKeywordFinish.
integer
predeterminado:"0"
Delay del indicador “escribiendo…” antes de cada respuesta, en milisegundos.
boolean
predeterminado:"false"
Si es true, pausa el bot en esa conversación cuando el operador responde manualmente.
integer
predeterminado:"0"
Agrupa los fragmentos enviados por el cliente durante N segundos antes de procesar.
boolean
predeterminado:"true"
Si es true, los mensajes de grupo no accionan el bot. Ausente equivale a true.
string
Etiqueta del bot en el panel (p. ej., "Bot de orçamento").
La integración Typebot necesita el Ryze Bridge configurado en el servidor. Si no está disponible, la creación de la instancia continúa y typebot regresa con status: "error" con la causa. Configura el bot después vía POST /api/typebot/set/:instance.

Bloque settings (opcional)

boolean
Rechaza automáticamente las llamadas entrantes.
string
Mensaje automático enviado al llamante cuando la llamada es rechazada.
boolean
No procesa mensajes de grupo (útil para bots 1-a-1).
boolean
Mantiene la instancia marcada como “online” en WhatsApp.
boolean
Marca automáticamente los mensajes recibidos como leídos.
boolean
predeterminado:"true"
Default true (el historial no se sincroniza en la primera conexión). Envía false si quieres recibir el backlog.
boolean
Ignora mensajes de tipo “status” (stories).

Bloque S3 (opcional, almacenamiento de media)

boolean
Habilita el upload de media recibida a S3 o MinIO.
string
Región (p. ej., us-east-1).
string
Nombre del bucket.
string
Access Key ID.
string
Secret Access Key (cifrado at-rest, nunca devuelto).
string
Endpoint personalizado para MinIO o DigitalOcean Spaces. Omite para AWS S3 oficial.
string
Prefijo de path (p. ej., media/).

Errores

Ejemplo de error:

Siguiente

Conectar a WhatsApp

Genera el QR code o pairing code para vincular el número.

Verificar estado

Usa GET /api/instance/list?instanceName=<name> para inspeccionar el status actual.