---
title: "Save a design"
method: POST
path: "/v3/backoffice/design"
tags: ["Design"]
---

# Save a design

`POST /v3/backoffice/design`

## Request

- Base URL: `https://api.rhinoartisan.com`
- URL: `https://api.rhinoartisan.com/v3/backoffice/design`
- Auth: API key in header `apikey`
- TypeScript: <https://skmtc.dev/rhinoartisan/apis/rhinoartisan-api/docs/v3/backoffice/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 (fast), or `capsule_id` + `values` computes and saves in one go (slow). Optionally assigns collections.

## Request body

- object
  - `name` string, required
  - `draft_id` integer: Id returned by /v3/compute/solve.
  - `capsule_id` integer: Knowledge Capsule of the organization whose .gh builds the piece.
  - `values` object: The record: a flat object keyed by the Knowledge Capsule's schema (dotted names).
  - `mode` 'rendering' | 'manufacturing'
  - `description` string, nullable
  - `collection_ids` integer[]

## Response `200`

Design saved

## Other responses

- `400`: MISSING_NAME | MISSING_DRAFT_OR_CAPSULE | INVALID_VALUES | CAPSULE_HAS_NO_DEFINITION
- `404`: DRAFT_NOT_FOUND | CAPSULE_NOT_FOUND
- `502`: Compute failed

## Changes

- **2026-10-15** `598bac108453`: 1 info
  - endpoint added

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