Tickets
The Tickets API allows you to create and manage support tickets programmatically. Use it to integrate Ping's ticketing system into your own applications, CRMs, or internal tools.
All ticket endpoints require an API key with the tickets permission. Pass your key in the X-Ping-Api-Key header.
Create a ticket
Create a new support ticket for your business.
Required fields
- Name
subject- Type
- string
- Description
Short summary of the issue.
- Name
description- Type
- string
- Description
Detailed description of the issue.
Optional fields
- Name
priority- Type
- string
- Description
Ticket priority:
low,medium(default),high, orcritical.
- Name
category- Type
- string
- Description
Issue category (e.g.,
billing,technical,general).
- Name
channel- Type
- string
- Description
Source channel:
api(default),whatsapp,email,phone,in_store,sms,social_media,live_chat.
- Name
country- Type
- string
- Description
Country associated with the ticket.
- Name
store_region- Type
- string
- Description
Store or region for the ticket.
- Name
customer_first_name- Type
- string
- Description
Customer's first name.
- Name
customer_last_name- Type
- string
- Description
Customer's last name.
- Name
customer_phone- Type
- string
- Description
Customer's phone number.
- Name
customer_email- Type
- string
- Description
Customer's email address.
- Name
preferred_language- Type
- string
- Description
Customer's preferred language.
- Name
custom_fields- Type
- object
- Description
Business-specific custom fields (JSON object).
- Name
external_ticket_id- Type
- string
- Description
Reference ID from an external system.
Request
curl -X POST https://api.ping.co.zw/v1/api/tickets \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"subject": "Cannot connect to Starlink",
"description": "Customer reports intermittent connectivity since yesterday",
"channel": "phone",
"country": "Zimbabwe",
"store_region": "Harare",
"category": "technical",
"priority": "high",
"customer_first_name": "Tendai",
"customer_last_name": "Moyo",
"customer_phone": "+263775550142",
"customer_email": "[email protected]",
"custom_fields": {
"starlink_account_email": "[email protected]",
"customer_type": "SPT Retail"
}
}'
Response
{
"result": "success",
"message": "Ticket created",
"ticket": {
"ticketNumber": "TKT-2026-00042",
"publicId": "TKT-A1B2C3D4",
"subject": "Cannot connect to Starlink",
"description": "Customer reports intermittent connectivity since yesterday",
"status": "open",
"priority": "high",
"category": "technical",
"channel": "phone",
"country": "Zimbabwe",
"storeRegion": "Harare",
"customerFirstName": "Tendai",
"customerLastName": "Moyo",
"customerPhone": "+263775550142",
"customerEmail": "[email protected]",
"customFields": {
"starlink_account_email": "[email protected]",
"customer_type": "SPT Retail"
},
"dateCreated": "2026-05-04T08:00:00"
}
}
List tickets
Retrieve a paginated list of tickets for your business. Supports filtering by status, priority, category, channel, country, and search.
Query parameters
- Name
status- Type
- string
- Description
Filter by status:
open,in_progress,resolved,closed.
- Name
priority- Type
- string
- Description
Filter by priority:
low,medium,high,critical.
- Name
category- Type
- string
- Description
Filter by category.
- Name
channel- Type
- string
- Description
Filter by source channel.
- Name
country- Type
- string
- Description
Filter by country.
- Name
store_region- Type
- string
- Description
Filter by store/region.
- Name
search- Type
- string
- Description
Search subject, description, customer name, email, or phone.
- Name
page- Type
- integer
- Description
Page number (default: 1).
- Name
per_page- Type
- integer
- Description
Items per page (default: 50, max: 100).
Request
curl "https://api.ping.co.zw/v1/api/tickets?status=open&priority=high&page=1&per_page=20" \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx"
Response
{
"result": "success",
"tickets": [
{
"ticketNumber": "TKT-2026-00042",
"subject": "Cannot connect to Starlink",
"status": "open",
"priority": "high",
"category": "technical",
"dateCreated": "2026-05-04T08:00:00"
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 1,
"totalPages": 1
}
}
Get a ticket
Retrieve a single ticket by its ticket number.
Request
curl "https://api.ping.co.zw/v1/api/tickets/TKT-2026-00042" \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx"
Response
{
"result": "success",
"ticket": {
"ticketNumber": "TKT-2026-00042",
"publicId": "TKT-A1B2C3D4",
"subject": "Cannot connect to Starlink",
"description": "Customer reports intermittent connectivity since yesterday",
"status": "open",
"priority": "high",
"category": "technical",
"channel": "phone",
"country": "Zimbabwe",
"customerFirstName": "Tendai",
"customerLastName": "Moyo",
"dateCreated": "2026-05-04T08:00:00",
"dateUpdated": "2026-05-04T08:00:00"
}
}
Update a ticket
Update any field on a ticket. Only include the fields you want to change.
Updatable fields
- Name
status- Type
- string
- Description
Update status:
open,in_progress,resolved,closed.
- Name
priority- Type
- string
- Description
Update priority.
- Name
category- Type
- string
- Description
Update category.
- Name
resolution_notes- Type
- string
- Description
Final resolution notes.
- Name
action_taken- Type
- string
- Description
Description of action taken.
- Name
csat_score- Type
- integer
- Description
Customer satisfaction score (1-5).
- Name
tags- Type
- string
- Description
Comma-separated tags.
- Name
custom_fields- Type
- object
- Description
Update custom fields (merges with existing).
Request
curl -X PUT "https://api.ping.co.zw/v1/api/tickets/TKT-2026-00042" \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"status": "resolved",
"resolution_notes": "Replaced faulty ethernet adapter",
"csat_score": 5
}'
Response
{
"result": "success",
"message": "Ticket updated",
"ticket": {
"ticketNumber": "TKT-2026-00042",
"status": "resolved",
"resolutionNotes": "Replaced faulty ethernet adapter",
"csatScore": 5,
"dateUpdated": "2026-05-04T09:30:00"
}
}
Add a comment
Add a comment to a ticket. Comments can be internal (agent-only) or customer-visible.
Request body
- Name
content- Type
- string
- Description
Comment text (required).
- Name
is_internal- Type
- boolean
- Description
If true, comment is only visible to agents (default: false).
- Name
author_type- Type
- string
- Description
Who is commenting:
admin(default) orcustomer.
Request
curl -X POST "https://api.ping.co.zw/v1/api/tickets/TKT-2026-00042/comments" \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"content": "Customer confirmed the issue is resolved after adapter replacement.",
"is_internal": false
}'
Response
{
"result": "success",
"message": "Comment added",
"comment": {
"publicId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"authorType": "admin",
"content": "Customer confirmed the issue is resolved after adapter replacement.",
"isInternal": false,
"dateCreated": "2026-05-04T09:35:00"
}
}
List comments
List all comments on a ticket.
Query parameters
- Name
include_internal- Type
- boolean
- Description
Include internal-only comments (default: true).
Request
curl "https://api.ping.co.zw/v1/api/tickets/TKT-2026-00042/comments" \
-H "X-Ping-Api-Key: pk_live_xxxxxxxxxxxx"
Response
{
"result": "success",
"comments": [
{
"publicId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"authorType": "admin",
"content": "Customer confirmed the issue is resolved.",
"isInternal": false,
"dateCreated": "2026-05-04T09:35:00"
},
{
"publicId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"authorType": "customer",
"content": "Yes, everything is working now. Thank you!",
"isInternal": false,
"dateCreated": "2026-05-04T09:40:00"
}
]
}
