Base URL
All requests are served from the Tixallo apex over HTTPS:
https://tixallo.com/api/v1Authentication
Every live endpoint requires a workspace-scoped API key sent as a Bearer token. Unauthenticated requests return HTTP 401.
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonLive endpoints
These endpoints exist in the production codebase and accept real traffic today.
List tickets
/api/v1/ticketsReturns the most recent tickets for the authenticated workspace, newest first. Tickets that have been merged into another ticket are excluded.
Auth required: Yes.
Query parameters
limit— optional. Integer between1and50. Defaults to20.status— planned. Server-side filtering by status is not yet implemented; filter client-side for now.cursor/page— planned. Pagination is not yet exposed; results are capped atlimit.
Example request
curl https://tixallo.com/api/v1/tickets?limit=5 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Example response (HTTP 200)
{
"data": [
{
"id": "9f6c1a3e-2b8d-4e7f-9a1c-d4b2e6c8a1b3",
"ticket_number": 1042,
"subject": "Cannot log in after password reset",
"description": "I keep getting redirected back to the login page…",
"status": "new",
"priority": "medium",
"source": "api",
"created_at": "2026-05-04T10:55:02Z",
"updated_at": "2026-05-04T10:55:02Z",
"customer_id": "c1a2b3d4-…"
}
]
}Create a ticket
/api/v1/ticketsCreates a new ticket in the authenticated workspace.
Auth required: Yes.
Request body
subject— required, string, 1–300 chars.description— required, string, 1–20 000 chars.customer_email— required, valid email, max 255 chars. Tixallo looks up the customer by email within your workspace and creates one if it doesn't exist.customer_name— optional, string, 1–120 chars. Used when a new customer is created.priority— optional. One of"low","medium","high","urgent". Defaults to"medium".
Example request
curl https://tixallo.com/api/v1/tickets \
-X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Webhook delivery delayed",
"description": "Our order.created webhook took 12s to fire.",
"customer_email": "alex@example.com",
"customer_name": "Alex Example",
"priority": "high"
}'Example response (HTTP 201)
{
"data": {
"id": "9f6c1a3e-2b8d-4e7f-9a1c-d4b2e6c8a1b3",
"ticket_number": 1043,
"subject": "Webhook delivery delayed",
"description": "Our order.created webhook took 12s to fire.",
"status": "new",
"priority": "high",
"source": "api",
"created_at": "2026-05-04T10:57:18Z",
"updated_at": "2026-05-04T10:57:18Z",
"customer_id": "c1a2b3d4-…"
}
}On success, Tixallo dispatches a ticket.created webhook to every active endpoint subscribed to the event. See webhooks for the payload shape.
Get a ticket
/api/v1/tickets/{ticket_id}Fetches a single ticket and its public conversation. Internal notes are never returned over the public API.
Auth required: Yes.
Path parameter
ticket_id— required, the ticket's UUID. Returns404if the ticket doesn't belong to your workspace.
Example request
curl https://tixallo.com/api/v1/tickets/9f6c1a3e-2b8d-4e7f-9a1c-d4b2e6c8a1b3 \
-H "Authorization: Bearer YOUR_API_KEY"Example response (HTTP 200)
{
"data": {
"id": "9f6c1a3e-2b8d-4e7f-9a1c-d4b2e6c8a1b3",
"ticket_number": 1042,
"subject": "Cannot log in after password reset",
"description": "I keep getting redirected back to the login page…",
"status": "new",
"priority": "medium",
"source": "api",
"created_at": "2026-05-04T10:55:02Z",
"updated_at": "2026-05-04T10:55:02Z",
"customer_id": "c1a2b3d4-…",
"customer": {
"name": "Alex Example",
"email": "alex@example.com",
"company": "Example Ltd"
},
"messages": [
{
"id": "m1…",
"author_type": "customer",
"body": "I keep getting redirected back to the login page.",
"created_at": "2026-05-04T10:55:02Z"
}
]
}
}Add a message to a ticket
/api/v1/tickets/{ticket_id}/messagesAppends a public, customer-attributed message onto an existing ticket's conversation. Useful for forwarding inbound replies from other systems.
Auth required: Yes.
Path parameter
ticket_id— required, UUID of the target ticket. Returns404if not in your workspace and409if the ticket has been merged.
Request body
body— required, string, 1–20 000 chars. The message text.- Author / agent overrides — planned. Today every message posted via this endpoint is recorded with
author_type: "customer". Selectingagentor attaching an author identity is not yet supported.
Example request
curl https://tixallo.com/api/v1/tickets/9f6c1a3e-2b8d-4e7f-9a1c-d4b2e6c8a1b3/messages \
-X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "body": "Thanks — could you share a screenshot?" }'Example response (HTTP 201)
{
"data": {
"id": "m2-7c1a-4d…",
"author_type": "customer",
"body": "Thanks — could you share a screenshot?",
"created_at": "2026-05-04T11:02:48Z"
}
}On success, Tixallo dispatches a ticket.message.created webhook to subscribed endpoints.
Planned or app-managed resources
The following resources do not currently expose dedicated public v1 CRUD endpoints. They are either available indirectly (via the ticket payload), managed inside the Tixallo app, or planned for a future release.
- Customers — currently created and resolved automatically through the create- ticket flow when
customer_emailis supplied. The customer record is returned alongside ticket fetches. A standalone/api/v1/customersCRUD surface is planned. - Companies — surfaced as
customer.companyon the ticket-fetch response. A standalone/api/v1/companiesendpoint is planned. - Inboxes — app-managed. Inboxes are configured inside Tixallo; tickets created via the API land in your workspace's default inbox routing.
- Webhooks — app-managed. Tixallo dispatches webhook events server-side, but webhook endpoint CRUD (create, list, delete) is done from inside the Tixallo app, not via the public API. See webhooks.
Errors
See error handling for the full status-code matrix and the current error response shape.