# GET /contacts

**Resource:** [Contacts](./contacts.md)  
**Scopes:** `contacts:read`  
**Write operation:** no

List all contacts with cursor-based pagination. Supports search, source filter, and date range. Note: contacts do not have tags -- tags live on opportunities only.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `search` | query | string | no | Search by first_name, last_name, email, phone (mobile), or landline |
| `source` | query | string | no | Filter by lead source |
| `customer_id` | query | uuid | no | Filter contacts linked to a specific company / account (param name preserved for backward compatibility) |
| `created_after` | query | string | no | ISO date, return contacts created after this date |
| `created_before` | query | string | no | ISO date, return contacts created before this date |
| `limit` | query | number | no | Max results per page (1-100, default 25) |
| `cursor` | query | string | no | Cursor for next page |
| `fields` | query | string | no | Comma-separated list of fields to return |
| `expand` | query | string | no | Comma-separated expansions: employers |
| `email_unsubscribed` | query | boolean | no | Filter to contacts who have opted out of email. true = opted out only, false = opted in only. Omit for all contacts. |
| `sms_unsubscribed` | query | boolean | no | Filter to contacts who have opted out of SMS. true = opted out only, false = opted in only. Omit for all contacts. |

## Request example

```bash
curl -X GET \
  "https://api.trustpager.com/functions/v1/api/v1/contacts?search=John&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Response example

```json
{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "public_id": "C-001",
      "first_name": "John",
      "last_name": "Smith",
      "email": "john@example.com",
      "phone": "+61412345678",
      "landline": "+61299991234",
      "date_of_birth": "1985-06-15",
      "job_title": "Director",
      "source": "website",
      "email_unsubscribed": false,
      "sms_unsubscribed": false,
      "created_at": "2026-01-15T10:30:00Z",
      "updated_at": "2026-03-20T14:00:00Z"
    }
  ],
  "pagination": {
    "limit": 10,
    "has_more": true,
    "next_cursor": "a1b2c3d4-...",
    "prev_cursor": null
  },
  "meta": { "credits_remaining": 9500 }
}
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`