Skip to content

List & search contacts

GET
/api/v2/contacts
curl --request GET \
--url 'https://api.sipstack.com/api/v2/contacts?page=1&limit=50' \
--header 'x-api-key: <x-api-key>'

Lists your organization’s contacts, newest first. Hides soft-deleted and merged rows. Requires the contacts:read scope. Supports offset or keyset (cursor / next_cursor) paging.

page
integer
default: 1 >= 1
limit
integer
default: 50 >= 1 <= 200
cursor
string

Opaque keyset cursor from a previous response’s next_cursor.

search
string

Case-insensitive match across first/last name, phone, email, and business.

phone
string

Search by phone number — digits matched against the stored number (≥3 digits).

tag
string

Return only contacts carrying this exact tag.

Paginated contact list.

Media type application/json
object
success
boolean
data
Array<object>

A contact record. POST /api/v2/contacts returns the compact subset (id, uuid, phone_number, names, email, tags, consent_status, consent_date, created_at); the list/get/update endpoints return the full record below.

object
id
string format: uuid
uuid
string format: uuid
phone_number
string
first_name
string
nullable
last_name
string
nullable
email
string
nullable
business
string
nullable
tags
Array<string>
custom_fields
object
key
additional properties
any
consent_status
string
Allowed values: implied express none
consent_date
string format: date-time
nullable
is_opted_out
boolean
is_blocked
boolean
is_archived
boolean
is_starred
boolean
last_contacted_at
string format: date-time
nullable
total_messages_sent
integer
total_messages_received
integer
source

How the contact was created (e.g. api).

string
nullable
created_at
string format: date-time
updated_at
string format: date-time
pagination

Page metadata returned by the paginated Developer API list endpoints. Per-endpoint limit defaults and caps vary (see each endpoint’s limit parameter). In keyset (cursor) mode page, total, and totalPages are null — walk pages via next_cursor instead.

object
page
integer
nullable
limit

Items per page (the default and maximum vary by endpoint).

integer
total

Total matching records across all pages (null in cursor mode).

integer
nullable
totalPages
integer
nullable
next_cursor
string
nullable
Example
{
"data": [
{
"phone_number": "+14165550100",
"consent_status": "implied"
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 143,
"totalPages": 6
}
}

Invalid cursor or phone filter.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

Missing or invalid API key.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

The key is missing the contacts:read scope.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}

Internal error.

Media type application/json

Inline error shape used by the messaging API and management endpoints.

object
success
boolean
error
string
Example
{
"success": false,
"error": "Recipient phone number (to) is required"
}