---
title: "List the contacts of an organization"
method: GET
path: "/organizations/{id_organization}/contacts"
tags: ["contacts"]
---

# List the contacts of an organization

`GET /organizations/{id_organization}/contacts`

## Request

- Base URL: `https://api.planvortex.com/v1.0.0`
- URL: `https://api.planvortex.com/v1.0.0/organizations/{id_organization}/contacts`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://api.planvortex.com/v1.0.0/oauth/token`)

Newest first. `search` is a full-text search over the name, and `extra_data` filters by your own fields — which is what makes it possible to ask for "the contacts of this campaign" without keeping a second database.

## Path parameters

- `id_organization` string, required

## Query parameters

- `offset` integer
- `limit` integer
- `search` string
- `social_network` 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'twitter' | 'whatsapp' | 'youtube' | 'google_business' | 'bluesky' | 'discord' | 'telegram' | 'threads' | 'slack' | 'pinterest': A social network supported by PlanVortex. **This list grows.** Treat it as an open enumeration: a client that rejects an unknown value breaks the day a network is added, which happens several times a year. Not every network does everything — ask `GET /social_capabilities`.
- `extra_data` object[]
  - `key` string
  - `value` unknown

## Response `200`

Contacts

- object
  - `contacts` Contact[], required
    - `_id` string, required
    - `id_organization` string, required
    - `name` string
    - `profile_image` string: URL of the contact's avatar on the network. It belongs to the network and it can stop working.
    - `social_identifiers` SocialIdentifier[], required
      - `_id` string, required
      - `external_identifier` string: Identifier of the contact on that channel.
      - `social_network` 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'twitter' | 'whatsapp' | 'youtube' | 'google_business' | 'bluesky' | 'discord' | 'email', required: Where a contact can be reached. Every social network that has messaging, plus `email` for a contact created by hand instead of arriving from a network. **This list grows** with the networks: treat it as an open enumeration.
      - `last_send_date` string, date-time: Last message received from the contact. On WhatsApp it is what opens the 24-hour window in which a free-form message is allowed.
    - `extra_data` ContactExtraData: Your own fields on the contact. The address block is known to PlanVortex; the six generic properties are yours to use, and they are what `extra_data` filters on.
      - `place_id` string
      - `address` string
      - `city` string
      - `state` string
      - `country` string
      - `country_code` string
      - `zip_code` union
        - string
        - number
      - `number` union
        - string
        - number
      - `building` union
        - string
        - number
      - `floor` union
        - string
        - number
      - `door` union
        - string
        - number
      - `coords` number[]: Longitude and latitude, in that order.
      - `string_property` string
      - `string_property2` string
      - `boolean_property` boolean
      - `boolean_property2` boolean
      - `number_property` number
      - `number_property2` number
    - `creator_keycloak_identifier` string: The user who created the contact, when it was created from the panel instead of arriving from a network.
    - `creation_date` string, date-time, required
    - `last_contact_update` string, date-time, required: Last time the contact's profile was refreshed from the network.
  - `total` integer, required

## Other responses

- `400`: Error. Classify by `code` in the body, never by the HTTP status.

---

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