Skip to content

Support Tickets API ​

Manage customer support tickets in your store. This API allows you to list, view, create, and manage support tickets and their messages.

List Tickets ​

http
GET /api/external/v1/support-tickets

Query Parameters ​

ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerItems per page (default: 15, max: 100)
statusstringFilter: open, in_progress, waiting_customer, resolved, closed
prioritystringFilter: low, normal, high, urgent
categorystringFilter: order_issue, technical, billing, general
assigned_tointegerFilter by assigned staff user ID
unassignedbooleanFilter for unassigned tickets only
searchstringSearch in ticket number, subject, or customer name/email
from_datestringStart date (YYYY-MM-DD)
to_datestringEnd date (YYYY-MM-DD)
sort_bystringSort field: created_at, updated_at, priority, status, last_reply_at
sort_orderstringSort order: asc, desc

Example Request ​

bash
curl -X GET "https://yourstore.pixlpay.net/api/external/v1/support-tickets?status=open&priority=high" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response ​

json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "ticket_number": "TICKET-ABC123456",
      "subject": "Order not delivered",
      "status": "open",
      "priority": "high",
      "category": "order_issue",
      "customer": {
        "id": 1,
        "name": "Player123",
        "email": "player@example.com"
      },
      "assigned_to": null,
      "messages_count": 3,
      "last_reply_at": "2025-01-20T15:30:00Z",
      "created_at": "2025-01-20T10:00:00Z",
      "updated_at": "2025-01-20T15:30:00Z"
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 5,
    "per_page": 15,
    "total": 72
  }
}

Get Single Ticket ​

http
GET /api/external/v1/support-tickets/{id}

Example Request ​

bash
curl -X GET "https://yourstore.pixlpay.net/api/external/v1/support-tickets/1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response ​

json
{
  "success": true,
  "data": {
    "id": 1,
    "ticket_number": "TICKET-ABC123456",
    "subject": "Order not delivered",
    "status": "open",
    "priority": "high",
    "category": "order_issue",
    "customer": {
      "id": 1,
      "name": "Player123",
      "email": "player@example.com"
    },
    "assigned_to": {
      "id": 5,
      "name": "Support Staff"
    },
    "order_id": 42,
    "messages": [
      {
        "id": 1,
        "message": "I purchased a VIP rank but haven't received it yet.",
        "is_internal": false,
        "user": {
          "id": 1,
          "name": "Player123"
        },
        "attachments": [],
        "created_at": "2025-01-20T10:00:00Z"
      },
      {
        "id": 2,
        "message": "Let me check your order status.",
        "is_internal": false,
        "user": {
          "id": 5,
          "name": "Support Staff"
        },
        "attachments": [],
        "created_at": "2025-01-20T10:15:00Z"
      }
    ],
    "last_reply_at": "2025-01-20T15:30:00Z",
    "resolved_at": null,
    "closed_at": null,
    "created_at": "2025-01-20T10:00:00Z",
    "updated_at": "2025-01-20T15:30:00Z"
  }
}

Get Ticket Statistics ​

http
GET /api/external/v1/support-tickets/stats

Example Request ​

bash
curl -X GET "https://yourstore.pixlpay.net/api/external/v1/support-tickets/stats" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response ​

json
{
  "success": true,
  "data": {
    "open": 12,
    "in_progress": 8,
    "waiting_customer": 5,
    "resolved": 45,
    "closed": 230,
    "total": 300
  }
}

Update Ticket Status ​

Change the status of a support ticket.

http
PUT /api/external/v1/support-tickets/{id}/status

Request Body ​

ParameterTypeRequiredDescription
statusstringYesNew status: open, in_progress, waiting_customer, resolved, closed

Example Request ​

bash
curl -X PUT "https://yourstore.pixlpay.net/api/external/v1/support-tickets/1/status" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "in_progress"}'

Response ​

json
{
  "success": true,
  "data": {
    "id": 1,
    "ticket_number": "TICKET-ABC123456",
    "status": "in_progress",
    "updated_at": "2025-01-20T16:00:00Z"
  },
  "message": "Ticket status updated successfully"
}

Add Reply to Ticket ​

Add a message to an existing support ticket.

http
POST /api/external/v1/support-tickets/{id}/messages

Request Body ​

ParameterTypeRequiredDescription
messagestringYesReply message content (min: 5 characters)
is_internalbooleanNoWhether this is an internal note (not visible to customer). Default: false

Example Request ​

