---
title: "Create a contact channel"
method: POST
path: "/contact-channels"
tags: ["Contact Channels"]
---

# Create a contact channel

`POST /contact-channels`

Add a new contact channel for a user.

## Query parameters

- `user_id` string — The ID of the user, or the special value `me` for the currently authenticated user
- `contact_channel_id` string

## Request body

- object
  - `user_id` string, required — The ID of the user, or the special value `me` for the currently authenticated user
  - `value` string, required — The value of the contact channel. For email, this should be a valid email address.
  - `type` 'email', required — The type of the contact channel. Currently only "email" is supported.
  - `used_for_auth` boolean, required — Whether the contact channel is used for authentication. If this is set to `true`, the user will be able to sign in with the contact channel with password or OTP.
  - `is_primary` boolean — Whether the contact channel is the primary contact channel. If this is set to `true`, it will be used for authentication and notifications by default.

## Response `201`

Successful response

- object
  - `user_id` string, required — The unique identifier of the user
  - `id` string, required — The unique identifier of the contact channel
  - `value` string, required — The value of the contact channel. For email, this should be a valid email address.
  - `type` 'email', required — The type of the contact channel. Currently only "email" is supported.
  - `used_for_auth` boolean, required — Whether the contact channel is used for authentication. If this is set to `true`, the user will be able to sign in with the contact channel with password or OTP.
  - `is_verified` boolean, required — Whether the contact channel has been verified. If this is set to `true`, the contact channel has been verified to belong to the user.
  - `is_primary` boolean, required — Whether the contact channel is the primary contact channel. If this is set to `true`, it will be used for authentication and notifications by default.

## Changes

> 17 revisions in range; 3 could not be searched.

- **2026-05-15** `f135fd8ca8b4` — 1 breaking, 1 warning, 1 info
  - request property `type` was restricted to a list of enum values
  - added the new `email` enum value to the `type` response property for the response status `201`
  - added the new `email` enum value to the request property `type`

[Change history](https://skmtc.dev/hexclave/apis/hexclave-rest-api/changes/contact-channels/post.md)

---

[API](https://skmtc.dev/hexclave/apis/hexclave-rest-api.md) · [All operations](https://skmtc.dev/hexclave/apis/hexclave-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hexclave/hexclave-rest-api/revisions/86dcd8c9953c/schema)
