Skip to main content
TypeScript

Authorizations

Authorization
string
header
required

Your Periskope API token, sent as Authorization: Bearer <token>. Generate one from the Periskope dashboard under Settings → API & Webhooks. API access requires an active Pro or Enterprise plan.

Path Parameters

contact_id
string
required

Phone number of the contact: country code + number without symbols or spaces (e.g. 911111111111). The full WhatsApp id (911111111111@c.us) is also accepted.

Minimum string length: 1
Example:

"911111111111"

Body

application/json
contact_name
string

New name for the contact. Updated on Periskope only (stored as the Periskope name) — the name on the phone is not changed. Pass an empty string to clear the Periskope name and fall back to the WhatsApp-synced name.

Example:

"John Doe"

is_internal
boolean

Whether the contact is internal (e.g. a teammate). Messages from internal contacts are not flagged for response.

Example:

false

labels
string

Comma-separated list of labels to put on the contact (e.g. 'lead, priority'). Labels are matched case-insensitively and labels that do not exist yet are created automatically. This replaces all current labels of the contact — pass the full desired list.

Example:

"lead, priority"

Response

The updated contact

A WhatsApp contact known to the workspace — synced from a connected phone's address book and chats, or created via the API. Contacts belong to the org as a whole, not to a single phone. Labels on a contact are shared with the contact's 1-1 chat.

org_id
string<uuid>

Id of the organization the contact belongs to

Example:

"00000000-0000-0000-0000-000000000000"

contact_id
string

Unique id of the contact within the org: country code + number suffixed with @c.us. Use the number part (with or without the suffix) wherever a contact_id parameter is expected.

Example:

"911111111111@c.us"

contact_name
string

Display name of the contact — the Periskope-set name when one was saved via the API or dashboard, otherwise the WhatsApp verified name, address-book name or push name. null when no name is known from any source.

Example:

"John Doe"

username
string

WhatsApp username of the contact. null when the contact has not set one or it has not been synced yet.

Example:

"jane.doe"

contact_type
string

Type of the WhatsApp account: 'user' for a personal account, 'business' for a business account. null when not yet synced.

Example:

"user"

is_wa_contact
boolean

Whether the number is registered on WhatsApp, as reported by the connected phone. null when not yet synced.

Example:

true

is_my_contact
boolean

Whether the contact is saved in the connected phone's address book. null when not yet synced.

Example:

true

is_internal
boolean

Whether the contact is marked as internal (e.g. a teammate). Messages from internal contacts are not flagged for response. null when the flag was never set.

Example:

false

is_imported
boolean

true when the contact was created via the API or an import rather than synced from a phone. null for synced contacts.

Example:

true

contact_image
string

URL of the contact's WhatsApp profile picture. null when the contact has no picture or it is not accessible.

Example:

"https://example.com/files/image.png"

contact_color
string

Hex color assigned to the contact, used to render it in the dashboard. null when no color is assigned.

Example:

"#DC2626"

label_ids
object

Map of label_id to boolean for the labels on the contact. Labels on a contact are shared with its 1-1 chat. An empty object when the contact has no labels.

Example:
labels
string[]

Names of the labels currently on the contact, resolved from label_ids

Example:
chat_ids
string[]

Ids of the chats the contact participates in — the 1-1 chat (@c.us) and any group chats (@g.us) shared with the workspace. Contains a single null entry when the contact is not a participant of any chat.

Example:
updated_at
string

When the contact record was last updated, as an ISO 8601 timestamp

Example:

"2026-01-15T09:30:00.000Z"