PlunkPlunk
API ReferenceContacts

List contacts

Get a paginated list of contacts with cursor-based pagination.

GET
/contacts

Authorization

ApiKeyAuth

AuthorizationBearer <token>

API Key authentication. The project is automatically derived from the key.

/v1/track requires a public key (pk_*) — it is the one endpoint intended for client-side use, and a secret key is rejected there with 401.

Every other endpoint requires a secret key (sk_*) and rejects public keys with 401.

So the two key types are not interchangeable in either direction: pick the key that matches the endpoint you are calling.

In: header

Query Parameters

limit?integer

Maximum items per page. Values above 100 are clamped to 100.

Default20
Range1 <= value <= 100
cursor?string

Pagination cursor. Pass the cursor returned by the previous page.

search?string

Case-insensitive substring match on email.

subscribed?boolean

Filter by subscription state. Omit to return both subscribed and unsubscribed contacts.

sort?string

Column to sort by. Unrecognised values fall back to createdAt.

Default"createdAt"
Value in"email" | "createdAt"
dir?string

Sort direction. Unrecognised values fall back to the default.

Default"desc"
Value in"asc" | "desc"

Response Body

application/json

application/json

curl -X GET "https://api.plunk.jimster.dev/contacts"
{
  "data": [
    {
      "id": "string",
      "email": "user@example.com",
      "subscribed": true,
      "data": {},
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "cursor": "string",
  "hasMore": true,
  "total": 0
}
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid secret API key. This endpoint requires a secret key (sk_*), not a public key.",
    "statusCode": 401,
    "requestId": "8f14e45f-ceea-467a-9575-1f0f38e0b1c2"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}