---
title: "Start a calendar of video ideas"
method: POST
path: "/content-plans"
---

# Start a calendar of video ideas

`POST /content-plans`

## Request

- Base URL: `https://clypmint.com/api/v1`
- URL: `https://clypmint.com/api/v1/content-plans`
- Auth: HTTP bearer

Start a content calendar for a topic: count faceless videos (1-31) over days (7-31), each with a title, hook, the exact script, caption, hashtags and a posting time. Best: write the ideas yourself in the conversation and send them as items (taken as written, at once); otherwise Clypmint writes them (this call keeps going until they are written, or tells you to call again with the same operation_id). Makes nothing and spends nothing; answers plan_id, the ideas and the quote (credits a video, room left this month). Show the user the ideas, change them with edit_content_plan, and approve_plan only after their yes. Use for "start a faceless account" or "a month of posts about X". Cost: Free to write; making each video costs about 4 credits (30 s). Same as the MCP tool plan_content.

## Request body

- object
  - `topic` string, required: What the account posts about.
  - `count` integer: How many videos (1-31); leave out when sending items.
  - `days` integer, required: Over how many days (7-31).
  - `items` object[]: Ideas you wrote yourself (title, hook, script, caption, hashtags): taken as written, at once. Without them Clypmint writes the ideas.
    - `title` string, required
    - `hook` string
    - `script` string, required: The exact words the narrator reads, about 2.5 words a second of video.
    - `caption` string
    - `hashtags` string[]
    - `post_at` string, date-time: Left out: Clypmint slots it.
  - `start_at` string, date-time: The first day; tomorrow when left out.
  - `timezone` string
  - `platforms` string[]: Where each post goes; Instagram when left out.
  - `style_id` string
  - `seconds` union
    - 15
    - 30
    - 60
  - `voice` 'matilda' | 'sarah' | 'jessica' | 'alice' | 'liam' | 'chris' | 'brian' | 'george' | 'roger' | 'laura' | 'charlie' | 'river' | 'will' | 'eric' | 'bella' | 'daniel' | 'lily' | 'bill' | 'adam' | 'callum' | 'harry': The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry (sarah: calm, reassuring, health and money; alice: a clear British educator; brian: deep documentary; liam: energetic ads). Leave out to let Clypmint pick one that fits the words. "Voice: <name>" in instructions does the same.
  - `audience` string
  - `instructions` string
  - `operation_id` string: A stable ID for this request. Preserve it on retries. Use a new ID only for a deliberate new request.

## Response `200`

Start a calendar of video ideas

- Result: The tool result, as the MCP tool of the same name returns it.

## Other responses

- `400`: The request is invalid. The message names each field to fix.
- `401`: A valid bearer token (API key or OAuth access token) is required.
- `402`: This account has no allowance left for this, or does not include it. error.checkout_url is where to add it.
- `403`: This needs publishing permission (scope clypmint.publish), or is not open on this account yet.
- `404`: The video, upload, memory or calendar was not found in this account.
- `409`: Busy: an upload or edit is already running, the video changed, or too many upload links are waiting.
- `413`: The request body is too large.
- `422`: Clypmint could not apply it as asked; error.problems names each part.
- `429`: A daily limit was reached (direct edits, caption fixes, upload links).
- `501`: This is not available on Clypmint yet; the message says what to use instead.
- `503`: Clypmint is busy. Try again in a moment.

---

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