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 objects
  • page.nextCursor: Cursor for fetching the next page (null if no more results)
  • page.hasMore: Boolean indicating whether more results are available
  • page.pageSize: Actual page size returned

Delta Sync Best Practices

  1. Store the updatedUtc timestamp of the last contact in each sync
  2. On next sync, use updated_since={lastUpdatedUtc}&include_deleted=true to fetch changes including deletions
  3. Handle pagination by following nextCursor until hasMore is false
  4. Check deletedUtc field - if non-null, remove the contact from your local store
  5. Important: Always use include_deleted=true for bidirectional sync to maintain data parity
Query Parameters
  • updated_since
    Type: stringFormat: date-time

    Filter contacts updated on or after this UTC timestamp (ISO 8601)

  • include_deleted
    Type: boolean

    Include deleted contacts in results

  • page_size
    Type: string Pattern: ^-?(?:0|[1-9]\d*)$Format: int32

    Number of contacts per page (1-500, default 500)

  • cursor
    Type: string

    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
  }
}