Overview
Create a new support ticket for a WhatsApp Web (QR) contact. This endpoint initializes a conversation in a specific pipeline stage, optionally sends an initial message, and allows you to set custom metadata for both the contact and ticket. This is ideal for programmatically creating tickets when a customer takes a specific action on your platform (e.g., form submission, purchase, support request).Use Cases
- Form-triggered Tickets: Create a ticket when a user submits a contact form
- E-commerce Integration: Open tickets for new orders or delivery issues
- Onboarding Workflows: Start onboarding tickets for new customers
- Support Escalation: Programmatically create tickets from other systems
- Event-based Tickets: Create tickets based on user behavior or triggers
- CRM Synchronization: Sync customer issues from external CRM to Vambe
Authentication
This endpoint requires authentication using an API key. Include your API key in the request header:Path Parameters
Parameter | Type | Required | Description |
---|---|---|---|
phoneId | string | Yes | Your WhatsApp Web phone identifier (connected via QR code) |
Request Body
Field | Type | Required | Description |
---|---|---|---|
to_phone_number | string | Yes | Contact’s WhatsApp phone number (with country code) |
stage_id | string | Yes | UUID of the pipeline stage where the ticket should start |
contact_name | string | No | Full name of the contact |
email | string | No | Contact’s email address (must be valid email format) |
contact_metadata | object | No | Custom key-value pairs for contact-level data |
ticket_metadata | object | No | Custom key-value pairs for ticket-level data |
integration_data | object | No | Integration-specific data (e.g., external system IDs) |
message | object | No | Optional initial message to send when creating the ticket |
Message Object
When providing an initial message, use this structure:Field | Type | Required | Description |
---|---|---|---|
content | string | No | Text content of the message to send |
templateId | string | No | ID of a template to use (if using smart templates) |
ai_generated | boolean | Yes | Whether the message is AI-generated (true) or manual |
Response Structure
The endpoint returns a success response with the created contact information:Field | Type | Description |
---|---|---|
aiContactId | string (UUID) | Unique identifier of the created or existing contact |
status | string | Status of the operation (always “ok”) |
Example Request
Example Response
Common Use Cases
1. Create Ticket from Contact Form
2. E-commerce Order Ticket
3. Support Escalation
4. Create Ticket Without Initial Message
5. Using Smart Templates
Phone Number Format
Theto_phone_number
field accepts phone numbers in various formats:
- With country code:
"+56912345678"
(recommended) - String format:
"56912345678"
- Number format:
56912345678
Metadata Best Practices
Contact Metadata
Store information about the person:- Company name
- Industry
- Customer tier/plan
- Account creation date
- Language preference
- Time zone
Ticket Metadata
Store information about this specific ticket:- Issue type/category
- Priority level
- Related order/transaction IDs
- Urgency
- Source (web, mobile, API, etc.)
- Custom fields specific to your workflow
Error Responses
Status Code | Description |
---|---|
400 | Bad Request - Invalid phone number or stage ID |
401 | Unauthorized - Invalid or missing API key |
404 | Not Found - Phone ID or stage ID doesn’t exist |
500 | Internal Server Error - Something went wrong |
Important Notes
- Phone ID Requirement: The
phoneId
in the path must be a WhatsApp Web connection that you’ve set up via QR code - Stage ID: Make sure the
stage_id
exists in your pipelines - use the GET /api/public/pipeline endpoint to get valid stage IDs - Duplicate Contacts: If a contact with the same phone number already exists, the ticket will be created for that existing contact
- Metadata Flexibility: Both
contact_metadata
andticket_metadata
accept any key-value pairs as objects - AI Processing: When you don’t provide a message, the AI assistant will automatically engage based on your pipeline configuration
- Message vs Template: You can provide either plain
content
or use atemplateId
with variables
What Happens After Creation
- Contact Creation/Update: The system finds or creates a contact with the provided phone number
- Metadata Processing: Contact and ticket metadata are processed and stored
- Stage Assignment: The ticket is placed in the specified pipeline stage
- Message Sending (if provided):
- If
message.content
is provided withouttemplateId
: Sends a plain text message - If
message.templateId
is provided: Sends a smart template with variables - If no message: AI assistant takes over based on pipeline configuration
- If
- Contact ID Return: You receive the
aiContactId
to track this contact for future operations
Related Endpoints
- GET /api/public/pipeline - Get available pipeline stages
- GET /api/public/contact//info - Get ticket and contact info
- POST /api/public/contact//update-metadata - Update contact metadata later
- POST /api/public/ticket/close/contact/ - Close an active ticket
Headers
API key needed to authorize the request
Path Parameters
Body
application/json
Response
200
Ticket created successfully