Connect your own software with Vuntrix to send WhatsApp messages, check numbers, create CRM orders, move statuses and decide when the customer should be notified.
The API is designed for businesses that already have another system and want WhatsApp and CRM activity to stay in sync: tailoring workshops, online stores, bookings, orders, support, clinics and service businesses.
Enable this per session under Dashboard -> Sessions -> Customers without a reply. Vuntrix records the customer's first message, waits for a message manually written by the salesperson, and updates the state when the deadline expires.
waiting_commercial: the customer wrote and a human reply is pending.waiting_customer: the salesperson replied and Vuntrix is waiting for the customer.no_response: the deadline expired without a reply.replied or replied_late: the customer wrote again.curl https://vuntrix.com/api/v1/follow-ups \ -H "X-API-Key: vtx_YOUR_API_KEY"
To link a conversation to the real phone number, send its conversationId when creating the lead:
curl -X POST https://vuntrix.com/api/v1/orders \
-H "X-API-Key: vtx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceConversationId": "conv_xxx",
"sessionId": "ses_xxx",
"externalId": "crm-1001",
"customerPhone": "34600111222",
"name": "Maria Gomez"
}'
X-API-KeyCreate a key from the dashboard. Send the X-API-Key header with each request. The key is tied to your account, limits and connected WhatsApp sessions.
curl https://vuntrix.com/api/v1/orders \ -H "X-API-Key: vtx_YOUR_API_KEY" \ -H "Content-Type: application/json"
Use externalId so your system can keep updating the same CRM item. With sendToClient: "no", the CRM is updated silently.
curl -X POST https://vuntrix.com/api/v1/orders \
-H "X-API-Key: vtx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "tailor-1001",
"orderCode": "VTX-TLR1001",
"name": "Maria Gomez",
"customerPhone": "34600111222",
"email": "maria@example.com",
"buyerStatus": "interested",
"product": "Custom dress",
"variant": "Blue / size M",
"quantity": "1",
"expectedTotal": "120 EUR",
"budget": "100-130 EUR",
"paymentMethod": "Cash",
"delivery": "pickup",
"city": "Murcia",
"postalCode": "30001",
"address": "Main Street 12",
"deliveryReference": "Shop next to the pharmacy",
"trackingUrl": "https://yourwebsite.com/tracking?code=VTX-TLR1001",
"status": "cutting_started",
"statusLabel": "Cutting started",
"priority": "high",
"tags": ["vip", "urgent", "repeat customer"],
"summary": "Customer wants a custom dress for store pickup.",
"nextAction": "Confirm final fitting and pickup time.",
"nextFollowUpAt": "2026-07-20T10:00:00+02:00",
"expectedCloseAt": "2026-07-23T18:00:00+02:00",
"notes": "Measurements received and fabric confirmed",
"sendToClient": "no"
}'
These fields match the lead record shown in the CRM. You can send the main names or their aliases; Vuntrix normalizes them and saves the lead in that account's own flow.
| CRM field | Accepted variables | Notes |
|---|---|---|
| External identifier | externalId, pedidoId, orderId, code | Stable key from your system. Use it to update the same lead without duplicates. |
| Order code | orderCode, codigo, code | Optional. If omitted, Vuntrix generates one. |
| Base contact | contactId, phone, telefono, whatsapp | Required for creation if customerPhone/telefonoReal is not sent. It can be the WhatsApp number. |
| Customer real phone | customerPhone, telefonoReal, phoneReal, realPhone | Recommended always. Required before assigning the lead to a sales rep or opening the customer's WhatsApp from the CRM. |
email, correo, customerEmail | Required for email notifications. | |
| Status / column | status, estado, stage, column | If the column does not exist, Vuntrix creates it for that account. Use statusLabel for the visible label. |
| Priority | priority, prioridad | Accepted values: low/baja, medium/media, high/alta, urgent/urgente. |
| Name | name, nombre, cliente | Visible name on the card. |
| Customer situation | buyerStatus, situacion | Examples: frio, interested, urgent. |
| Category / need | category, categoria, motivo, need | Example: repair, booking, order, support, alteration. |
| Product / service | product, producto, garment, service | What the customer requested or is asking about. |
| Variant | variant, variante, size, talla | Size, color, model or version. |
| Quantity | quantity, cantidad | Short free text. |
| Expected total | precio_total, precioTotal, expectedTotal, total, price | Estimated amount or order total. If both precio and precio_total are sent, Vuntrix stores the total and adds the base price to the summary. |
| Budget | budget, presupuesto, precio_base | Customer budget or range. |
| Payment method | paymentMethod, metodoPago, metodo_pago, payment | Cash, card, transfer, free text, etc. |
| Delivery | delivery, entrega_tipo, tipo_entrega, needsShipping, entrega | Accepts domicilio/shipping/yes, pickup/no or unknown. |
| Source | source, origen | Examples: api, web, tailor_app. |
| City | city, ciudad | Customer city or zone. |
| Postal code | codigo_postal, codigoPostal, postalCode, cp, zip | Stored as text. |
| Address | direccion_envio, direccionEnvio, address, direccion | Delivery or pickup address. |
| Delivery reference | deliveryReference, referencia, reference | Pickup point, entrance, shop, instructions. |
| Tracking link | trackingUrl, tracking_url, trackingLink, urlSeguimiento, linkSeguimiento | Your own website/app URL where the customer can check the order status. |
| Tracking code | trackingCode, tracking_code, codigoSeguimiento, trackingNumber | Optional. If omitted, Vuntrix uses the order code. |
| Follow-up | nextFollowUpAt, followUpAt, seguimiento | ISO date for the next follow-up. |
| Expected close | estimado_at, estimadoAt, expectedCloseAt, cierreEstimado | ISO date for expected close or delivery. |
| Tags | tags, etiquetas | Array or comma-separated text. Up to 8 tags. |
| Summary | summary, resumen, description | Summary visible in the lead record. |
| Extra logistics | distancia_km, distanciaKm, envio_precio, envioPrecio | There is no dedicated field yet; Vuntrix adds these details to the summary so the data is not lost. |
| Next step | nextAction, siguientePaso | What the team should do next. |
| Internal notes | notes, notas | Private team information. |
| Cancellation reason | cancelReason, motivoCancelacion | Only when applicable. |
When the update should reach the customer, send sendToClient: "yes" and a customerMessage. The Spanish aliases enviarCliente and mensajeCliente are also accepted.
curl -X PATCH https://vuntrix.com/api/v1/orders/tailor-1001/status \
-H "X-API-Key: vtx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "ready_for_pickup",
"statusLabel": "Ready for pickup",
"trackingUrl": "https://yourwebsite.com/tracking?code=VTX-TLR1001",
"sendToClient": "yes",
"channel": ["whatsapp", "email"],
"customerMessage": "Hi Maria, your dress is ready for pickup."
}'
For direct messages, use /api/send-messages. To clean lists or validate phone numbers, use /api/check-numbers. You can pass sessionId, prefix and delayMs.
curl -X POST https://vuntrix.com/api/send-messages \
-H "X-API-Key: vtx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "ses_xxx",
"prefix": "34",
"delayMs": 3000,
"numbers": ["600111222"],
"text": "Hi, your order is now being prepared."
}'
Columns can be created from the dashboard under CRM / Leads -> Flow / columns, or saved by API for businesses with their own status model.
curl -X PUT https://vuntrix.com/api/v1/crm/flow \
-H "X-API-Key: vtx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"columns": [
{ "id": "new", "label": "New order" },
{ "id": "measurements_received", "label": "Measurements received" },
{ "id": "cutting_started", "label": "Cutting started" },
{ "id": "in_production", "label": "In production" },
{ "id": "ready_for_pickup", "label": "Ready for pickup" },
{ "id": "delivered", "label": "Delivered", "terminal": true }
]
}'
| Method | Path | Use |
|---|---|---|
| GET | /api/sessions | List WhatsApp sessions for the account. |
| POST | /api/check-numbers | Check WhatsApp numbers in bulk. |
| POST | /api/send-messages | Send WhatsApp messages from a connected session. |
| GET | /api/v1/orders | List CRM orders/leads. |
| POST | /api/v1/orders | Create or update an order/lead. |
| PATCH | /api/v1/orders/:id | Update order/lead fields. |
| PATCH | /api/v1/orders/:id/status | Change status and optionally notify the customer. |
| POST | /api/v1/orders/:id/messages | Send a specific message to the order customer. |
| GET | /api/v1/follow-ups | List human conversations and reply status across every enabled session. |
| GET | /api/v1/crm/flow | Read CRM columns. |
| PUT | /api/v1/crm/flow | Save custom CRM columns. |
externalId per order to prevent duplicates.sendToClient disabled until your system or team has reviewed the message.delayMs for bulk operations to avoid aggressive sending.Open the panel, create an API key and copy the examples from this page. If you need help, open support from the website.
Open the panel Read the manual