Skip to main content
PATCH
Update one of your models
Updates the editable fields of a model owned by your organization and returns the updated model. name, default_prompt, and instruction are editable; ownership and privacy fields cannot be changed. instruction is the model’s always-applied guidance (max 8000 characters), injected as mandatory (“MUST FOLLOW”) direction into every image and video generation that composes the model — it maps to the user_instruction returned when you read the model. Omit a field to leave it unchanged — do not send it as an explicit null (send an empty string to clear instruction). Unknown or other-organization ids return 404 not_found. Requires the models.write scope.

Authorizations

Authorization
string
header
required

Organization API key as a bearer token: Authorization: Bearer samsa_sk_....

Path Parameters

model_id
string<uuid>
required

Body

application/json

PATCH /models/{id} body — the publicly editable fields only (ADR §10, ticket §3).

Ownership / privacy fields (owner_id, private, organization_id) are intentionally NOT accepted. A field may be omitted (left unchanged) but must not be sent as an explicit null — the runtime rejection lives in _reject_explicit_null (mirroring ApiKeyUpdate), and _string_only_patch_schema keeps the EXPORTED OpenAPI honest by advertising each field as a plain string (no null branch) so generated clients and the API playground cannot offer null as a value (SAM-639).

name
string

New model name.

Required string length: 1 - 100
Example:

"Renamed Model"

default_prompt
string

New default prompt / capability description.

Maximum string length: 2000
Example:

"A refined flat-design illustration in the Acme brand palette."

instruction
string

New always-applied model instruction (max 8000 chars) — injected into every generation that composes the model. Accepted on write under the name instruction (mirroring model creation); it maps to the user_instruction field returned on read (PublicModelDetail).

Maximum string length: 8000
Example:

"Always render on a clean, seamless white background."

Response

Successful Response

A single model with full detail — the GET /models/{id} body (ADR §10).

id
string<uuid>
required
name
string
required
Example:

"Acme Brand Style"

status
enum<string>
required

Creation status: pending, processing, completed, or failed.

Available options:
pending,
processing,
completed,
failed
Example:

"completed"

is_ready
boolean
required

True when the model is completed AND active — usable for generation.

Example:

true

created_at
string<date-time>
required
updated_at
string<date-time>
required
category
enum<string> | null

Model category — one of style, object, person, setting.

Available options:
style,
object,
person,
setting
Example:

"style"

thumbnail_url
string | null

Presigned, time-limited HTTPS thumbnail URL (null when the model has none).

Example:

"https://cdn.samsa.ai/models/…/thumbnail.webp?X-Amz-Signature=…"

reference_image_urls
string[]

Presigned, time-limited HTTPS URLs of the reference images used to create the model.

Example:
user_instruction
string | null

Free-text guidance for how to use the model.

Example:

"Use for hero banners and social posts."

default_prompt
string | null

The model's default prompt / capability description.

Example:

"A bold flat-design illustration in the Acme brand palette."

trigger_words
string[]

Trigger words associated with the model.

Example: