Skip to main content
Skip to Content

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

FieldTypeDescription
idstringUnique identifier (prefix: tkt_)
numberstringHuman-readable ticket number
titlestringRequired. Ticket title
descriptionstringDetailed description
client_idstringRequired. Associated client
project_idstringParent project (optional)
status_idstringCurrent status
priority_idstringPriority level
assignee_idstringAssigned team member
reporter_idstringWho reported/created the ticket
contact_idstringClient contact
agreement_idstringRetainer agreement
billing_typeenumHow this ticket is billed
datesobjectImportant timestamps
slaobjectSLA tracking
timeobjectTime estimates and logged
resolution_summarystringResolution notes (AI-generated or manual)
tagsarrayAssociated tags
created_atdatetimeWhen ticket was created
updated_atdatetimeWhen ticket was last updated

Billing Types

TypeDescription
time_and_materialsBill actual time at rate
fixed_feePart of fixed project scope
retainerBill against retainer hours
non_billableInternal or covered work

List Tickets

GET/v1/ticketsList all tickets

Returns a paginated list of tickets.

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger20Results per page (max: 100)
client_idstringFilter by client
project_idstringFilter by project
assignee_idstringFilter by assignee
status_idstringFilter by status
priority_idstringFilter by priority
statusstringFilter by status type: open, closed, all
searchstringSearch title and description
tagsstringFilter by tags (comma-separated)
fromdateCreated from date
todateCreated to date
sla_breachedbooleanOnly SLA-breached tickets
sortstringcreated_atSort by: created_at, updated_at, priority, due_date
orderstringdescSort 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

POST/v1/ticketsCreate a new ticket

Request Body

FieldTypeRequiredDescription
titlestringYesTicket title
client_idstringYesClient ID
descriptionstringNoDetailed description
project_idstringNoParent project
status_idstringNoInitial status (defaults to first status)
priority_idstringNoPriority (defaults to normal)
assignee_idstringNoAssigned user
contact_idstringNoClient contact
agreement_idstringNoRetainer agreement
billing_typestringNoDefault: time_and_materials
due_datedateNoTarget due date
estimated_hoursdecimalNoEstimated hours to complete
tagsarrayNoTag 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

GET/v1/tickets/:idRetrieve a ticket by ID

Path Parameters

ParameterDescription
idThe ticket ID

Query Parameters

ParameterTypeDescription
includestringComma-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

PUT/v1/tickets/:idUpdate a ticket

Request

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

POST/v1/tickets/:id/closeClose a ticket

Closes the ticket and optionally generates an AI resolution summary.

Request Body

FieldTypeRequiredDescription
resolution_summarystringNoResolution notes
generate_summarybooleanNoAuto-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

POST/v1/tickets/:id/reopenReopen a closed ticket
curl -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

DELETE/v1/tickets/:idDelete a ticket

Deleting 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

GET/v1/tickets/:id/activitiesList ticket activities
curl "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

POST/v1/tickets/:id/activitiesAdd a comment to a ticket
curl -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

ValueDescription
publicVisible to client in portal
internalTeam only

Ticket Time Entries

List Time Entries

GET/v1/tickets/:id/time-entriesList time logged to a ticket

Log Time

POST/v1/tickets/:id/time-entriesLog time to a ticket
curl -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

GET/v1/tickets/:id/tasksList ticket tasks

Create Task

POST/v1/tickets/:id/tasksAdd a task to a ticket
curl -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

POST/v1/tickets/:id/tasks/:task_id/completeMark task complete

Bulk Operations

Bulk Update

PUT/v1/tickets/bulkUpdate multiple tickets
curl -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

POST/v1/tickets/bulk/closeClose multiple tickets

SLA Tracking

SLAs are automatically tracked based on priority settings:

MetricDescription
response_targetMinutes to first response
resolution_targetMinutes to resolution
response_metWhether response SLA was met
resolution_metWhether resolution SLA was met
breachedWhether any SLA was breached

Configure SLA targets per priority level in SettingsTicket Priorities. Premium clients can have custom SLA overrides at the client level.


Webhooks

Subscribe to ticket events:

EventDescription
ticket.createdNew ticket created
ticket.updatedTicket details changed
ticket.assignedTicket assigned/reassigned
ticket.status_changedStatus transitioned
ticket.commentedNew comment added
ticket.closedTicket closed
ticket.reopenedTicket reopened
ticket.sla_warningSLA breach approaching
ticket.sla_breachedSLA breached

Priorities

List Priorities

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

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