---
title: "Write a film plan and quote its price"
method: POST
path: "/v1/films/plan"
tags: ["films"]
---

# Write a film plan and quote its price

`POST /v1/films/plan`

## 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/plan`
- Auth: HTTP bearer

Turns one sentence into a script: title, cast, scenes and dialogue, with the price of making it. Free to call. The plan is kept for 24 hours; pass its plan_id to POST /v1/films to make the film.

## Request body

- FilmPlanRequest
  - `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=...
  - `brief` string, required: What the film is about, in your own words.

## Response `200`

Successful Response

- FilmPlanResponse
  - `plan_id` string, required
  - `title` string, required
  - `logline` string, required
  - `style` string, required
  - `characters` PlanCharacter[], required
    - `id` string, required
    - `name` string, required
    - `description` string, required
  - `scenes` PlanScene[], required
    - `index` integer, required
    - `duration_s` integer, required
    - `setting` string, required
    - `action` string, required
    - `camera` string, required
    - `characters` string[], required
    - `dialogue` PlanLine[], required
      - `character_id` string, required
      - `line` string, required
  - `total_duration_s` integer, required
  - `estimated_cost_cents` integer, required
  - `estimated_cost_range` CostRange, required
    - `min` integer, required
    - `max` integer, required
  - `expires_at` string, 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.
- `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)
