---
title: "Add channel to contact"
method: POST
path: "/v1/contacts/{contactId}/channels"
---

# Add channel to contact

`POST /v1/contacts/{contactId}/channels`

## Request

- Base URL: `https://api.zavu.dev`
- URL: `https://api.zavu.dev/v1/contacts/{contactId}/channels`
- Auth: HTTP bearer

Add a new communication channel to an existing contact.

## Path parameters

- `contactId` string, required

## Request body

- AddChannelRequest: Request body to add a channel to a contact.
  - `channel` 'sms' | 'whatsapp' | 'email' | 'telegram' | 'instagram' | 'messenger' | 'voice', required: Channel type.
  - `identifier` string, required: Channel identifier (phone number in E.164 format or email address).
  - `countryCode` string: ISO country code for phone numbers.
  - `label` string: Optional label for the channel.
  - `isPrimary` boolean: Whether this should be the primary channel for its type.

## Response `201`

Channel added.

- ContactChannelResponse
  - `channel` ContactChannel, required: A communication channel for a contact.
    - `id` string, required
    - `channel` 'sms' | 'whatsapp' | 'email' | 'telegram' | 'instagram' | 'messenger' | 'voice', required: Channel type.
    - `identifier` string, required: Channel identifier (phone number or email address).
    - `countryCode` string: ISO country code for phone numbers.
    - `label` string: Optional label for the channel.
    - `isPrimary` boolean, required: Whether this is the primary channel for its type.
    - `verified` boolean, required: Whether this channel has been verified.
    - `metrics` object: Delivery metrics for this channel.
      - `successCount` integer
      - `failureCount` integer
      - `totalAttempts` integer
      - `avgDeliveryTimeMs` number
      - `lastSuccessAt` string, date-time
    - `lastInboundAt` string, date-time: Last time a message was received on this channel.
    - `metadata` object
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time

## Other responses

- `400`: Invalid request or duplicate identifier.
- `401`: Unauthorized.
- `404`: Contact not found.

## Changes

> 80 revisions in range; 1 not diffed.

- **2026-07-07** `f467a4da6cd2`: 1 warning, 1 info
  - added the new `instagram` enum value to the `channel/channel` response property for the response status `201`
  - added the new `instagram` enum value to the request property `channel`
- **2026-06-18** `a817a073a07f`: 1 warning, 1 info
  - added the new `messenger` enum value to the `channel/channel` response property for the response status `201`
  - added the new `messenger` enum value to the request property `channel`

[Operation history](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/changes/v1/contacts/:contactId/channels/post.md)

---

[API](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api.md) - [All operations](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/revisions/75bc777b0ffb?raw)
