Browse the docs
Developers / Docs / Posting
Post or schedule a video
Posts a finished Clippie video to a connected channel (YouTube today), now or at a scheduled time up to 180 days ahead. Clippie uploads it at that time, even with nothing open. Needs a paid Clippie plan and spends no credits. It goes out under the user's name, so confirm the channel, title, visibility and time with the user first, and never pick public for them. Get the channel id from list_social_channels; the video is a completed render job (jobId), a libraryId, or its videoUrl. Check the result later with get_post.
Paste it into any AI assistant. The shortcuts open with the prompt typed in; nothing is sent until you press enter.
At a glance
- REST
POST https://api.clippie.ai/v1/social/posts
- MCP tool
post_video
- Scope
publish
- Cost
- Spends nothing. Needs the
publishscope and a paid plan, and posts under the user's name: confirm the details with them first.
- Spends nothing. Needs the
- Limit bucket
social_post(see Rate limits)
Parameters
channelId- In:
- body
- Type:
- string
- Required:
- Yes
- Description:
- The channel id from list_social_channels. 1-64 chars.
jobId- In:
- body
- Type:
- string
- Required:
- No
- Description:
- A completed render job (job_…), e.g. from render_video. Up to 80 chars.
libraryId- In:
- body
- Type:
- string
- Required:
- No
- Description:
- A video in the user's library (job output.libraryId). Up to 64 chars.
videoUrl- In:
- body
- Type:
- string (URL)
- Required:
- No
- Description:
- A Clippie video URL (job output.videoUrl). Up to 2000 chars.
title- In:
- body
- Type:
- string
- Required:
- Yes
- Description:
- The YouTube title (up to 100 characters). 1-100 chars.
description- In:
- body
- Type:
- string
- Required:
- No
- Description:
- The YouTube description: text, hashtags, links. Up to 5000 chars.
privacy- In:
- body
- Type:
- string
- Required:
- Yes
- Description:
- Who can see it on YouTube. Ask the user; do not assume public. One of
public,unlisted,private.
madeForKids- In:
- body
- Type:
- boolean
- Required:
- No
- Description:
- YouTube "made for kids". Defaults to false.
tags- In:
- body
- Type:
- array of string
- Required:
- No
- Description:
- YouTube tags. Up to 30 items.
scheduledFor- In:
- body
- Type:
- string
- Required:
- No
- Description:
- When to post (ISO 8601 with a time zone, e.g. 2026-11-20T17:00:00-05:00). Leave out to post now.
Example
curl https://api.clippie.ai/v1/social/posts \
-H "Authorization: Bearer $CLIPPIE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channelId": "CHANNEL_ID",
"title": "TITLE",
"privacy": "public"
}'const auth = { Authorization: `Bearer ${process.env.CLIPPIE_API_KEY}` };
const res = await fetch('https://api.clippie.ai/v1/social/posts', {
method: 'POST',
headers: { ...auth, 'Content-Type': 'application/json' },
body: JSON.stringify({
"channelId": "CHANNEL_ID",
"title": "TITLE",
"privacy": "public"
}),
});
if (!res.ok) throw new Error((await res.json()).error.message);
console.log(await res.json());Response
200 with JSON. The full response schema is in the OpenAPI spec.
From an MCP client
Your AI calls post_video with the same fields as JSON arguments. See MCP server to connect one.
{
"name": "post_video",
"arguments": {
"channelId": "CHANNEL_ID",
"title": "TITLE",
"privacy": "public"
}
}