API Reference
Complete API reference for Transactional Support
Support API Reference
Complete reference for all Support API endpoints.
Authentication
All API requests require an API key:
curl -X GET https://api.usetransactional.com/support/conversations \
-H "X-API-Key: your-api-key"Base URL
https://api.usetransactional.com/supportConversations
List Conversations
GET /conversationsQuery parameters:
| Parameter | Type | Description |
|---|---|---|
status | string | open, pending, resolved, closed |
inboxId | string | Filter by inbox |
assigneeId | string | Filter by assignee |
visitorId | string | Filter by visitor |
page | number | Page number (default: 1) |
limit | number | Items per page (default: 20) |
Get Conversation
GET /conversations/:conversationIdReply to Conversation
POST /conversations/:conversationId/replyRequest body:
{
"message": "Thanks for reaching out!",
"type": "reply"
}| Field | Type | Required | Description |
|---|---|---|---|
message | string | Yes | Message content |
type | string | No | reply (default) or note |
attachments | array | No | File attachments |
Assign Conversation
POST /conversations/:conversationId/assignRequest body:
{
"assigneeId": "user-123"
}Update Conversation Status
PUT /conversations/:conversationIdRequest body:
{
"status": "resolved"
}Snooze Conversation
POST /conversations/:conversationId/snoozeRequest body:
{
"until": "2024-01-16T09:00:00Z"
}Add Tags
POST /conversations/:conversationId/tagsRequest body:
{
"tags": ["billing", "urgent"]
}Remove Tag
DELETE /conversations/:conversationId/tags/:tagIdVisitors
List Visitors
GET /visitorsQuery parameters:
| Parameter | Type | Description |
|---|---|---|
search | string | Search by name or email |
identified | boolean | Filter by identification status |
companyId | string | Filter by company |
page | number | Page number |
limit | number | Items per page |
Get Visitor
GET /visitors/:visitorIdUpdate Visitor
PUT /visitors/:visitorIdRequest body:
{
"name": "John Doe",
"email": "john@example.com",
"attributes": {
"plan": "enterprise"
}
}Delete Visitor
DELETE /visitors/:visitorIdGet Visitor Sessions
GET /visitors/:visitorId/sessionsGet Visitor Events
GET /visitors/:visitorId/eventsGet Visitor Conversations
GET /visitors/:visitorId/conversationsAssociate Visitor with Company
PUT /visitors/:visitorId/companyRequest body:
{
"companyId": "company-123"
}Export Visitor Data
GET /visitors/:visitorId/exportAnonymize Visitor
POST /visitors/:visitorId/anonymizeCompanies
List Companies
GET /companiesQuery parameters:
| Parameter | Type | Description |
|---|---|---|
search | string | Search by name |
industry | string | Filter by industry |
page | number | Page number |
limit | number | Items per page |
Get Company
GET /companies/:companyIdCreate Company
POST /companiesRequest body:
{
"id": "company-123",
"name": "Acme Inc",
"website": "https://acme.com",
"attributes": {
"plan": "enterprise",
"industry": "Technology"
}
}Update Company
PUT /companies/:companyIdDelete Company
DELETE /companies/:companyIdGet Company Users
GET /companies/:companyId/usersGet Company Conversations
GET /companies/:companyId/conversationsGet Company Stats
GET /companies/:companyId/statsAdd Company Note
POST /companies/:companyId/notesRequest body:
{
"content": "Enterprise renewal coming up in Q1"
}Inboxes
List Inboxes
GET /inboxesGet Inbox
GET /inboxes/:inboxIdCreate Inbox
POST /inboxesRequest body:
{
"name": "Technical Support",
"description": "Technical issues and questions",
"email": "support@example.com"
}Update Inbox
PUT /inboxes/:inboxIdDelete Inbox
DELETE /inboxes/:inboxIdGet Inbox Stats
GET /inboxes/:inboxId/statsList Inbox Members
GET /inboxes/:inboxId/membersAdd Inbox Member
POST /inboxes/:inboxId/membersRequest body:
{
"userId": "user-123",
"role": "agent"
}Remove Inbox Member
DELETE /inboxes/:inboxId/members/:userIdUpdate Member Availability
PUT /inboxes/:inboxId/members/:userId/availabilityRequest body:
{
"status": "available"
}Canned Responses
List Canned Responses
GET /canned-responsesGet Canned Response
GET /canned-responses/:responseIdCreate Canned Response
POST /canned-responsesRequest body:
{
"title": "Greeting",
"shortcut": "/hello",
"content": "Hi {{visitor.name}}! How can I help?"
}Update Canned Response
PUT /canned-responses/:responseIdDelete Canned Response
DELETE /canned-responses/:responseIdWebhooks
List Webhooks
GET /webhooksCreate Webhook
POST /webhooksRequest body:
{
"url": "https://your-server.com/webhook",
"events": ["conversation.created", "message.received"],
"secret": "your-webhook-secret"
}Delete Webhook
DELETE /webhooks/:webhookIdGet Webhook Logs
GET /webhooks/:webhookId/logsAnalytics
Get Overview Stats
GET /analytics/overviewQuery parameters:
| Parameter | Type | Description |
|---|---|---|
startDate | string | Start date (ISO 8601) |
endDate | string | End date (ISO 8601) |
Get Conversation Analytics
GET /analytics/conversationsGet Team Performance
GET /analytics/teamGet Response Time Analytics
GET /analytics/response-timeError Responses
All endpoints return errors in this format:
{
"error": {
"code": "NOT_FOUND",
"message": "Conversation not found"
}
}Error Codes
| Code | HTTP Status | Description |
|---|---|---|
UNAUTHORIZED | 401 | Invalid or missing API key |
FORBIDDEN | 403 | Access denied |
NOT_FOUND | 404 | Resource not found |
VALIDATION_ERROR | 400 | Invalid request data |
RATE_LIMITED | 429 | Too many requests |
INTERNAL_ERROR | 500 | Server error |
Rate Limits
| Endpoint Type | Rate Limit |
|---|---|
| Standard APIs | 100 req/min |
| Webhooks | 1000 req/min |
Webhook Events
| Event | Description |
|---|---|
conversation.created | New conversation started |
conversation.assigned | Conversation assigned to agent |
conversation.resolved | Conversation marked resolved |
conversation.closed | Conversation closed |
message.received | New message from visitor |
message.sent | Agent sent a message |
visitor.identified | Visitor was identified |
visitor.updated | Visitor attributes updated |
Next Steps
- Chat Widget - Widget SDK documentation
- Inboxes - Managing inboxes
- Conversations - Handling conversations
On This Page
- Authentication
- Base URL
- Conversations
- List Conversations
- Get Conversation
- Reply to Conversation
- Assign Conversation
- Update Conversation Status
- Snooze Conversation
- Add Tags
- Remove Tag
- Visitors
- List Visitors
- Get Visitor
- Update Visitor
- Delete Visitor
- Get Visitor Sessions
- Get Visitor Events
- Get Visitor Conversations
- Associate Visitor with Company
- Export Visitor Data
- Anonymize Visitor
- Companies
- List Companies
- Get Company
- Create Company
- Update Company
- Delete Company
- Get Company Users
- Get Company Conversations
- Get Company Stats
- Add Company Note
- Inboxes
- List Inboxes
- Get Inbox
- Create Inbox
- Update Inbox
- Delete Inbox
- Get Inbox Stats
- List Inbox Members
- Add Inbox Member
- Remove Inbox Member
- Update Member Availability
- Canned Responses
- List Canned Responses
- Get Canned Response
- Create Canned Response
- Update Canned Response
- Delete Canned Response
- Webhooks
- List Webhooks
- Create Webhook
- Delete Webhook
- Get Webhook Logs
- Analytics
- Get Overview Stats
- Get Conversation Analytics
- Get Team Performance
- Get Response Time Analytics
- Error Responses
- Error Codes
- Rate Limits
- Webhook Events
- Next Steps