# Add Character View

`POST /v1/characters/{id}/views`

Add one of your own images of this person from another angle (from behind, a pose, a close-up), so the body stays the same in every shot.

The character's sheet shows the face and upper body; anything it does not show is drawn anew each time. A view fills that in: an image of the same person from your account (`GET /v1/images`), with a `label` saying what it shows, for example `close-up of her buttocks from behind` or `close-up between her legs`. Pick views you are happy with: marks, proportions and anatomy are kept as they appear in them.
Close-ups of one body area work best (the buttocks with their moles, the intimate area from the front or from behind). A full-body view keeps the body too but pulls the pose and framing toward its own: a standing view turned a face-down prompt into a standing shot in our tests, where a close-up of the same body kept the prompt's pose.
Requests with the character then send the views that fit the prompt after the sheet (up to 2, picked from the labels; `views` on the request chooses them yourself), and the model keeps that body: the same proportions, skin, moles, freckles and intimate anatomy, with the pose, angle, clothing and setting from the prompt. `character_views` in the response lists the views sent.
Free. Up to 8 views per character; adding the same whole image again returns the character unchanged. The label is screened like a prompt. A close-up is easiest to make with `crop`: draw the box around the area on any of your images of her.

Base URL: `https://api.spicyapi.com`

## Authorizations

- `Authorization` (string, header, required): Bearer authentication header of the form `Bearer <token>`, where `<token>` is your SpicyAPI key (`sk-spicy-…`). Create one in the dashboard under API Keys.

## Body (application/json)

- `image_url` (string, required): One of your own generated images of this person (`GET /v1/images`).
- `label` (string, required): What the image shows, 1 to 80 characters: the area and the angle, e.g. `close-up of her buttocks from behind`.
- `crop` (object, optional): Optional `{ x, y, width, height }` in fractions of the image (0 to 1, from its top left corner): only that area becomes the view, stored as a new image in your library (`source_url` and `crop` on the view say where it came from). At least 256 pixels on each side. Use it to make a close-up of one area from a full-body image.

## Request

```bash
curl --request POST \
  --url https://api.spicyapi.com/v1/characters/chr_9f2a1c3b7d4e5a60/views \
  --header 'Authorization: Bearer $SPICYAPI_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "image_url": "https://cdn.spicyapi.com/outputs/…/sj_7c2e…-0.png",
    "label": "close-up of her buttocks from behind",
    "crop": { "x": 0.15, "y": 0.5, "width": 0.7, "height": 0.4 }
  }'
```

## Response: 201 application/json

Character

- `id` (string, required): Character id, `chr_...`.
- `name` (string, required): The label you gave.
- `sheet_url` (string | null, required): The rendered reference sheet (also listed in `GET /v1/images` once the character is active). `null` while the character is `under_review`.
- `source_urls` (string[], required): The images it was built from. Empty while the character is `under_review`.
- `description` (string, required): Text descriptor of the person, appended to prompts that use the character.
- `imported` (boolean, required): `true` for a character brought in with `POST /v1/characters/import`.
- `views` (object[], required): Body views (`id`, `label`, `url`, and for a cropped view `source_url` and `crop`): your own images of this person from other angles, added with `POST /v1/characters/{id}/views`. Empty while `under_review`.
- `status` (string, required): `active`, or `under_review` for an import a person has to approve first. Using an `under_review` character returns 409.
- `created` (integer | null, optional): Unix timestamp.

```json
{
  "id": "chr_9f2a1c3b7d4e5a60",
  "object": "character",
  "name": "Mara",
  "sheet_url": "https://cdn.spicyapi.com/outputs/a1b2/chr_9f2a1c3b7d4e5a60.png",
  "views": [
    { "id": "cv_3b1f9a20c4d7", "label": "close-up of her buttocks from behind", "url": "https://cdn.spicyapi.com/outputs/a1b2/cv_3b1f9a20c4d7.png", "source_url": "https://cdn.spicyapi.com/outputs/a1b2/sj_7c2e…-0.png", "crop": { "x": 0.15, "y": 0.5, "width": 0.7, "height": 0.4 } }
  ],
  "status": "active",
  "created": 1758553200
}
```
