Skip to main content
POST
Upload an image
This is a legacy endpoint for existing integrations. New integrations should use the public v1 API. Upload each source photo once and keep the returned id. It is ready to use in your creation request; there is no generation to wait for at this step. General uploads allow up to 15 MiB. A video-last-frame upload allows up to 10 MiB and must meet the video frame requirements.

Authorizations

Authorization
string
header
required

Create an API key in Studio → account menu → API Keys. Keep it on your server.

Body

multipart/form-data
file
file
required

The image file.

type
string
required

Purpose of this upload. For training, use the asset-specific upload endpoint.

Example:

"virtual-try-on-outfit"

Response

Upload a JPEG, PNG, or WebP file. General uploads allow up to 15 MiB; video-last-frame allows 10 MiB. Use the returned id in later requests.

id
string<uuid>
required

Resource ID.

status
enum<string>
required

Job state. Only completed has a finished result.

Available options:
pending,
generating,
completed,
failed,
policy_blocked,
nsfw_filtered
path
string | null

Result URL. Can be null while the job is pending.

watermarked_path
string | null
width_px
integer | null
height_px
integer | null
size_bytes
integer | null
extension
string | null
is_generated
boolean
for_training
boolean

Whether the upload is a reusable asset reference.

task
string | null

Operation that created this job.

type
string | null
created_timestamp
string<date-time>
finish_timestamp
string<date-time> | null
fail_reason
string | null

Human-readable failure detail.

failure_code
enum<string> | null

Machine-readable failure category, when available.

Available options:
input_rejected,
provider_unavailable,
queue_timeout,
policy_blocked
asset_ids
string<uuid>[] | null

Linked reusable assets.

Resource ID.

versions
object[]

Related versions. May be omitted or empty. Never infer a new version is completed from the parent status.