Write a story cast (free draft)
generate_castWrites the CAST for an AI Video Story series (named characters, each with a role and a one-line description) as a DRAFT for the user to read. FREE: it spends no tokens, generates no portraits and saves nothing to the character library. WHEN: as soon as the episode idea is settled, on a series whose cast.required is true (or whose user wants custom characters). Do NOT ask permission: it costs nothing and the webapp writes this roster automatically at the same point. Never call it for a cast.writer_owned series, which casts itself. WHAT IT RUNS: a showrunner model reads the series and your idea and answers with the cast that idea needs; IT DOES NOT WRITE THE STORY. The response's idea is the one you sent, unchanged (translated if needed); with NO idea the call authors a logline and returns that, which the user has not seen: show it and ask whether to keep it. AFTER: show the names and roles, one line each, and never present their own idea back as news. If they dislike the roster, call this AGAIN with a sharper idea (a re-draft is free and replaces it); never buy portraits for a cast they have not accepted. THE PRICE OF THE NEXT STEP RIDES THIS RESPONSE: portraits_needed (the members whose needs_portrait is true; a preset-bound member arrives photographed and costs nothing) and portrait_models, each with per_portrait_tokens and the roster's total_tokens (default: true is what the series is tuned for). Use those figures verbatim; never multiply anything yourself. generate_cast_portraits with this draft_id is the money step (the draft stays redeemable about two hours). WEBAPP-ONLY: renaming a member, adding your own, adding one from a photo. Never re-draft the whole cast for one member: once portraits are bought, describe_cast_member changes what one member IS. A 400 invalid_request for a series that ships its own FIXED cast, casts itself or has no cast-first flow means: go straight to generate_story_video without a cast. A 429 utility_rate_limited is the free AI-writing allowance shared with the webapp: wait the retry-after, never top up tokens.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| idea | No | The episode idea the cast should serve, one short paragraph: pass the user's idea whenever there is one. Only when omitted does the writer author a logline. | |
| world | No | The visual world for the cast (`fruits`, `humans`, `animals`). Unset lets the writer pick. | |
| language | No | Omit unless the user asked for another language (the series' `defaults.language` is used). Pass the SAME language to `generate_story_video`. | |
| series_id | Yes | The series id, exactly as `list_series` returns it. |