Lists contacts with cursor-based pagination and optional delta sync.
Usage Examples
Initial full sync:
GET /api/v1/network/contacts?page_size=500
Delta sync with deletions (recommended for bidirectional sync):
GET /api/v1/network/contacts?updated_since=2025-01-15T10:00:00Z&include_deleted=true
Pagination (fetch next page):
GET /api/v1/network/contacts?cursor=eyJ1IjoiMjAyNS0wMS0xNVQxMDowMDowMC4xMjM0NTY3WiIsImkiOjEyMzQ1fQ==
Response Format
The response includes:
data: Array of contact objectspage.nextCursor: Cursor for fetching the next page (null if no more results)page.hasMore: Boolean indicating whether more results are availablepage.pageSize: Actual page size returned
Delta Sync Best Practices
- Store the
updatedUtctimestamp of the last contact in each sync - On next sync, use
updated_since={lastUpdatedUtc}&include_deleted=trueto fetch changes including deletions - Handle pagination by following
nextCursoruntilhasMoreis false - Check
deletedUtcfield - if non-null, remove the contact from your local store - Important: Always use
include_deleted=truefor bidirectional sync to maintain data parity
Query Parameters
- Type: stringFormat: date-timeupdated
_since Filter contacts updated on or after this UTC timestamp (ISO 8601)
- Type: booleaninclude
_deleted Include deleted contacts in results
- Type: stringpage
_size Pattern: ^-?(?:0|[1-9]\d*)$Format: int32Number of contacts per page (1-500, default 500)
- Type: stringcursor
Opaque pagination cursor from a previous response. When provided, continues from where the previous page left off.
Responses
- application/json
- application/problem+json
- application/problem+json
- application/problem+json
Request Example for get/api/v1/network/contacts
curl 'https://app.propstreet.com/api/v1/network/contacts?updated_since=&include_deleted=false&page_size=&cursor=' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"id": "string",
"uri": null,
"externalRefs": [
{
"namespace": "string",
"id": "string"
}
],
"firstName": null,
"lastName": null,
"email": null,
"phone": null,
"linkedInUrl": null,
"emails": [
{
"address": "string",
"type": null,
"isPrimary": true
}
],
"phones": [
{
"number": "string",
"type": null,
"isPrimary": true
}
],
"primaryLanguage": null,
"tags": [
"string"
],
"strategy": null,
"primaryCompanyId": null,
"companies": [
{
"id": "string",
"uri": null,
"name": "string",
"jobTitle": null,
"isPrimary": true
}
],
"profilePictureUrl": null,
"createdUtc": "2026-05-05T17:18:39.880Z",
"updatedUtc": "2026-05-05T17:18:39.880Z",
"deletedUtc": null,
"etag": "string",
"changeType": null,
"changeOrigin": null
}
],
"page": {
"nextCursor": null,
"pageSize": "string",
"hasMore": true
}
}