WAPI / External API

WhatsApp and CRM API for businesses

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.

What it is for

Automate what happens outside Vuntrix

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.

Tailoring and workshopsUpdate stages such as measurements received, cutting started, in production or ready for pickup.
Ecommerce and ordersCreate orders, store the real phone number, change status and notify by WhatsApp or email.
Responsible marketingCheck numbers before contacting and respect the limits configured for your account.
Sales follow-up

Detect customers who stopped replying

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.
AI replies, campaigns and automatic messages never start this timer. WhatsApp identity is scoped per session and is never exposed as a phone number until it is resolved or explicitly linked by your CRM.
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"
  }'
Authentication

Use X-API-Key

Create 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.

  • Do not expose the key in public frontend code.
  • Use it from your backend, ERP or private automation system.
  • To send WhatsApp messages, your Vuntrix account needs an active session.
curl https://vuntrix.com/api/v1/orders \
  -H "X-API-Key: vtx_YOUR_API_KEY" \
  -H "Content-Type: application/json"
Vuntrix WAPI is not the official Meta API. It works with the WhatsApp sessions connected inside Vuntrix.
CRM / orders

Create or update an order without notifying the customer

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"
  }'

Fields you can fill in the CRM record

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 fieldAccepted variablesNotes
External identifierexternalId, pedidoId, orderId, codeStable key from your system. Use it to update the same lead without duplicates.
Order codeorderCode, codigo, codeOptional. If omitted, Vuntrix generates one.
Base contactcontactId, phone, telefono, whatsappRequired for creation if customerPhone/telefonoReal is not sent. It can be the WhatsApp number.
Customer real phonecustomerPhone, telefonoReal, phoneReal, realPhoneRecommended always. Required before assigning the lead to a sales rep or opening the customer's WhatsApp from the CRM.
Emailemail, correo, customerEmailRequired for email notifications.
Status / columnstatus, estado, stage, columnIf the column does not exist, Vuntrix creates it for that account. Use statusLabel for the visible label.
Prioritypriority, prioridadAccepted values: low/baja, medium/media, high/alta, urgent/urgente.
Namename, nombre, clienteVisible name on the card.
Customer situationbuyerStatus, situacionExamples: frio, interested, urgent.
Category / needcategory, categoria, motivo, needExample: repair, booking, order, support, alteration.
Product / serviceproduct, producto, garment, serviceWhat the customer requested or is asking about.
Variantvariant, variante, size, tallaSize, color, model or version.
Quantityquantity, cantidadShort free text.
Expected totalprecio_total, precioTotal, expectedTotal, total, priceEstimated amount or order total. If both precio and precio_total are sent, Vuntrix stores the total and adds the base price to the summary.
Budgetbudget, presupuesto, precio_baseCustomer budget or range.
Payment methodpaymentMethod, metodoPago, metodo_pago, paymentCash, card, transfer, free text, etc.
Deliverydelivery, entrega_tipo, tipo_entrega, needsShipping, entregaAccepts domicilio/shipping/yes, pickup/no or unknown.
Sourcesource, origenExamples: api, web, tailor_app.
Citycity, ciudadCustomer city or zone.
Postal codecodigo_postal, codigoPostal, postalCode, cp, zipStored as text.
Addressdireccion_envio, direccionEnvio, address, direccionDelivery or pickup address.
Delivery referencedeliveryReference, referencia, referencePickup point, entrance, shop, instructions.
Tracking linktrackingUrl, tracking_url, trackingLink, urlSeguimiento, linkSeguimientoYour own website/app URL where the customer can check the order status.
Tracking codetrackingCode, tracking_code, codigoSeguimiento, trackingNumberOptional. If omitted, Vuntrix uses the order code.
Follow-upnextFollowUpAt, followUpAt, seguimientoISO date for the next follow-up.
Expected closeestimado_at, estimadoAt, expectedCloseAt, cierreEstimadoISO date for expected close or delivery.
Tagstags, etiquetasArray or comma-separated text. Up to 8 tags.
Summarysummary, resumen, descriptionSummary visible in the lead record.
Extra logisticsdistancia_km, distanciaKm, envio_precio, envioPrecioThere is no dedicated field yet; Vuntrix adds these details to the summary so the data is not lost.
Next stepnextAction, siguientePasoWhat the team should do next.
Internal notesnotes, notasPrivate team information.
Cancellation reasoncancelReason, motivoCancelacionOnly when applicable.

Notify only when your team decides

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."
  }'
Messages and number checks

Send WhatsApp messages or check numbers

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."
  }'
Custom columns

Create your own CRM flow

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 }
    ]
  }'
Quick reference

Main endpoints

MethodPathUse
GET/api/sessionsList WhatsApp sessions for the account.
POST/api/check-numbersCheck WhatsApp numbers in bulk.
POST/api/send-messagesSend WhatsApp messages from a connected session.
GET/api/v1/ordersList CRM orders/leads.
POST/api/v1/ordersCreate or update an order/lead.
PATCH/api/v1/orders/:idUpdate order/lead fields.
PATCH/api/v1/orders/:id/statusChange status and optionally notify the customer.
POST/api/v1/orders/:id/messagesSend a specific message to the order customer.
GET/api/v1/follow-upsList human conversations and reply status across every enabled session.
GET/api/v1/crm/flowRead CRM columns.
PUT/api/v1/crm/flowSave custom CRM columns.
Endpoints respect account permissions, usage limits and service status. If external API access is not active for the account, Vuntrix returns a permissions error.
Best practices

Use it with control

  • Store a stable externalId per order to prevent duplicates.
  • Keep sendToClient disabled until your system or team has reviewed the message.
  • Use delayMs for bulk operations to avoid aggressive sending.
  • Keep consent and anti-spam practices in place for marketing flows.
Ready to try it?

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