Catalog ProAPI Docs

Create a model

Easiest: make your models in the dashboard

Open your dashboard → Models to create, preview and hide models in a few clicks — no code needed. These endpoints are here for when you want to do the same from your own system, for example to sync the list into your app or create models automatically.

POSThttps://api.catalogpro.app/businessApi/models

Makes a new AI fashion model. It takes about a minute; once it is ready it appears in GET /models and you can use its model_id for Clothing photos.

Before you use it

Pick a group

GroupWhat to send
Men / Womengender only. Optional age_range: auto, young_adult, adult or mature.
Teens (18–22)gender and "age_range": "teen_18_22". Leave out audience — Teens are adult models.
Kids (1–17)gender, "audience": "kids" and an age band: child_1_2, child_3_5, child_6_8, child_9_12 or child_13_17. Leave body type, height and facial hair out (or auto).

What to send

A JSON body. Only gender is required; anything you leave out is chosen for you.

FieldRequired?What to send
X-Api-KeyRequiredYour API key, as a header. Send Content-Type: application/json too.
genderRequiredmale or female. For Kids this means boy or girl.
audienceOptionalkids for a child model. Leave it out (or adult) for Men, Women and Teens.
age_rangeOptionalSee Pick a group above. Required for Kids.
sizeOptional1 square (1024×1024) or 2 tall (768×1024) for the model's photo.
ethnicity, skin_color, hair_style, hair_colorOptionalHow the model looks. Values from GET /options → model_traits.
body_type, height, facial_hairOptionalAdults and Teens only. Facial hair applies to male models.

Example request

curl -X POST "https://api.catalogpro.app/businessApi/models" \
  -H "X-Api-Key: cp_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"gender":"female","audience":"kids","age_range":"child_6_8","size":2}'

More bodies: {"gender":"male"} (a man, everything else chosen for you), {"gender":"female","age_range":"teen_18_22"} (a teen girl).

Example response

Status 202 Accepted — the model is being made.

{
  "job_id": "c41d…",           // check it with GET /jobs/{job_id}
  "model_id": "5b0e3f1c-…",    // the model's id, usable once the job is completed
  "status": "queued",
  "gender": "female"
}

When it's ready

Check GET /jobs/{job_id} once every 15 seconds. When the status is completed, the model is in GET /models and its model_id works for clothing photos. If it fails, the slot is given back.

Errors you might see

CodeWhat it meansWhat to do
400 INVALID_REQUESTA field is missing or not allowed — for example Kids without an age band, or a Kids model with a body type.The message says which field.
400 MODEL_GENDER_REQUIREDYour last free slot is kept for a group you don't have yet.Create a model in the group the message names, or hide a model you don't need.
403 MODEL_LIMIT_REACHEDYou already have 25 models.Hide the ones you don't want to offer, and keep using the rest.