---
title: "Declare a member channel"
method: POST
path: "/api/v1/circles/{id}/members/{memberId}/channels"
tags: ["Circles"]
---

# Declare a member channel

`POST /api/v1/circles/{id}/members/{memberId}/channels`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/circles/{id}/members/{memberId}/channels`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `auth_token`

Declare a channel (telegram or whatsapp) for a member. 409 when that channel type already exists.

## Path parameters

- `id` string, required: MongoDB ObjectId
- `memberId` string, required: MongoDB ObjectId

## Request body

- AddCircleMemberChannelBody: Request body for declaring a channel for a Circle member
  - `channel` 'telegram' | 'whatsapp', required
  - `identifier` string, required: The Telegram chat id (≤50) or E.164 WhatsApp phone (leading +) — validated per channel

## Response `201`

Channel declared

- CircleMemberChannel: A member channel (metadata only — never the identifier, SEC-PM-006)
  - `id` string, required: MongoDB ObjectId
  - `channel` 'telegram' | 'whatsapp', required
  - `status` 'declared' | 'verified', required
  - `verified_at` string, date-time, nullable, required
  - `created_at` string, date-time, required

## Other responses

- `400`: Validation error / invalid identifier
- `401`: Unauthorized
- `404`: Circle or member not found
- `409`: That channel type already exists

---

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