Tickets API
Tickets represent individual tasks, issues, or work items. They can be standalone client requests or grouped under projects. Tickets support priorities, statuses, SLAs, and time tracking.
The Ticket Object
{
"id": "tkt_cuid123456",
"number": "WA-1042",
"title": "Homepage contact form not submitting",
"description": "Users report form submits but no confirmation. Need to investigate.",
"client_id": "cli_xxxxx",
"project_id": "prj_xxxxx",
"status_id": "stat_xxxxx",
"priority_id": "pri_xxxxx",
"assignee_id": "usr_xxxxx",
"reporter_id": "usr_yyyyy",
"contact_id": "con_xxxxx",
"agreement_id": null,
"billing_type": "time_and_materials",
"dates": {
"opened_at": "2026-01-24T09:15:00Z",
"first_response_at": "2026-01-24T09:45:00Z",
"resolved_at": null,
"closed_at": null,
"due_date": "2026-01-26"
},
"sla": {
"response_target": 60,
"resolution_target": 480,
"response_met": true,
"resolution_met": null,
"breached": false
},
"time": {
"estimated_hours": 2.0,
"logged_hours": 1.5,
"billable_hours": 1.5
},
"resolution_summary": null,
"tags": ["bug", "urgent"],
"created_at": "2026-01-24T09:15:00Z",
"updated_at": "2026-01-25T14:30:00Z"
}Ticket Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (prefix: tkt_) |
number | string | Human-readable ticket number |
title | string | Required. Ticket title |
description | string | Detailed description |
client_id | string | Required. Associated client |
project_id | string | Parent project (optional) |
status_id | string | Current status |
priority_id | string | Priority level |
assignee_id | string | Assigned team member |
reporter_id | string | Who reported/created the ticket |
contact_id | string | Client contact |
agreement_id | string | Retainer agreement |
billing_type | enum | How this ticket is billed |
dates | object | Important timestamps |
sla | object | SLA tracking |
time | object | Time estimates and logged |
resolution_summary | string | Resolution notes (AI-generated or manual) |
tags | array | Associated tags |
created_at | datetime | When ticket was created |
updated_at | datetime | When ticket was last updated |
Billing Types
| Type | Description |
|---|---|
time_and_materials | Bill actual time at rate |
fixed_fee | Part of fixed project scope |
retainer | Bill against retainer hours |
non_billable | Internal or covered work |
List Tickets
/v1/ticketsList all ticketsReturns a paginated list of tickets.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 20 | Results per page (max: 100) |
client_id | string | Filter by client | |
project_id | string | Filter by project | |
assignee_id | string | Filter by assignee | |
status_id | string | Filter by status | |
priority_id | string | Filter by priority | |
status | string | Filter by status type: open, closed, all | |
search | string | Search title and description | |
tags | string | Filter by tags (comma-separated) | |
from | date | Created from date | |
to | date | Created to date | |
sla_breached | boolean | Only SLA-breached tickets | |
sort | string | created_at | Sort by: created_at, updated_at, priority, due_date |
order | string | desc | Sort order: asc, desc |
Request
curl "https://api.govantage.co/v1/tickets?status=open&assignee_id=usr_xxxxx" \
-H "Authorization: Bearer vnt_sk_live_xxxxx"Response
{
"data": [
{
"id": "tkt_cuid123456",
"number": "WA-1042",
"title": "Homepage contact form not submitting",
"client_id": "cli_xxxxx",
"client_name": "Acme Corporation",
"project_id": "prj_xxxxx",
"project_title": "Website Maintenance",
"status": {
"id": "stat_xxxxx",
"name": "In Progress",
"color": "#3B82F6"
},
"priority": {
"id": "pri_xxxxx",
"name": "High",
"color": "#EF4444"
},
"assignee": {
"id": "usr_xxxxx",
"name": "John Smith"
},
"sla": {
"breached": false,
"resolution_target": 480
},
"time": {
"logged_hours": 1.5
},
"created_at": "2026-01-24T09:15:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 156,
"total_pages": 8
}
}Create a Ticket
/v1/ticketsCreate a new ticketRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Ticket title |
client_id | string | Yes | Client ID |
description | string | No | Detailed description |
project_id | string | No | Parent project |
status_id | string | No | Initial status (defaults to first status) |
priority_id | string | No | Priority (defaults to normal) |
assignee_id | string | No | Assigned user |
contact_id | string | No | Client contact |
agreement_id | string | No | Retainer agreement |
billing_type | string | No | Default: time_and_materials |
due_date | date | No | Target due date |
estimated_hours | decimal | No | Estimated hours to complete |
tags | array | No | Tag names or IDs |
Request
curl -X POST "https://api.govantage.co/v1/tickets" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Homepage contact form not submitting",
"client_id": "cli_xxxxx",
"description": "Users report form submits but no confirmation email.",
"project_id": "prj_xxxxx",
"priority_id": "pri_high",
"assignee_id": "usr_xxxxx",
"estimated_hours": 2.0,
"tags": ["bug", "urgent"]
}'Response
{
"data": {
"id": "tkt_cuid789012",
"number": "WA-1043",
"title": "Homepage contact form not submitting",
"description": "Users report form submits but no confirmation email.",
"client_id": "cli_xxxxx",
"project_id": "prj_xxxxx",
"status_id": "stat_new",
"priority_id": "pri_high",
"assignee_id": "usr_xxxxx",
"billing_type": "time_and_materials",
"time": {
"estimated_hours": 2.0,
"logged_hours": 0
},
"sla": {
"response_target": 60,
"resolution_target": 240
},
"tags": ["bug", "urgent"],
"created_at": "2026-01-25T10:30:00Z"
}
}Get a Ticket
/v1/tickets/:idRetrieve a ticket by IDPath Parameters
| Parameter | Description |
|---|---|
id | The ticket ID |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include | string | Comma-separated: client, project, assignee, activities, time_entries, attachments, tasks |
Request
curl "https://api.govantage.co/v1/tickets/tkt_cuid123456?include=activities,time_entries" \
-H "Authorization: Bearer vnt_sk_live_xxxxx"Update a Ticket
/v1/tickets/:idUpdate a ticketRequest
curl -X PUT "https://api.govantage.co/v1/tickets/tkt_cuid123456" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"status_id": "stat_in_progress",
"assignee_id": "usr_yyyyy",
"estimated_hours": 3.0
}'Close a Ticket
/v1/tickets/:id/closeClose a ticketCloses the ticket and optionally generates an AI resolution summary.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
resolution_summary | string | No | Resolution notes |
generate_summary | boolean | No | Auto-generate AI summary from activities |
Request
curl -X POST "https://api.govantage.co/v1/tickets/tkt_cuid123456/close" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"resolution_summary": "Fixed validation script error. Form now submits correctly.",
"generate_summary": false
}'Response
{
"data": {
"id": "tkt_cuid123456",
"status_id": "stat_closed",
"resolution_summary": "Fixed validation script error. Form now submits correctly.",
"dates": {
"resolved_at": "2026-01-25T16:00:00Z",
"closed_at": "2026-01-25T16:00:00Z"
},
"sla": {
"resolution_met": true
}
}
}Reopen a Ticket
/v1/tickets/:id/reopenReopen a closed ticketcurl -X POST "https://api.govantage.co/v1/tickets/tkt_cuid123456/reopen" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"reason": "Issue reoccurred after deployment"
}'Delete a Ticket
/v1/tickets/:idDelete a ticketDeleting a ticket also deletes all associated activities, time entries, and tasks. This cannot be undone.
curl -X DELETE "https://api.govantage.co/v1/tickets/tkt_cuid123456" \
-H "Authorization: Bearer vnt_sk_live_xxxxx"Ticket Activities
Activities are the conversation thread on a ticket (comments, emails, status changes).
List Activities
/v1/tickets/:id/activitiesList ticket activitiescurl "https://api.govantage.co/v1/tickets/tkt_cuid123456/activities" \
-H "Authorization: Bearer vnt_sk_live_xxxxx"Response
{
"data": [
{
"id": "act_xxxxx",
"type": "comment",
"content": "Looking into this now. Will have an update shortly.",
"user_id": "usr_xxxxx",
"user_name": "John Smith",
"visibility": "public",
"created_at": "2026-01-24T09:45:00Z"
},
{
"id": "act_yyyyy",
"type": "status_change",
"content": "Status changed from New to In Progress",
"user_id": "usr_xxxxx",
"user_name": "John Smith",
"old_value": "New",
"new_value": "In Progress",
"created_at": "2026-01-24T09:46:00Z"
}
]
}Add Comment
/v1/tickets/:id/activitiesAdd a comment to a ticketcurl -X POST "https://api.govantage.co/v1/tickets/tkt_cuid123456/activities" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"content": "Found the issue - validation script had a typo. Deploying fix now.",
"visibility": "public"
}'Activity Visibility
| Value | Description |
|---|---|
public | Visible to client in portal |
internal | Team only |
Ticket Time Entries
List Time Entries
/v1/tickets/:id/time-entriesList time logged to a ticketLog Time
/v1/tickets/:id/time-entriesLog time to a ticketcurl -X POST "https://api.govantage.co/v1/tickets/tkt_cuid123456/time-entries" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"user_id": "usr_xxxxx",
"date": "2026-01-25",
"hours": 1.5,
"description": "Debugged and fixed form validation issue",
"billable": true
}'Ticket Tasks
Tasks are sub-items/checklist items within a ticket.
List Tasks
/v1/tickets/:id/tasksList ticket tasksCreate Task
/v1/tickets/:id/tasksAdd a task to a ticketcurl -X POST "https://api.govantage.co/v1/tickets/tkt_cuid123456/tasks" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Test form submission",
"assignee_id": "usr_xxxxx"
}'Complete Task
/v1/tickets/:id/tasks/:task_id/completeMark task completeBulk Operations
Bulk Update
/v1/tickets/bulkUpdate multiple ticketscurl -X PUT "https://api.govantage.co/v1/tickets/bulk" \
-H "Authorization: Bearer vnt_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"ids": ["tkt_xxxxx", "tkt_yyyyy", "tkt_zzzzz"],
"updates": {
"assignee_id": "usr_xxxxx",
"priority_id": "pri_high"
}
}'Bulk Close
/v1/tickets/bulk/closeClose multiple ticketsSLA Tracking
SLAs are automatically tracked based on priority settings:
| Metric | Description |
|---|---|
response_target | Minutes to first response |
resolution_target | Minutes to resolution |
response_met | Whether response SLA was met |
resolution_met | Whether resolution SLA was met |
breached | Whether any SLA was breached |
Configure SLA targets per priority level in Settings → Ticket Priorities. Premium clients can have custom SLA overrides at the client level.
Webhooks
Subscribe to ticket events:
| Event | Description |
|---|---|
ticket.created | New ticket created |
ticket.updated | Ticket details changed |
ticket.assigned | Ticket assigned/reassigned |
ticket.status_changed | Status transitioned |
ticket.commented | New comment added |
ticket.closed | Ticket closed |
ticket.reopened | Ticket reopened |
ticket.sla_warning | SLA breach approaching |
ticket.sla_breached | SLA breached |
Priorities
List Priorities
/v1/ticket-prioritiesList ticket priorities{
"data": [
{ "id": "pri_critical", "name": "Critical", "sla_response": 15, "sla_resolution": 60 },
{ "id": "pri_high", "name": "High", "sla_response": 60, "sla_resolution": 240 },
{ "id": "pri_normal", "name": "Normal", "sla_response": 240, "sla_resolution": 480 },
{ "id": "pri_low", "name": "Low", "sla_response": 480, "sla_resolution": 1440 }
]
}Statuses
List Statuses
/v1/ticket-statusesList ticket statuses{
"data": [
{ "id": "stat_new", "name": "New", "type": "open", "color": "#6B7280" },
{ "id": "stat_in_progress", "name": "In Progress", "type": "open", "color": "#3B82F6" },
{ "id": "stat_waiting", "name": "Waiting on Client", "type": "open", "color": "#F59E0B" },
{ "id": "stat_resolved", "name": "Resolved", "type": "closed", "color": "#10B981" },
{ "id": "stat_closed", "name": "Closed", "type": "closed", "color": "#6B7280" }
]
}Next Steps
- Projects API - Manage parent projects
- Time Entries API - Track time on tickets
- Clients API - Client management