roasOS
API referenceModels

Run ltx-2.3 (reframe)

Submit a reframe job to ltx-2.3. The request carries the real fields of this model; there is no hidden switch on a model parameter. Send `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it. Attach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`. Pass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.

POST
/v1/reframe/ltx-2.3

Submit a reframe job to ltx-2.3. The request carries the real fields of this model; there is no hidden switch on a model parameter.

Send quote_only: true to price the request for free, then send the same body with the returned quote_id to run it.

Attach identity, product, or a first frame by resource id (avatar_id, product_id, scene_id) or by a workspace-owned cdn.roasos.com URL. Any other URL is 400 reference_media_not_workspace_owned.

Pass a webhook_url and roasOS POSTs you the same job envelope GET /v1/jobs/{id} returns when the job finishes, signed with X-RoasOS-Signature and retried on failure. The URL must be HTTPS and reachable (400 invalid_url otherwise), and first-party keys cannot register webhooks (400 webhook_url_not_supported_for_key). See Webhooks above for verification. Polling links.status works too.

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Use your API key as the bearer token: Authorization: Bearer roasos_sk_...

In: header

Header Parameters

Idempotency-Key*string

A unique string that makes retries safe. Any value 16-255 characters; reuse it only when retrying the exact same request.

Match^[A-Za-z0-9._:-]+$
Length16 <= length <= 255
X-RoasOS-Project?string

Optional label to group this request under one of your projects. Appears in your usage records.

Match^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$
Length1 <= length <= 64
X-RoasOS-Cost-Center?string

Optional label to attribute this request to a cost center. Appears in your usage records.

Match^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$
Length1 <= length <= 64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/reframe/ltx-2.3" \  -H "Idempotency-Key: stringstringstri" \  -H "Content-Type: application/json" \  -d '{    "video_url": "http://example.com",    "aspect_ratio": "1:1",    "resolution": "720p"  }'
{  "data": {    "kind": "quote",    "quote_id": "3c071a1d-db86-46a7-9dc8-72ba3fbca992",    "credits": 0,    "expires_at": "string",    "pricing_version": "string",    "confirmation": {      "property1": null,      "property2": null    }  }}

Run auto-subtitle (captions)

Submit a captions job to auto-subtitle. The request carries the real fields of this model; there is no hidden switch on a model parameter. Send `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it. Attach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`. Pass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.

Run ideogram-v3 (reframe)

Submit a reframe job to ideogram-v3. The request carries the real fields of this model; there is no hidden switch on a model parameter. Send `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it. Attach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`. Pass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.