---
title: "Get contacts"
method: GET
path: "/workspaces/{workspaceID}/contacts"
tags: ["Contacts"]
---

# Get contacts

`GET /workspaces/{workspaceID}/contacts`

## Request

- Base URL: `https://api.salesforge.ai/public/v2`
- URL: `https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/contacts`
- Auth: API key in header `Authorization`

Get contacts associated with the workspace. Supported filters: tag_ids[] (aliases: tagIds), validation_statuses[] (aliases: validationStatus, validationStatuses; valid is accepted as safe), not_in_sequence_id (alias: notInSequenceId). Unknown query parameters return 400.
Set pagination=cursor for the first cursor page; pass nextCursor as cursor with the same workspace and filters for subsequent pages. Cursor responses contain data, limit, hasMore and nextCursor (omitted on the last page), without total or offset. Omitting pagination and cursor preserves offset pagination.

## Path parameters

- `workspaceID` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `pagination` 'offset' | 'cursor'
- `cursor` string
- `tag_ids[]` string[]
- `tagIds` string[]
- `not_in_sequence_id` string
- `notInSequenceId` string
- `validation_statuses[]` string[]
- `validationStatus` string[]

## Response `200`

Contact list in offset or cursor mode; nextCursor is omitted on the last cursor page

- union
  - ApiContactsOffsetResponse
    - `data` ApiContactResponse[], required
      - `company` string
      - `customVars` object
      - `email` string
      - `firstName` string
      - `id` string
      - `lastName` string
      - `linkedinUrl` string
      - `position` string
      - `sequences` ApiContactSequenceResponse[]
        - `id` string
        - `name` string
        - `status` 'none' | 'ooo' | 'bounced' | 'bounce-protect' | 'replied' | 'failed' | 'active' | 'paused' | 'finished' | 'dnc' | 'deleted' | 'unsubscribed' | 'contacted' | 'multi-threading'
      - `tags` string[]
    - `limit` integer, required
    - `offset` integer, required
    - `total` integer, required
  - ApiContactsCursorResponse
    - `data` ApiContactResponse[], required
      - `company` string
      - `customVars` object
      - `email` string
      - `firstName` string
      - `id` string
      - `lastName` string
      - `linkedinUrl` string
      - `position` string
      - `sequences` ApiContactSequenceResponse[]
        - `id` string
        - `name` string
        - `status` 'none' | 'ooo' | 'bounced' | 'bounce-protect' | 'replied' | 'failed' | 'active' | 'paused' | 'finished' | 'dnc' | 'deleted' | 'unsubscribed' | 'contacted' | 'multi-threading'
      - `tags` string[]
    - `hasMore` boolean, required
    - `limit` integer, required
    - `nextCursor` string: NextCursor is present only when another page exists.

## Other responses

- `400`: Bad Request
- `500`: Internal Server Error

---

[API](https://skmtc.dev/salesforge/apis/salesforge-api.md) - [All operations](https://skmtc.dev/salesforge/apis/salesforge-api/llms.txt) - [OpenAPI document](https://skmtc.dev/salesforge/apis/salesforge-api/revisions/3f946278b378?raw)
