Contacts

List contacts

List contacts on the connected account, newest first. Cursor-paginated; counts holds account-wide totals per status.

GEThttps://api.sndr.sh/api/cranl/v1/contacts
List contacts
curl 'https://api.sndr.sh/api/cranl/v1/contacts?status=subscribed&limit=20' \
  -H 'Authorization: Bearer sndr_your_access_token'
200OK
{
  "data": [
    {
      "id":              "con_0e6b7f21-c58",
      "organization_id": "org_8d41c7a2-3f6",
      "email":           "jane@example.com",
      "first_name":      "Jane",
      "last_name":       "Doe",
      "attributes":      { "plan": "pro", "city": "Berlin" },
      "status":          "subscribed",
      "source":          "checkout",
      "created_at":      "2026-03-01T10:00:00Z",
      "updated_at":      "2026-03-01T10:00:00Z"
    }
  ],
  "has_more": false,
  "count":    1,
  "limit":    20,
  "counts":   { "subscribed": 1, "unsubscribed": 0, "bounced": 0, "complained": 0 }
}

Authorization

Authorizationstringheaderrequired

Bearer followed by an access token. Needs the read scope.

Query parameters

limitinteger

Page size. Default 50, max 200.

cursorstring

The next_cursor value from the previous page. Omit for the first page.

statusstring

Only contacts with this status: subscribed | unsubscribed | bounced | complained.

group_idstring

Only contacts in this group (grp_...).

qstring

Case-insensitive search in email, first name and last name.

Errors

401unauthenticatedMissing or invalid Bearer token.
401token_expiredAccess token expired — exchange the refresh token for a new pair.
401token_revokedToken was explicitly revoked.
403insufficient_scopeToken is missing the read scope.
422validation_failedlimit is above 200, or cursor is not a value returned as next_cursor.