Support
The Support API provides an in-app support ticket system. Users can create tickets, add replies, and close tickets. Admin-facing endpoints allow managing all tickets. All endpoints require authentication.
POST /v1/support/tickets
Section titled “POST /v1/support/tickets”Create a new support ticket.
Authentication: Bearer token required.
Request
Section titled “Request”POST /v1/support/ticketsAuthorization: Bearer eyJhbGciOiJSUzI1NiJ9...Content-Type: application/json{ "subject": "Payment not received", "body": "I completed a 30-minute session yesterday but the payment has not appeared in my earnings.", "category": "billing", "priority": "high"}| Field | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | Ticket subject line |
body | string | Yes | Detailed description |
category | string | No | billing, technical, account, other |
priority | string | No | low, normal (default), high, urgent |
Response
Section titled “Response”HTTP/1.1 201 Created{ "id": "01JN2XG6H7I8J9K0L1M2N3O4P5", "subject": "Payment not received", "status": "open", "priority": "high", "category": "billing", "created_at": "2026-03-15T10:00:00Z", "messages": [ { "id": "01JN2XH7I8J9K0L1M2N3O4P5Q6", "body": "I completed a 30-minute session yesterday but the payment has not appeared in my earnings.", "is_admin": false, "created_at": "2026-03-15T10:00:00Z" } ]}GET /v1/support/tickets
Section titled “GET /v1/support/tickets”List the authenticated user’s support tickets.
Authentication: Bearer token required.
Request
Section titled “Request”GET /v1/support/tickets?page=1&per_page=20Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...| Query Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 20) |
Response
Section titled “Response”{ "success": true, "data": [ { "id": "01JN2XG6H7I8J9K0L1M2N3O4P5", "subject": "Payment not received", "status": "in_progress", "priority": "high", "category": "billing", "created_at": "2026-03-15T10:00:00Z", "updated_at": "2026-03-15T11:00:00Z" } ], "pagination": { "page": 1, "per_page": 20, "total": 2, "total_pages": 1 }}GET /v1/support/tickets/:id
Section titled “GET /v1/support/tickets/:id”Get a single ticket with all its messages.
Authentication: Bearer token required. Must be the ticket owner.
GET /v1/support/tickets/01JN2XG6H7I8J9K0L1M2N3O4P5Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...Response
Section titled “Response”{ "id": "01JN2XG6H7I8J9K0L1M2N3O4P5", "subject": "Payment not received", "status": "in_progress", "priority": "high", "category": "billing", "created_at": "2026-03-15T10:00:00Z", "messages": [ { "id": "01JN2XH7I8J9K0L1M2N3O4P5Q6", "body": "I completed a 30-minute session yesterday...", "is_admin": false, "created_at": "2026-03-15T10:00:00Z" }, { "id": "01JN2XI8J9K0L1M2N3O4P5Q6R7", "body": "Thank you for reporting this. I can see the payment was captured. Let me check the payout status.", "is_admin": true, "created_at": "2026-03-15T11:00:00Z" } ]}POST /v1/support/tickets/:id/messages
Section titled “POST /v1/support/tickets/:id/messages”Reply to an existing support ticket.
Authentication: Bearer token required. Must be the ticket owner.
Request
Section titled “Request”POST /v1/support/tickets/01JN2XG6H7I8J9K0L1M2N3O4P5/messagesAuthorization: Bearer eyJhbGciOiJSUzI1NiJ9...Content-Type: application/json{ "body": "Thank you for looking into this. The session was with user janecoach on March 14th at 2pm."}Response
Section titled “Response”HTTP/1.1 201 CreatedReturns the created message object.
POST /v1/support/tickets/:id/close
Section titled “POST /v1/support/tickets/:id/close”Close a support ticket. Only the ticket owner can close it.
Authentication: Bearer token required. Must be the ticket owner.
POST /v1/support/tickets/01JN2XG6H7I8J9K0L1M2N3O4P5/closeAuthorization: Bearer eyJhbGciOiJSUzI1NiJ9...Response
Section titled “Response”Returns the updated ticket with status: "closed".
Ticket Status Flow
Section titled “Ticket Status Flow” open --> in_progress --> resolved --> closed | ^ +------------------------+ (admin can close)| Status | Description |
|---|---|
open | Ticket created, awaiting admin review |
in_progress | Admin is working on the ticket |
resolved | Issue resolved, awaiting user confirmation |
closed | Ticket closed (by user or admin) |
Admin Endpoints
Section titled “Admin Endpoints”The following endpoints are available to users with the admin role under /v1/admin/support/tickets/.
GET /v1/admin/support/tickets
Section titled “GET /v1/admin/support/tickets”List all support tickets. Supports filtering by status.
GET /v1/admin/support/tickets?status=open&page=1&per_page=20Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...| Query Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: open, in_progress, resolved, closed |
page | integer | Page number |
per_page | integer | Results per page |
PATCH /v1/admin/support/tickets/:id
Section titled “PATCH /v1/admin/support/tickets/:id”Update ticket status, priority, or assignment.
PATCH /v1/admin/support/tickets/01JN2XG6H7I8J9K0L1M2N3O4P5Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...Content-Type: application/json{ "status": "in_progress", "priority": "urgent"}POST /v1/admin/support/tickets/:id/messages
Section titled “POST /v1/admin/support/tickets/:id/messages”Admin reply to a ticket. The reply is marked with is_admin: true.
POST /v1/admin/support/tickets/01JN2XG6H7I8J9K0L1M2N3O4P5/messagesAuthorization: Bearer eyJhbGciOiJSUzI1NiJ9...Content-Type: application/json{ "body": "I've checked the payout logs. The payment was captured successfully and a payout has been initiated."}