---
title: "Make a film"
method: POST
path: "/v1/films"
tags: ["films"]
---

# Make a film

`POST /v1/films`

## Request

- Base URL: `https://api.corent.tech` (the document declares no server; this is the origin it was published from)
- URL: `https://api.corent.tech/v1/films`
- Auth: HTTP bearer

Starts a film from a plan_id (or straight from a brief) and returns at once. The estimate is held on your balance while the film is made; you pay what it really cost, never more than the estimate or max_cost_cents. A film that fails or is cancelled is not charged. A 50 second 720p film takes about 15 to 30 minutes. Idempotency-Key is honoured.

## Headers

- `Idempotency-Key` string, nullable

## Request body

- FilmCreateRequest
  - `duration_s` integer: Length of the finished film, 10 to 120 seconds.
  - `aspect_ratio` '16:9' | '9:16' | '1:1': Frame shape.
  - `resolution` '720p' | '1080p': Output resolution. 1080p costs about 2.25 times more.
  - `language` string, nullable: Language for the dialogue. Defaults to the brief's language.
  - `customer_id` string, nullable: Optional tag for YOUR end user, so you can attribute spend: 1 to 128 characters from A-Z a-z 0-9 . _ : @ -. Stored on the job, returned on receipts, and filterable with GET /v1/account/usage?customer_id=...
  - `plan_id` string, nullable: A plan from POST /v1/films/plan. Its script and options are used as they are.
  - `brief` string, nullable: Or skip the plan step and pass a brief.
  - `max_cost_cents` integer, required: The most you agree to pay. The film is refused if its estimate is higher, and the bill never goes above it.
  - `webhook_url` string, nullable: https URL that receives the finished (or failed, or cancelled) film.
  - `webhook_secret` string, nullable: When set, deliveries carry X-Corent-Signature.

## Response `202`

Successful Response

- FilmAccepted
  - `film_id` string, required
  - `status` string, required
  - `estimated_cost_cents` integer, required

## Other responses

- `400`: Invalid request (bad parameters or input).
- `401`: Missing or invalid API key.
- `402`: Insufficient prepaid balance.
- `403`: API key lacks the required capability scope.
- `404`: plan_id not found or expired.
- `422`: Prompt not allowed, or request failed validation.
- `429`: Rate limit, concurrency, or daily spend cap reached.
- `502`: Every eligible provider failed; try again.
- `503`: Films are not switched on yet, or no script writer is available.

---

[API](https://skmtc.dev/corent/apis/corent-api.md) · [All operations](https://skmtc.dev/corent/apis/corent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/corent/apis/corent-api/revisions/57168ff53efe?raw)
