---
title: "Save a photo on one of the client's pieces"
method: POST
path: "/v3/client-book/client/{id}/design/{designId}/photos"
tags: ["Client Book"]
---

# Save a photo on one of the client's pieces

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

## Request

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

Multipart: `photo` (PNG, JPEG or WebP) and optionally `photo_style_id`. Up to 12 per piece; the first one becomes the cover (the piece preview).

## Path parameters

- `id` string, required
- `designId` string, required

## Response `200`

{preview, photos}

## Other responses

- `400`: MISSING_PHOTO, INVALID_IMAGE, DESIGN_PHOTOS_LIMIT
- `404`: CLIENT_NOT_FOUND, DESIGN_NOT_FOUND

## Changes

- **2026-10-11** `571d5e944994`: 1 info
  - endpoint added

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