API reference

API Reference

The current public v1 API. Endpoints listed under “Live endpoints” are implemented in the codebase today; everything else is clearly marked planned or app-managed.

Base URL

All requests are served from the Tixallo apex over HTTPS:

https://tixallo.com/api/v1

Authentication

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/json

Live endpoints

These endpoints exist in the production codebase and accept real traffic today.

List tickets

GET/api/v1/tickets

Returns 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 between 1 and 50. Defaults to 20.
  • statusplanned. Server-side filtering by status is not yet implemented; filter client-side for now.
  • cursor / pageplanned. Pagination is not yet exposed; results are capped at limit.

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

POST/api/v1/tickets

Creates 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

GET/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. Returns 404 if 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

POST/api/v1/tickets/{ticket_id}/messages

Appends 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. Returns 404 if not in your workspace and 409 if 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". Selecting agent or 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_email is supplied. The customer record is returned alongside ticket fetches. A standalone /api/v1/customers CRUD surface is planned.
  • Companies — surfaced as customer.company on the ticket-fetch response. A standalone /api/v1/companies endpoint 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.