---
title: "Save a design for the client"
method: POST
path: "/v3/client-book/client/{id}/design"
tags: ["Client Book"]
---

# Save a design for the client

`POST /v3/client-book/client/{id}/design`

## Request

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

Two ways in: `draft_id` promotes a draft made by /v3/compute/solve into the client's design (fast); `source_design_id` alone copies an existing design of the organization without recomputing. With both, the draft is saved and `source_design_id` is recorded as the piece it personalizes. The source design is never modified.

## Path parameters

- `id` integer, required

## Request body

- object
  - `draft_id` integer, nullable
  - `source_design_id` integer, nullable
  - `store_id` integer, nullable: The store where it was made (Analytics). Defaults to the only store assigned to the caller in Settings › Team; none if they work in several or none.
  - `name` string, nullable: Defaults to the source (or draft) name.
  - `display_name` string, nullable: The name shown to the client (Showroom, piece details, share page), up to 80 characters; without the key a copy keeps its source's, empty removes it.
  - `description` string, nullable
  - `engraving` object, nullable: Inside engraving of a ring: `{text, font, size}` (font: script, italic, roman, serif, sans or typewriter; size: cap height in mm, 0.6–3). Null or an empty text removes it; without the key a copy keeps its source's.

## Response `201`

The client's design

## Other responses

- `400`: MISSING_DRAFT_OR_SOURCE | CLIENT_ARCHIVED
- `404`: CLIENT_NOT_FOUND | DRAFT_NOT_FOUND | DESIGN_NOT_FOUND

## Changes

- **2026-10-19** `62309c5ff1a9`: 1 info
  - added the new optional request property `store_id`
- **2026-10-18** `1f4c5660cd80`: 1 info
  - added the new optional request property `display_name`
- **2026-10-12** `d39147fbcb88`: 1 info
  - added the new optional request property `engraving`
- **2026-10-02** `82c79770c36b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinoartisan/apis/rhinoartisan-api/changes/v3/client-book/client/:id/design/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)
