API Reference
Generate AI Reply
Generate an AI response using an assistant, identified by an external customer identifier
On this page
This endpoint generates an AI response for a given message using your configured assistant. It automatically creates or reuses conversations based on the customer identifier, making it ideal for integrating AI responses into external platforms, CRMs, or custom chat interfaces.
Rate Limited — This endpoint is rate limited to 5 requests per minute per API token to prevent abuse.
Request Body
assistant_idintegerrequired
The ID of the assistant to use for generating the response. Must belong to your account.
customer_identifierstringrequired
A unique identifier for the customer. This is used to maintain conversation context across multiple messages.
Examples: phone number, email address, CRM contact ID, Facebook user ID.
Maximum length: 255 characters.
messagestringrequired
The customer's message to respond to.
variablesobject
Optional context variables to pass to the assistant. These are merged with any existing conversation variables.
Useful for passing customer data, session context, or other metadata.
Response Fields
successboolean
Indicates whether the request was successful
conversation_idstring
The UUID of the conversation. Use this to track or reference the conversation later.
customer_identifierstring
The customer identifier provided in the request
replystring
The AI-generated response to the customer's message
function_callsarray
Array of function calls made by the assistant while processing the message. Empty array if no functions were called.
ai_disabledboolean
Indicates if AI responses are disabled for this conversation (e.g., due to manual takeover)
Error Responses
successboolean
Will be false when an error occurs
errorstring
Error message describing what went wrong
error_codestring
Machine-readable error code. Possible values:
ASSISTANT_NOT_FOUND- The assistant ID is invalid or doesn't belong to your accountINSUFFICIENT_BALANCE- Your account balance is too low to process the message
curl -X POST "https://app.voxlink.ai/api/user/ai/generate-reply" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assistant_id": 123,
"customer_identifier": "+14155551234",
"message": "Hi, I would like to schedule an appointment",
"variables": {
"customer_name": "John Smith",
"source": "whatsapp"
}
}'
const response = await fetch('https://app.voxlink.ai/api/user/ai/generate-reply', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
assistant_id: 123,
customer_identifier: '+14155551234',
message: 'Hi, I would like to schedule an appointment',
variables: {
customer_name: 'John Smith',
source: 'whatsapp'
}
})
});
const data = await response.json();
console.log(data.reply);
import requests
response = requests.post(
'https://app.voxlink.ai/api/user/ai/generate-reply',
headers={
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
json={
'assistant_id': 123,
'customer_identifier': '+14155551234',
'message': 'Hi, I would like to schedule an appointment',
'variables': {
'customer_name': 'John Smith',
'source': 'whatsapp'
}
}
)
data = response.json()
print(data['reply'])
$response = Http::withToken('YOUR_API_TOKEN')
->post('https://app.voxlink.ai/api/user/ai/generate-reply', [
'assistant_id' => 123,
'customer_identifier' => '+14155551234',
'message' => 'Hi, I would like to schedule an appointment',
'variables' => [
'customer_name' => 'John Smith',
'source' => 'whatsapp'
]
]);
$reply = $response->json()['reply'];
{
"success": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"customer_identifier": "+14155551234",
"reply": "Hi John! I'd be happy to help you schedule an appointment. What day and time work best for you?",
"function_calls": [],
"ai_disabled": false
}
{
"success": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"customer_identifier": "+14155551234",
"reply": "I've checked our calendar and we have availability tomorrow at 2 PM and Friday at 10 AM. Which works better for you?",
"function_calls": [
{
"name": "check_availability",
"arguments": {
"start_date": "2025-01-08",
"days": 7
},
"result": {
"slots": ["2025-01-08 14:00", "2025-01-10 10:00"]
}
}
],
"ai_disabled": false
}
{
"success": false,
"error": "Assistant not found or does not belong to you",
"error_code": "ASSISTANT_NOT_FOUND"
}
{
"success": false,
"error": "Insufficient balance. Please top up your account.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"message": "The assistant id field is required.",
"errors": {
"assistant_id": ["The assistant id field is required."]
}
}
{
"message": "Too Many Attempts.",
"retry_after": 60
}
Use Cases
Multi-Channel AI Responses
Use this endpoint to add AI responses to any messaging platform:
- Receive a message from WhatsApp, Facebook, SMS, or any other channel
- Call this endpoint with the message and customer identifier
- Send the AI response back through the original channel
CRM Integration
Integrate AI responses into your CRM or helpdesk:
- Use the CRM contact ID as the
customer_identifier - Pass customer data as
variablesfor personalized responses - The conversation persists across sessions using the same identifier
Custom Chat Interfaces
Build your own chat interface powered by your VoxLink assistant:
- Generate a unique identifier for each user session
- Send messages through this endpoint
- Display the AI responses in your interface
Conversation Persistence
Conversations are automatically persisted based on the assistant_id and customer_identifier combination:
- Same identifier: Messages are added to the existing conversation, maintaining full context
- New identifier: A new conversation is created for the customer
- Variables merge: When variables are provided, they are merged with existing conversation variables
Best Practices
- Use consistent identifiers: Always use the same format for customer identifiers (e.g., always E.164 for phone numbers)
- Pass relevant context: Use the
variablesfield to provide customer data that helps the AI personalize responses - Handle rate limits: Implement retry logic with exponential backoff for rate-limited requests
- Store conversation IDs: Save the returned
conversation_idfor later reference or debugging - Monitor costs: Track usage to manage costs, especially for high-volume integrations
Related guides
API Reference
Introduction
Welcome to the VoxLink API
Read guide →API Reference
Authentication
Learn how to authenticate your API requests
Read guide →API Reference
Get current user
Get the authenticated user's profile information
Read guide →API Reference
List assistants
List all assistants for the authenticated user with pagination
Read guide →