Skip to main content
Both endpoints proxy OpenRouter’s image and video generation with the same request and response bodies. List the models with GET /v1/images/models and GET /v1/videos/models; both lists are free and not rate-limited and include a predev price object per row.

Images

POST /v1/images returns generated images synchronously and is charged when the response is returned.
Use credits_per_image from the model row to estimate cost; the actual charge follows usage.cost like every other call.

Video

Video generation is asynchronous:
  1. POST /v1/videos submits the job and returns a job id.
  2. GET /v1/videos/{jobId} reports status.
  3. GET /v1/videos/{jobId}/content returns the finished video.
The job is charged when a status poll reports completion, not at submission. Poll until the status is terminal before reading /content; the status values and body fields are OpenRouter’s, described in the OpenRouter docs. Jobs belong to the workspace that created them; another workspace’s job id returns 404.