---
title: "Create a client (billing, admin)"
method: POST
path: "/v1/clients"
tags: ["clients"]
---

# Create a client (billing, admin)

`POST /v1/clients`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/clients`
- Auth: HTTP bearer

The id may be given (a device minted it) or is minted here. A name already in use is 409.

## Request body

- object
  - `id` string
  - `name` string, required
  - `external_ref` string, nullable
  - `active` boolean
  - `contacts` object[]
    - `name` string, required
    - `email` string, nullable
    - `kind` 'primary' | 'billing' | 'other'
  - `domains` string[]

## Response `201`

The client as stored.

- object
  - `id` string, required
  - `name` string, required
  - `external_ref` string, nullable
  - `active` boolean
  - `contacts` object[]
    - `name` string, required
    - `email` string, nullable
    - `kind` 'primary' | 'billing' | 'other'
  - `domains` string[]
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.
- `409`: The id or the email already belongs to something else.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
