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
agents:read
Read team agents
sites:read
Read websites / widget sites
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://www.wiretalk.tech/api/v1
/me
Get organization and API key context
curl -X GET "https://www.wiretalk.tech/api/v1/me" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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"
},
"api": {
"version": "v1",
"base_url": "https://app.example.com/api/v1",
"docs_url": "https://app.example.com/docs/api",
"openapi_url": "https://app.example.com/docs/api/openapi.json",
"postman_url": "https://app.example.com/docs/api/postman.json",
"rate_limit_per_minute": 120,
"supports_idempotency": true
}
}
/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://www.wiretalk.tech/api/v1/conversations" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/conversations/{conversation}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 42,
"messages": [
{
"id": 101,
"body": "Hello, I need help",
"type": "text",
"sender_type": "visitor",
"created_at": "2026-07-07T09:01:00+00:00",
"attachments": []
}
],
"status": "active"
}
}
/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://www.wiretalk.tech/api/v1/conversations/{conversation}/messages" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/conversations/{conversation}/messages" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "201",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/conversations/{conversation}/close" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 42,
"closed_at": "2026-07-07T09:10:00+00:00",
"status": "closed"
}
}
/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://www.wiretalk.tech/api/v1/visitors" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/visitors/{visitor}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/tickets" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"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://www.wiretalk.tech/api/v1/tickets/{ticket}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 7,
"ticket_number": "TKT-2026-00007",
"subject": "Billing question",
"comments": [
{
"id": 1,
"body": "I was charged twice.",
"is_internal": false,
"created_at": "2026-07-07T08:00:00+00:00"
}
],
"status": "open"
}
}
/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://www.wiretalk.tech/api/v1/tickets" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "201",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 8,
"ticket_number": "TKT-2026-00008",
"subject": "API integration",
"priority": "normal",
"source": "api",
"status": "open"
}
}
/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://www.wiretalk.tech/api/v1/tickets/{ticket}/status" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 7,
"status": "resolved"
}
}
/agents
agents:read
List team agents in your organization
role stringFilter by role: owner, admin, agent
page integerPage number
per_page integerResults per page (max 100)
curl -X GET "https://www.wiretalk.tech/api/v1/agents" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": [
{
"id": 2,
"name": "Alex Agent",
"email": "alex@example.com",
"role": "agent",
"status": "online"
}
]
}
/agents/{agent}
agents:read
Get a single agent profile
curl -X GET "https://www.wiretalk.tech/api/v1/agents/{agent}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 2,
"name": "Alex Agent",
"email": "alex@example.com",
"role": "agent",
"last_seen_at": "2026-07-07T09:30:00+00:00",
"status": "online"
}
}
/sites
sites:read
List websites (widget sites) in your organization
is_active booleanFilter by active status
page integerPage number
per_page integerResults per page (max 100)
curl -X GET "https://www.wiretalk.tech/api/v1/sites" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": [
{
"id": 1,
"name": "Marketing site",
"domain": "example.com",
"is_active": true
}
]
}
/sites/{site}
sites:read
Get a single website
curl -X GET "https://www.wiretalk.tech/api/v1/sites/{site}" -H "Authorization: Bearer wt_live_YOUR_KEY" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"id": 1,
"name": "Marketing site",
"domain": "example.com",
"is_active": true,
"timezone": "Asia/Kolkata",
"content_import": {
"status": "completed",
"progress": 100,
"progress_label": "Import complete",
"summary": {
"pages": 24,
"kb_articles": 18,
"bot_replies": 12
}
}
}
Server-to-server auto login for the chat widget visitor session: your backend calls this with the visitor email after the widget has initialized (you already have widget_key and visitor_uid). Skips OTP and in-widget prompts. Requires visitor account login and data lookup configured on the site. Authenticate with Per-organization secret — header X-Wiretalk-Visitor-Login-Secret: wt_vlogin_… (or Authorization: Bearer). Generate in agent settings (owner/admin). Never embed in the widget or mobile app.. Base URL: https://www.wiretalk.tech/api
/visitor-account-login/trusted
Log in a visitor by email using the organization trusted secret
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID from widget init
email
string
required
Email matched against parent resolver lookup columns
curl -X POST "https://www.wiretalk.tech/api/visitor-account-login/trusted" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","email":"jane@example.com"}'
{
"status": true,
"message": "You are logged in successfully.",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"success": true,
"reply_body": "Welcome back.",
"visitor_profile": {
"email": "jane@example.com",
"account_login": {
"logged_in": true,
"identifier": "jane@example.com",
"verified_at": "2026-09-06T08:00:00+00:00"
}
}
}
/visitor-trusted-login
Trusted login status (enabled, prefix, endpoint URL)
curl -X GET "https://www.wiretalk.tech/api/agent/visitor-trusted-login" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"trusted_login": {
"enabled": true,
"secret_configured": true,
"secret_prefix": "wt_vlogin_ab",
"header": "X-Wiretalk-Visitor-Login-Secret",
"endpoint": "https://www.wiretalk.tech/api/visitor-account-login/trusted"
}
}
/visitor-trusted-login/secret
Generate or rotate trusted login secret (shown once)
curl -X POST "https://www.wiretalk.tech/api/agent/visitor-trusted-login/secret" -H "Accept: application/json"
{
"status": true,
"message": "Copy this secret now. It will not be shown again.",
"code": "201",
"datetime": "2026-09-08T12:00:00+00:00",
"plain_text_secret": "wt_vlogin_abcdefghijklmnopqrstuvwxyz0123456789",
"trusted_login": {
"enabled": true,
"secret_configured": true
}
}
/visitor-trusted-login
Enable or disable trusted login (secret must exist to enable)
enabled
boolean
required
Turn trusted API login on or off
curl -X PATCH "https://www.wiretalk.tech/api/agent/visitor-trusted-login" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"enabled":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"trusted_login": {
"enabled": false,
"secret_configured": true
}
}
Setup guide: Appointment booking docs
Bootstraps the embed and optionally pre-fills visitor identity for the pre-chat form. Pass name, email, and phone on init when your site already knows who is browsing (logged-in portal users, CRM context, etc.). Authenticate with Widget key + visitor UID from session bootstrap (no public API key). Base URL: https://www.wiretalk.tech/api/widget
/init
Initialize widget session and load config
widget_key
string
required
Site widget key
visitor_uid
string
Existing visitor UUID to resume a session
locale
string
Widget language code (e.g. en, hi)
url
string
Current page URL for domain checks and tracking
page_title
string
Current page title
visitor_name
string
Known visitor name — pre-fills pre-chat and visitor profile
visitor_email
string
Known visitor email
visitor_phone
string
Known visitor phone or mobile number
visitor_mobile
string
Alias for visitor_phone
mobile
string
Alias for visitor_phone
platform
string
Mobile platform: android, ios, react-native, flutter, capacitor, cordova
app_id
string
Mobile app bundle ID — must match app:… in Allowed Domains when platform is set
app_version
string
App version string for visitor analytics
app_build
string
App build number for visitor analytics
curl -X POST "https://www.wiretalk.tech/api/widget/init" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","locale":"…","url":"https://example.com/support","page_title":"…","visitor_name":"Jane Doe","visitor_email":"jane@example.com","visitor_phone":"9876543210","visitor_mobile":"…","mobile":"…","platform":"…","app_id":"…","app_version":"…","app_build":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"visitor_uid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"visitor_id": 9,
"session_token": "sess_abc123",
"conversation_id": 42,
"widget_config": {
"pre_chat_form": {
"enabled": true,
"delay_minutes": 10,
"fields": [
{
"key": "name",
"type": "text",
"label": "Name",
"required": true,
"builtin": true
}
]
},
"visitor_account_login": {
"enabled": true,
"menu_label": "Account login",
"logout_label": "Log out"
},
"filter_record": {
"enabled": true,
"button_label": "Search your data",
"filters": [
{
"key": "txn",
"label": "Transaction ID",
"type": "text"
},
{
"key": "date",
"label": "Date range",
"type": "date_range"
}
],
"empty_reply": "No records found.",
"login_required_reply": "Please log in to search your data."
}
},
"visitor_profile": {
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "9876543210",
"profile_complete": true,
"pre_chat_submitted": false,
"account_login": {
"logged_in": false,
"identifier": null,
"verified_at": null
}
}
}
/profile
Submit pre-chat form fields for the current visitor
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID from init response
name
string
Built-in pre-chat field when enabled
email
string
Built-in pre-chat field when enabled
phone
string
Built-in pre-chat field when enabled
custom_fields
object
Custom pre-chat field values keyed by field key
curl -X POST "https://www.wiretalk.tech/api/widget/profile" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","name":"Jane Doe","email":"jane@example.com","phone":"9876543210","custom_fields":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"visitor_profile": {
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "9876543210",
"profile_complete": true,
"pre_chat_submitted": true
}
}
Setup guide: Appointment booking docs
Authenticate visitors against your parent account table and let them search scoped records (transactions, status, dates) from configured tables. Requires Data lookup enabled in Widget Settings. Authenticate with Widget key + visitor UID from session bootstrap (no public API key). Base URL: https://www.wiretalk.tech/api/widget
/account-login
Log in a visitor with email or mobile identifier
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID from init response
identifier
string
required
Email or mobile matched against parent resolver lookup columns
curl -X POST "https://www.wiretalk.tech/api/widget/account-login" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","identifier":"…"}'
{
"status": true,
"message": "You are logged in successfully.",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"success": true,
"otp_required": false,
"reply_body": "Welcome back, Jane.",
"follow_up_replies": [
{
"type": "button",
"label": "Export This Month",
"emoji": "📊"
},
{
"type": "filter_record",
"label": "Search your data",
"emoji": "🔍"
}
],
"visitor_profile": {
"name": "Jane Doe",
"email": "jane@example.com",
"account_login": {
"logged_in": true,
"identifier": "jane@example.com",
"verified_at": "2026-09-06T08:00:00+00:00"
}
}
}
/account-login/verify-otp
Verify email OTP when login requires OTP confirmation
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID
otp
string
required
One-time code sent to visitor email
curl -X POST "https://www.wiretalk.tech/api/widget/account-login/verify-otp" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","otp":"…"}'
{
"status": true,
"message": "Login verified.",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"success": true,
"reply_body": "You are logged in successfully.",
"follow_up_replies": [],
"visitor_profile": {
"account_login": {
"logged_in": true,
"identifier": "jane@example.com",
"verified_at": "2026-09-06T08:01:00+00:00"
}
}
}
/account-logout
End the visitor account login session
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID
curl -X POST "https://www.wiretalk.tech/api/widget/account-logout" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479"}'
{
"status": true,
"message": "Logged out.",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"success": true,
"visitor_profile": {
"account_login": {
"logged_in": false,
"identifier": null,
"verified_at": null
}
}
}
/filter-records/search
Search logged-in visitor records across configured tables
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID — must be logged in via account login
filters
object
Filter values keyed by preset: txn, utr, status, mobile, date_from, date_to
curl -X POST "https://www.wiretalk.tech/api/widget/filter-records/search" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","filters":"…"}'
{
"status": true,
"message": "Results",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"success": true,
"body": "<div class=\"wt-filter-record-section\"><h4 class=\"wt-filter-record-section-title\">Transactions</h4>{{WTDL_TABLE}}…{{/WTDL_TABLE}}</div>"
}
/data-lookup/paginate
Paginate rows from a lookup rule reply in the widget
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID
conversation_id
integer
required
Open conversation ID
rule_id
string
required
Lookup rule ID from the reply metadata
page
integer
required
Page number (1-based)
trigger_message
integer
Originating message ID for audit
curl -X POST "https://www.wiretalk.tech/api/widget/data-lookup/paginate" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","conversation_id":42,"rule_id":"…","page":"…","trigger_message":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"reply_body": "{{WTDL_TABLE}}<table class=\"wt-dl-table\">…</table>{{/WTDL_TABLE}}",
"page": 2,
"has_more": false
}
/data-lookup/row-action
Run a configured row action (e.g. open detail view)
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID
conversation_id
integer
required
Conversation ID
rule_id
string
required
Lookup rule ID
action_id
string
required
Row action ID from rule config
row
object
required
Selected row values from the table
curl -X POST "https://www.wiretalk.tech/api/widget/data-lookup/row-action" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","conversation_id":42,"rule_id":"…","action_id":"…","row":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"reply_body": "Invoice #INV-1042 — status: paid"
}
Setup guide: Appointment booking docs
Powers the in-chat appointment picker: list slots for a date and confirm bookings. Slots include availability status so booked times can be shown as disabled in the UI. Authenticate with Widget key + visitor UID from session bootstrap (no public API key). Base URL: https://www.wiretalk.tech/api/widget
/appointments/availability
List bookable slots for a calendar date
widget_key
string
required
Site widget key
date
string
required
Date in YYYY-MM-DD (site timezone)
curl -X POST "https://www.wiretalk.tech/api/widget/appointments/availability" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","date":"2026-08-27"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"date": "2026-08-27",
"timezone": "Asia/Kolkata",
"slots": [
{
"starts_at": "2026-08-27T09:00:00+05:30",
"ends_at": "2026-08-27T09:30:00+05:30",
"label": "9:00 AM",
"available": true,
"status": "available"
},
{
"starts_at": "2026-08-27T09:30:00+05:30",
"ends_at": "2026-08-27T10:00:00+05:30",
"label": "9:30 AM",
"available": false,
"status": "booked"
}
]
}
/appointments/book
Book an appointment slot for the current visitor
widget_key
string
required
Site widget key
visitor_uid
string
required
Visitor UUID from widget session
scheduled_at
string
required
ISO 8601 start time of the selected slot
conversation_id
integer
Link booking to an open conversation
visitor_name
string
Required if visitor email is omitted
visitor_email
string
Required if visitor name is omitted
visitor_phone
string
Optional phone number
button_label
string
Source button label for analytics
bot_template_id
integer
Originating bot template ID
curl -X POST "https://www.wiretalk.tech/api/widget/appointments/book" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"widget_key":"YOUR_WIDGET_KEY","visitor_uid":"f47ac10b-58cc-4372-a567-0e02b2c3d479","scheduled_at":"2026-08-27T09:00:00+05:30","conversation_id":42,"visitor_name":"Jane Doe","visitor_email":"jane@example.com","visitor_phone":"9876543210","button_label":"…","bot_template_id":"…"}'
{
"status": true,
"message": "Success",
"code": "201",
"datetime": "2026-09-08T12:00:00+00:00",
"appointment": {
"id": 12,
"status": "confirmed",
"scheduled_at": "2026-08-27T09:00:00+05:30",
"ends_at": "2026-08-27T09:30:00+05:30",
"timezone": "Asia/Kolkata",
"formatted": "Thursday, Aug 27, 2026 at 9:00 AM",
"visitor_name": "Jane Doe",
"visitor_email": "jane@example.com"
}
}
Setup guide: Appointment booking docs
Manage appointment settings, list upcoming bookings, and update status from the agent workspace or custom integrations. Authenticate with Sanctum bearer token or agent session cookie. Base URL: https://www.wiretalk.tech/api/agent
/appointment-settings
Get appointment slot rules for the organization site
curl -X GET "https://www.wiretalk.tech/api/agent/appointment-settings" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"settings": {
"enabled": true,
"duration_minutes": 30,
"buffer_minutes": 0,
"slot_interval_minutes": 30,
"advance_days": 14,
"min_notice_hours": 2
},
"timezone": "Asia/Kolkata"
}
/appointment-settings
Update appointment slot rules
enabled
boolean
Enable or disable widget booking
duration_minutes
integer
Slot length (5–240)
buffer_minutes
integer
Gap between bookings (0–120)
slot_interval_minutes
integer
Grid step (5–120)
advance_days
integer
How far ahead visitors can book (1–90)
min_notice_hours
integer
Minimum lead time (0–168)
curl -X PATCH "https://www.wiretalk.tech/api/agent/appointment-settings" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"enabled":"…","duration_minutes":"…","buffer_minutes":"…","slot_interval_minutes":"…","advance_days":"…","min_notice_hours":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"settings": {
"enabled": true,
"duration_minutes": 30,
"advance_days": 14
},
"timezone": "Asia/Kolkata"
}
/appointments
List appointments for your organization
status stringpending, confirmed, cancelled, completed
from stringFilter from date (YYYY-MM-DD)
to stringFilter to date (YYYY-MM-DD)
curl -X GET "https://www.wiretalk.tech/api/agent/appointments" -H "Accept: application/json"
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": [
{
"id": 12,
"status": "confirmed",
"scheduled_at": "2026-08-27T09:00:00+05:30",
"formatted": "Thursday, Aug 27, 2026 9:00 AM",
"visitor_name": "Jane Doe",
"visitor_email": "jane@example.com",
"conversation_id": 42
}
]
}
/appointments/{appointment}
Update appointment status or internal notes
status
string
required
pending, confirmed, cancelled, completed
notes
string
Internal agent notes (max 2000 chars)
curl -X PATCH "https://www.wiretalk.tech/api/agent/appointments/{appointment}" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"status":"confirmed","notes":"…"}'
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-08T12:00:00+00:00",
"data": {
"id": 12,
"notes": "Visitor rescheduled by email",
"status": "cancelled"
}
}
Setup guide: Appointment booking docs
Wiretalk exposes several API surfaces. The public REST API below is for integrations with scoped API keys. Widget, agent, and join APIs use separate auth models.
Server-to-server integrations for conversations, visitors, and tickets. Scoped abilities per key. Documented endpoints below.
GET /api/v1/meGET /api/v1/conversationsPOST /api/v1/conversations/{id}/messagesGET /api/v1/ticketsPowers the embedded chat widget: session init, messages, tickets, KB articles, media calls, visitor account login, filter record search, data lookup pagination, pre-chat profile, in-chat Book a demo appointments, and appointment booking.
POST /api/widget/initPOST /api/widget/profilePOST /api/widget/account-loginPOST /api/widget/account-login/verify-otpPOST /api/visitor-account-login/trustedPOST /api/widget/filter-records/searchPOST /api/widget/data-lookup/paginateGET/POST /api/widget/conversations/{id}/messagesPOST /api/widget/appointments/availabilityPOST /api/widget/appointments/bookGET /api/widget/kb/articlesPOST /api/widget/ticketsFull agent workspace: inbox, settings, omnichannel, group meetings, appointments, remote desktop, website content import, billing, and organization admin. Not exposed via public API keys.
GET /api/agent/conversationsGET/POST/PATCH/DELETE /api/agent/canned-responsesGET /api/agent/appointmentsPATCH /api/agent/appointment-settingsGET/POST /api/agent/channel-connectionsGET/POST /api/agent/group-meetingsPOST /api/agent/socket-tokenGET /api/agent/sitesPOST /api/agent/sites/{site}/import-contentPOST /api/agent/conversations/{id}/remote-desktop/sessionsPOST /api/remote-desktop/pairGET /api/agent/visitor-trusted-loginPOST /api/agent/visitor-trusted-login/secretGuest join without Wiretalk accounts. Used by /m/{code} and /meet/{code} join pages.
GET /api/group-meetings/{id}POST /api/group-meetings/{id}/join-requestGET /api/group-meetings/{id}/participants/{id}/statusPOST /api/group-meetings/{id}/participants/{id}/sessionInbound message delivery from WhatsApp, SMS, email, and Meta channels. Configure callback URLs in each provider console.
GET/POST /webhooks/omnichannel/meta/{channelConnection}POST /webhooks/omnichannel/sms/{channelConnection}POST /webhooks/omnichannel/email/{channelConnection}Paid features return 403 when not on your plan. Expired subscriptions may return 402 on widget routes after the grace period. See Billing & plans.
Audit logs, GDPR, SSO, security, billing, AI governance, queue health, and public status checks. Every JSON API response includes top-level status, message, code, and datetime (ISO 8601). checked_at mirrors datetime on health endpoints.
Audit logs, GDPR privacy, SSO, security policy, billing profile, and AI governance. All JSON API responses include top-level status (boolean), message, code (HTTP status string such as 200 or 401), and datetime (ISO 8601). Errors may also include error_code for machine-readable slugs.
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-06T14:30:00+00:00"
}
GET /api/agent/audit-logsGET /api/agent/privacy/requestsGET /api/agent/privacy/retention-settingsGET /api/agent/ssoGET /api/agent/securityGET /api/agent/billing/profileGET /api/agent/billing/usageGET /api/agent/ai-governancePlatform-wide enterprise overview, audit logs, and queue health. Health endpoints return operational status values.
{
"status": "operational",
"status_label": "Operational",
"datetime": "2026-09-06T14:30:00+00:00",
"checked_at": "2026-09-06T14:30:00+00:00"
}
GET /api/super-admin/enterpriseGET /api/super-admin/audit-logsGET /api/super-admin/queue-healthPOST /api/super-admin/queue-health/retry-failedLiveness, readiness, public status page JSON, and Socket.IO health checks. All include status and datetime.
{
"status": true,
"message": "Success",
"code": "200",
"datetime": "2026-09-06T14:30:00+00:00"
}
GET /health/liveGET /health/readyGET /status.jsonGET {socket_url}/healthOutgoing 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"
}
}
}