---
title: "Create / Update Users"
method: POST
path: "/v1/user/{distinct_id}/"
---

# Create / Update Users

`POST /v1/user/{distinct_id}/`

API to upsert (create if not exists, update if exists) user profile using a `distinct_id`.

## Path parameters

- `distinct_id` string, required

## Request body

- object
  - `$email` string[] — List of email addresses. You can add other channels in the same format by replacing `$email` with the respective channel keys. Supported keys- `$email`, `$sms`, `$whatsapp`, `$inbox`, `$webpush`, `$androidpush`, `$iospush`, `$slack`, `$ms_teams`.
  - `$sms` string[] — List of phone numbers for SMS
  - `$whatsapp` string[] — List of phone numbers for WhatsApp
  - `$inbox` string[] — List of inbox identifiers
  - `$androidpush` string[] — List of Android Push tokens
  - `$iospush` string[] — List of iOS Push tokens
  - `$slack` union[] — Slack channel configuration
    - union
      - object
        - `email` string, email, required — User email address
        - `access_token` string, required — Slack bot access token
      - object
        - `user_id` string, required — Slack user ID (U/WXXXXXXXX format)
        - `access_token` string, required — Slack bot access token
      - object
        - `channel` string, required — Slack channel ID (CXXXXXXXX format)
        - `access_token` string, required — Slack bot access token
      - object
        - `incoming_webhook` object, required
          - `url` string, uri, required — Slack incoming webhook URL
  - `$ms_teams` union[] — Microsoft Teams channel configuration
    - union
      - object
        - `tenant_id` string, required — Microsoft Teams tenant ID
        - `service_url` string, uri, required — Microsoft Teams service URL
        - `conversation_id` string, required — Microsoft Teams conversation ID
      - object
        - `tenant_id` string, required — Microsoft Teams tenant ID
        - `service_url` string, uri, required — Microsoft Teams service URL
        - `user_id` string, required — Microsoft Teams user ID
      - object
        - `incoming_webhook` object, required
          - `url` string, uri, required — Microsoft Teams incoming webhook URL
  - `$timezone` string — User's timezone in [IANA format](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List)
  - `$locale` string — User's locale for [translating](https://suprsend.com/docs/translations) template content in SuprSend.

## Response `201`

201

- object
  - `distinct_id` string — Unique identifier of the user.
  - `properties` object — all user properties in key-value pair. SuprSend reserved properties start with $
  - `created_at` string, date-time — Timestamp when the user was created.
  - `updated_at` string, date-time — Timestamp when the user was last updated.
  - `$<channel>` object[] — List of active communication channels for the user.
    - `value` string — channel value
    - `status` string — Current status of the channel (active or inactive).
    - `perma_status` string — active/disabled. Perma_status is marked disabled in case of hard bounce on the channel.

## Other responses

- `400` — 400

---

[API](https://skmtc.net/suprsend/apis/suprsend-api.md) · [All operations](https://skmtc.net/suprsend/apis/suprsend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/suprsend/suprsend-api/versions/8bd2574bd2c3/schema)
