Browse docs

Contacts

Overview

Contacts represent the people who submit tickets to your helpdesk. Each contact belongs to a workspace and is associated with one or more tickets.

List Contacts

Retrieve a paginated list of contacts in the current workspace.

GET /api/contacts

Query Parameters

Parameter Type Description
per_page integer Results per page (default: 25, max: 100)
sort string Sort field: name, created_at, last_activity. Prefix with - for descending (default: name)
filter[name] string Partial match on contact name
filter[email] string Partial match on contact email
filter[search] string Search across both name and email

Example Request

curl "https://there-there.app/api/contacts?filter[search]=john&sort=-last_activity&per_page=10" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Example Response

{
    "data": [
        {
            "id": 12,
            "ulid": "01hx9f3k2n...",
            "name": "John Doe",
            "email": "john@customer.com",
            "avatar_url": null,
            "ticket_count": 3,
            "last_activity_at": "2025-06-02T14:15:00+00:00"
        }
    ],
    "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
    "meta": { "current_page": 1, "last_page": 2, "per_page": 10, "total": 14 }
}

Get Contact

GET /api/contacts/{contact}

The single contact response wraps the contact under data and includes notes.

Create Contact

POST /api/contacts

Request Body

Field Type Required Description
email string Yes Unique per workspace
name string No
notes string No Free-text notes

The email is normalized to lowercase on creation.

Update Contact

PUT /api/contacts/{contact}

All fields are optional. Omit a field to leave it unchanged.

Delete Contact

DELETE /api/contacts/{contact}

Admin role required. Returns 204 on success.