Skip to content
Docs menu

Tickets

Service work for patients and accounts — refill requests, complaints, follow-ups.

Tickets live in a pipeline (separate from deals) and have priorities of LOW, NORMAL, HIGH, URGENT. Status is free-form (the per-pipeline stages provide the structured movement).

POST/api/ticketsBearer token

Create a ticket

Open a new service ticket. Can be tied to a contact, a company, or stand alone.

Required scopes:contacts.write

Request body

NameTypeDescription
subjectrequiredstringShort summary. 1–200 chars.
descriptionstringLong description. ≤ 20,000 chars.
prioritystringLOW | NORMAL | HIGH | URGENT.
ownerIdstringOwning user id.
pipelineIdstringPipeline id.
pipelineStageIdstringInitial stage id.
contactIdstringLinked contact.
companyIdstringLinked company.
statusstringFree-form status label.

Request body

JSON
{ "subject": "Pharmacy refill request", "priority": "HIGH", "contactId": "cln…" }

Responses

  • 201 CreatedCreated.
    example
    {
      "id": "tk_3rt8q9…",
      "subject": "Pharmacy refill request",
      "description": "Patient out of Rx until Friday.",
      "priority": "HIGH",
      "status": "OPEN",
      "pipelineId": "pl_tickets_default",
      "pipelineStageId": "ps_new",
      "ownerId": "usr_8h2c3p…",
      "contactId": "cln1f8s7p…",
      "companyId": null,
      "createdAt": "2026-05-18T14:00:00Z"
    }
  • 422 Unprocessable EntityValidation failed.

Code samples

Shell
curl -X POST https://app.contactfollowup.com/api/tickets \
  -H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "subject": "Pharmacy refill request", "priority": "HIGH", "contactId": "cln…" }'
GET/api/ticketsBearer token

List tickets

Filtered list.

Required scopes:contacts.read

Query parameters

NameTypeDescription
ownerIdstringFilter by owning user.
statusstringFilter by status label.
pipelineIdstringFilter by pipeline.

Responses

  • 200 OKMatching tickets.
    example
    { "tickets": [{
      "id": "tk_3rt8q9…",
      "subject": "Pharmacy refill request",
      "description": "Patient out of Rx until Friday.",
      "priority": "HIGH",
      "status": "OPEN",
      "pipelineId": "pl_tickets_default",
      "pipelineStageId": "ps_new",
      "ownerId": "usr_8h2c3p…",
      "contactId": "cln1f8s7p…",
      "companyId": null,
      "createdAt": "2026-05-18T14:00:00Z"
    }] }

Code samples

Shell
curl -X GET https://app.contactfollowup.com/api/tickets \
  -H "Authorization: Bearer $HEARTHNOTE_TOKEN" \
  -H "Content-Type: application/json"