bash
curl -X POST "https://yourstore.pixlpay.net/api/external/v1/support-tickets/1/messages" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Your order has been manually delivered. Please check your in-game inventory.",
    "is_internal": false
  }'

Response ​

json
{
  "success": true,
  "data": {
    "message": {
      "id": 3,
      "message": "Your order has been manually delivered. Please check your in-game inventory.",
      "is_internal": false,
      "user": {
        "id": 5,
        "name": "Support Staff"
      },
      "attachments": [],
      "created_at": "2025-01-20T16:30:00Z"
    },
    "ticket": {
      "id": 1,
      "status": "waiting_customer",
      "last_reply_at": "2025-01-20T16:30:00Z"
    }
  },
  "message": "Reply added successfully"
}

Close Ticket ​

Close a support ticket.

http
POST /api/external/v1/support-tickets/{id}/close

Example Request ​

bash
curl -X POST "https://yourstore.pixlpay.net/api/external/v1/support-tickets/1/close" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response ​

json
{
  "success": true,
  "data": {
    "id": 1,
    "ticket_number": "TICKET-ABC123456",
    "status": "closed",
    "closed_at": "2025-01-20T17:00:00Z"
  },
  "message": "Ticket closed successfully"
}

Assign Ticket ​

Assign a ticket to a staff member.

http
POST /api/external/v1/support-tickets/{id}/assign

Request Body ​

ParameterTypeRequiredDescription
staff_user_idintegerYesID of the staff member to assign

Example Request ​

bash
curl -X POST "https://yourstore.pixlpay.net/api/external/v1/support-tickets/1/assign" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"staff_user_id": 5}'

Response ​

json
{
  "success": true,
  "data": {
    "id": 1,
    "ticket_number": "TICKET-ABC123456",
    "status": "in_progress",
    "assigned_to": {
      "id": 5,
      "name": "Support Staff"
    }
  },
  "message": "Ticket assigned successfully"
}

Support Ticket Object ​

FieldTypeDescription
idintegerUnique identifier
ticket_numberstringHuman-readable ticket number (e.g., TICKET-ABC123456)
subjectstringTicket subject line
statusstringCurrent status (see Status Values)
prioritystringPriority level (see Priority Values)
categorystringTicket category (see Category Values)
customerobjectCustomer who created the ticket
assigned_toobjectStaff member assigned to ticket (nullable)
order_idintegerAssociated order ID (nullable)
messagesarrayArray of ticket messages
messages_countintegerTotal message count
last_reply_atstringISO 8601 timestamp of last reply
resolved_atstringISO 8601 timestamp when resolved (nullable)
closed_atstringISO 8601 timestamp when closed (nullable)
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Ticket Message Object ​

FieldTypeDescription
idintegerMessage ID
messagestringMessage content
is_internalbooleanWhether message is an internal note
userobjectUser who sent the message
attachmentsarrayFile attachments
created_atstringISO 8601 timestamp

Status Values ​

StatusDescription
openNew ticket, awaiting staff response
in_progressStaff is actively working on the ticket
waiting_customerAwaiting customer response
resolvedIssue has been resolved
closedTicket is closed

Priority Values ​

PriorityDescription
lowLow priority issue
normalStandard priority (default)
highHigh priority, needs attention soon
urgentCritical issue, immediate attention required

Category Values ​

CategoryLabelDescription
order_issueOrder IssueProblems with orders or deliveries
technicalTechnical ProblemTechnical issues or bugs
billingBillingPayment or billing questions
generalGeneral InquiryGeneral questions or feedback

Required Scopes ​

EndpointScope Required
GET /support-ticketssupport:read
GET /support-tickets/{id}support:read
GET /support-tickets/statssupport:read
PUT /support-tickets/{id}/statussupport:write
POST /support-tickets/{id}/messagessupport:write
POST /support-tickets/{id}/closesupport:write
POST /support-tickets/{id}/assignsupport:write

Errors ​

StatusErrorDescription
400Bad RequestTicket is already closed, or invalid operation
401UnauthorizedInvalid or missing token
403ForbiddenToken lacks required scope
404Not FoundTicket doesn't exist
422Unprocessable EntityValidation failed (e.g., invalid status, message too short)
500Server ErrorInternal server error

Webhook Events ​

Support ticket events can trigger webhooks. Subscribe to these events:

EventDescription
support_ticket.createdNew ticket created
support_ticket.updatedTicket status or assignment changed
support_ticket.message_addedNew message added to ticket
support_ticket.closedTicket was closed

See Webhook Events for payload formats.

Built for game developers, by game developers.