Create a key
Dashboard → Team & Organization → API keys. Copy the key immediately — it is shown once.
Programmatic access to conversations, visitors, and tickets. Pair with outgoing webhooks for real-time automations.
Create an API key from the agent dashboard, then call the API with Bearer authentication.
Dashboard → Team & Organization → API keys. Copy the key immediately — it is shown once.
Send Authorization: Bearer wt_live_… or X-Wiretalk-Key on every request.
Start with GET /me to verify your key, then list conversations or visitors.
All requests require an organization API key.
Authorization: Bearer wt_live_xxxxxxxx
X-Wiretalk-Key: wt_live_xxxxxxxx
Assign only the abilities your integration needs. Missing scopes return 403.
conversations:read
Read conversations and messages
conversations:write
Send messages and close conversations
visitors:read
Read visitors
tickets:read
Read tickets
tickets:write
Create and update tickets
List endpoints return paginated JSON with data, current_page, per_page, and navigation links.
?page=2&per_page=50
Maximum per_page is 100.
Missing or invalid API key
API key lacks required ability or plan feature
Resource not found or not in your organization
Validation error or missing agent_user_id for write actions
Rate limit exceeded
All paths are relative to https://wiretalk.tech/api/v1
/me
Get organization and API key context
curl -X GET "https://wiretalk.tech/api/v1/me" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"organization": {
"id": 1,
"name": "Acme Inc",
"plan": "pro"
},
"api_key": {
"id": 3,
"name": "CRM integration",
"key_prefix": "wt_live_abcd1234",
"abilities": [
"conversations:read",
"visitors:read"
],
"last_used_at": "2026-07-07T10:00:00+00:00"
}
}
/conversations
conversations:read
List visitor conversations for your organization
status stringFilter by status: waiting, active, closed, missed
site_id integerFilter by website ID
page integerPage number (default 1)
per_page integerResults per page (max 100, default 50)
curl -X GET "https://wiretalk.tech/api/v1/conversations" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"data": [
{
"id": 42,
"site_id": 1,
"visitor_id": 9,
"status": "active",
"type": "visitor",
"locale": "en",
"assigned_agent_id": 2,
"started_at": "2026-07-07T09:00:00+00:00",
"visitor": {
"id": 9,
"name": "Jane",
"email": "jane@example.com"
}
}
],
"current_page": 1,
"per_page": 50
}
/conversations/{conversation}
conversations:read
Get a conversation with all messages
curl -X GET "https://wiretalk.tech/api/v1/conversations/{conversation}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 42,
"status": "active",
"messages": [
{
"id": 101,
"body": "Hello, I need help",
"type": "text",
"sender_type": "visitor",
"created_at": "2026-07-07T09:01:00+00:00",
"attachments": []
}
]
}
/conversations/{conversation}/messages
conversations:read
List messages in a conversation (paginated, newest first)
page integerPage number
per_page integerResults per page (max 100)
curl -X GET "https://wiretalk.tech/api/v1/conversations/{conversation}/messages" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"data": [
{
"id": 101,
"body": "Hello",
"sender_type": "visitor"
}
]
}
/conversations/{conversation}/messages
conversations:write
Send an agent reply to a visitor conversation
body
string
required
Message text (max 5000 chars)
agent_user_id
integer
Agent user ID in your organization. Defaults to the user who created the API key.
curl -X POST "https://wiretalk.tech/api/v1/conversations/{conversation}/messages" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 102,
"body": "Thanks for reaching out — we can help with that.",
"type": "text",
"sender_type": "agent",
"sender_id": 2,
"created_at": "2026-07-07T09:05:00+00:00",
"attachments": []
}
/conversations/{conversation}/close
conversations:write
Close a visitor conversation
agent_user_id
integer
Agent user ID performing the close action
curl -X POST "https://wiretalk.tech/api/v1/conversations/{conversation}/close" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 42,
"status": "closed",
"closed_at": "2026-07-07T09:10:00+00:00"
}
/visitors
visitors:read
List visitors across your websites
search stringSearch name, email, or visitor UID
site_id integerFilter by website ID
page integerPage number
per_page integerResults per page (max 100)
curl -X GET "https://wiretalk.tech/api/v1/visitors" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"data": [
{
"id": 9,
"visitor_uid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"site_id": 1,
"name": "Jane Doe",
"email": "jane@example.com",
"country": "IN",
"language": "en",
"last_seen_at": "2026-07-07T09:00:00+00:00"
}
]
}
/visitors/{visitor}
visitors:read
Get visitor profile and activity counts
curl -X GET "https://wiretalk.tech/api/v1/visitors/{visitor}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 9,
"name": "Jane Doe",
"email": "jane@example.com",
"conversations_count": 3,
"tickets_count": 1
}
/tickets
tickets:read
List support tickets
status stringopen, pending, in_progress, resolved, closed
priority stringlow, normal, high, urgent
page integerPage number
per_page integerResults per page (max 100)
curl -X GET "https://wiretalk.tech/api/v1/tickets" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"data": [
{
"id": 7,
"ticket_number": "TKT-2026-00007",
"subject": "Billing question",
"status": "open",
"priority": "normal",
"source": "widget"
}
]
}
/tickets/{ticket}
tickets:read
Get ticket details with comments
curl -X GET "https://wiretalk.tech/api/v1/tickets/{ticket}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 7,
"ticket_number": "TKT-2026-00007",
"subject": "Billing question",
"status": "open",
"comments": [
{
"id": 1,
"body": "I was charged twice.",
"is_internal": false,
"created_at": "2026-07-07T08:00:00+00:00"
}
]
}
/tickets
tickets:write
Create a new ticket (requires ticketing on your plan)
subject
string
required
Ticket subject
description
string
required
Initial ticket message
priority
string
low, normal, high, urgent (default normal)
site_id
integer
Website ID (defaults to first site)
visitor_id
integer
Link to an existing visitor
customer_name
string
Customer name if no visitor
customer_email
string
Customer email if no visitor
curl -X POST "https://wiretalk.tech/api/v1/tickets" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 8,
"ticket_number": "TKT-2026-00008",
"subject": "API integration",
"status": "open",
"priority": "normal",
"source": "api"
}
/tickets/{ticket}/status
tickets:write
Update ticket status
status
string
required
open, pending, in_progress, resolved, closed
agent_user_id
integer
Agent performing the update
curl -X PATCH "https://wiretalk.tech/api/v1/tickets/{ticket}/status" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"id": 7,
"status": "resolved"
}
Outgoing webhooks push real-time events to your HTTPS endpoints. Configure from Team & Organization → Outgoing webhooks.
application/jsonX-Wiretalk-Event — Event name (e.g. message.received)X-Wiretalk-Delivery — Unique delivery UUIDX-Wiretalk-Signature — HMAC SHA-256 of raw body when a signing secret is setsignature = HMAC_SHA256(raw_json_body, signing_secret)
conversation.started
conversation.started
message.received
message.received
message.sent
message.sent
chat.missed
chat.missed
ticket.created
ticket.created
ticket.assigned
ticket.assigned
ticket.status_changed
ticket.status_changed
ticket.priority_changed
ticket.priority_changed
ticket.comment_added
ticket.comment_added
chat.closed
chat.closed
review.submitted
review.submitted
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "message.received",
"created_at": "2026-07-07T09:01:00+00:00",
"data": {
"conversation_id": 42,
"site_id": 1,
"organization_id": 1,
"message": {
"id": 101,
"body": "Hello",
"type": "text"
}
}
}