---
title: "Create a client"
method: POST
path: "/v3/client-book/client"
tags: ["Client Book"]
---

# Create a client

`POST /v3/client-book/client`

## Request

- Base URL: `https://api.rhinoartisan.com`
- URL: `https://api.rhinoartisan.com/v3/client-book/client`
- Auth: API key in header `apikey`
- TypeScript: <https://skmtc.dev/rhinoartisan/apis/rhinoartisan-api/docs/v3/client-book/client/post.ts> (a function with typed inputs; its response is checked against the schema)

A commercial record, not a user account: no invitation is sent. Email and phone are optional but validated when present; duplicates are allowed (see /match).

## Request body

- object
  - `name` string, required
  - `email` string, nullable
  - `phone` string, nullable
  - `preferences` string, nullable: Free text: sizes, metals, gems, styles…

## Response `201`

Client created

## Other responses

- `400`: MISSING_NAME | NAME_TOO_LONG | INVALID_EMAIL | INVALID_PHONE | PREFERENCES_TOO_LONG

## Changes

- **2026-10-02** `82c79770c36b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinoartisan/apis/rhinoartisan-api/changes/v3/client-book/client/post.md)

---

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