---
title: "Get traits, prices and limits"
method: GET
path: "/personas/catalog"
tags: ["Personas"]
---

# Get traits, prices and limits

`GET /personas/catalog`

## Request

- Base URL: `https://api.cut.pro/api/v1`
- URL: `https://api.cut.pro/api/v1/personas/catalog`
- Auth: API key in header `X-Api-Key`

Everything a client needs to build the persona form without hardcoding it: every trait option, the defaults, which traits still apply when reference photos are used, the prices in credits and the limits of a source video. Prices follow what the models cost and can change at any time, so read them from here.

## Response `200`

Response for status 200

- object
  - `chip_options` object, required: Trait group (the keys of `chips`) to the options it accepts.
  - `default_chips` object, required: One option per trait group. `GET /personas/catalog` lists every option and the defaults.
    - `vibe` 'natural' | 'bold' | 'eccentric', required
    - `gender` 'female' | 'male' | 'androgynous', required
    - `age` '18_24' | '25_34' | '35_44' | '45_59' | '60_plus', required
    - `origin` 'latin' | 'african' | 'european' | 'east_asian' | 'south_asian' | 'middle_eastern' | 'indigenous' | 'mixed', required
    - `skin` 'very_light' | 'light' | 'medium' | 'olive' | 'brown' | 'dark', required
    - `eyes` 'brown' | 'hazel' | 'green' | 'blue' | 'gray' | 'amber' | 'ice_blue', required
    - `hair_style` 'buzz' | 'short' | 'long_straight' | 'long_wavy' | 'curly' | 'coily' | 'braids' | 'bald' | 'bob' | 'pixie' | 'bowl' | 'mullet' | 'mohawk' | 'afro' | 'dreadlocks' | 'pompadour' | 'slicked_back' | 'high_bun' | 'pigtails' | 'beehive' | 'perm' | 'shag', required
    - `hair_color` 'black' | 'brown' | 'blonde' | 'red' | 'gray' | 'dyed' | 'platinum' | 'white' | 'pink' | 'blue' | 'green' | 'purple' | 'two_tone' | 'highlights', required
    - `facial_hair` 'photo' | 'none' | 'stubble' | 'full_beard' | 'long_beard' | 'goatee' | 'moustache' | 'handlebar' | 'pencil', required
    - `face` 'none' | 'dimples' | 'high_cheekbones' | 'full_lips' | 'thick_brows' | 'unibrow' | 'gap_teeth' | 'strong_jaw' | 'hooked_nose' | 'button_nose' | 'jug_ears' | 'eye_bags' | 'cleft_chin', required
    - `body` 'photo' | 'slim' | 'average' | 'athletic' | 'curvy' | 'plus_size' | 'muscular' | 'lanky', required
    - `outfit` 'photo' | 'basic' | 'streetwear' | 'sporty' | 'y2k' | 'goth' | 'punk' | 'suit' | 'retro_70s' | 'aerobics_80s' | 'grunge' | 'preppy' | 'boho' | 'workwear' | 'cowboy' | 'skater' | 'minimalist' | 'glam' | 'techwear' | 'beach', required
    - `accessory` 'photo' | 'none' | 'sunglasses' | 'cap' | 'beanie' | 'bucket_hat' | 'cowboy_hat' | 'bandana' | 'headband' | 'headphones' | 'gold_chain' | 'pearl_necklace' | 'hoop_earrings' | 'scarf' | 'crossbody_bag', required
    - `mark` 'none' | 'glasses' | 'freckles' | 'beauty_mark' | 'nose_piercing' | 'hand_tattoo' | 'hair_streak' | 'septum_ring' | 'face_tattoo' | 'brow_scar' | 'brow_slits' | 'gold_grill' | 'braces' | 'vitiligo' | 'ear_piercings' | 'face_gems' | 'bleached_brows', required
  - `face_photo_groups` string[], required: Trait groups that still apply when the persona is made from face photos. The others are ignored: the photos decide them. In these groups `photo` keeps the trait as the photos show it; without photos it falls back to the default.
  - `max_face_photos` number, required: Most reference photos one persona accepts.
  - `video_styles` string[], required: Values `style` accepts in `GET /personas/swap/quote` and `POST /personas/{id}/videos`.
  - `pricing` object, required
    - `photo_credits` number, required: One persona photo from traits only.
    - `photo_with_references_credits` number, required: One persona photo made from reference photos, and every one-line edit (`note`) of an existing photo.
    - `scene_photo_credits` number, required: One photo of a saved persona in a scene (`POST /personas/{id}/shots`); a `style` doubles it.
    - `video_economy_credits_per_second` number, required: Per second of the source at `quality: economy`.
    - `video_standard_credits_per_second` number, required: Per second of the source at `quality: standard`.
    - `video_short_max_seconds` number, required: Longest source billed at the short rate of `quality: high`.
    - `video_short_credits_per_second` number, required: Per second of a source up to `video_short_max_seconds`, at `quality: high`.
    - `video_mid_max_seconds` number, required: Longest source billed at the mid rate of `quality: high`.
    - `video_mid_credits_per_second` number, required: Per second of a source longer than `video_short_max_seconds` and up to `video_mid_max_seconds`, at `quality: high`.
    - `video_long_credits_per_second` number, required: Per second of the whole source when it is longer than `video_mid_max_seconds`, at `quality: high`.
  - `video_limits` object, required
    - `min_seconds` number, required
    - `max_seconds` number, required: Longest source at `quality: high`.
    - `standard` object, required: Tighter limits that apply at `quality: standard` and `quality: economy`, on top of the ones here.
      - `max_seconds` number, required
      - `max_file_size` number, required: Bytes.
      - `extensions` string[], required
    - `max_file_size` number, required: Bytes.
    - `min_side` number, required: Smallest width and height, in pixels.
    - `max_side` number, required: Largest width and height, in pixels.
    - `extensions` string[], required

## Other responses

- `502`: Response for status 502

---

[API](https://skmtc.dev/cut/apis/cutpro-api.md) · [All operations](https://skmtc.dev/cut/apis/cutpro-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cut/apis/cutpro-api/revisions/89d0bafe529c?raw)
