Create and schedule posts
const url = 'https://api.dropslate.top/v1/posts';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"targets":{"accountIds":["acc_01"]},"mediaIds":["med_01"],"text":"Launch day.","when":"now","confirm":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.dropslate.top/v1/posts \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "targets": { "accountIds": [ "acc_01" ] }, "mediaIds": [ "med_01" ], "text": "Launch day.", "when": "now", "confirm": true }'One post per account: the same text sent to three accounts creates three posts. Requires the write scope. POST /posts/plan (no write needed) dry-runs the same body first and lists any issue per account without creating anything - CLAUDE.md’s “plan before create”.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Per-network settings keyed by platform. Unknown keys are refused.
object
Everything videos.insert can write. Not settable through the YouTube API (set in YouTube Studio): Test & Compare, recording location, end screens, cards, monetization, comments.
object
The first image of the post becomes the thumbnail (the channel must be verified for custom thumbnails).
VideoCategories id; default 22 (People & Blogs).
BCP-47 language of the title and description.
BCP-47 language spoken in the video.
YouTube altered or synthetic content disclosure.
A playlist on the same channel; a refusal is reported on the post, the video still goes out.
object
object
Up to 3 usernames invited as collaborators (1.3.0: was 20).
Reels only.
The image of a feed post (1.3.0); not sent on carousels yet.
The Reel cover frame, milliseconds into the video (1.3.0).
object
Text posts only (1.3.0). A video takes the post title.
Base tags are not appended to a thread; it takes one topicTag. replyControl is accepted and ignored since 1.3.0.
object
A link preview on a thread with no files (1.3.0).
Images (1.3.0).
A network’s own text, title and tags instead of the post’s: each account of that network gets overrides.<network>.text ?? text, and so on. Only networks with a connector.
object
object
object
object
object
object
Must be true; the guard against an accidental publish.
Example
{ "targets": { "accountIds": [ "acc_01" ] }, "mediaIds": [ "med_01" ], "text": "Launch day.", "when": "now", "confirm": true}Responses
Section titled “ Responses ”Created; queued if scheduled, draft if not.
object
object
object
The post in one sentence, the same one the dashboard and an MCP agent show.
Example
{ "posts": [ { "tz": "Europe/Kiev", "status": "draft", "createdVia": "ui", "statusLine": "Queued. YouTube · What We Made · 12 Sep, 18:00 (Kyiv)." } ]}Monthly post quota exceeded for the plan.
object
Example
{ "code": "not_found", "message": "The post does not exist.", "hint": "Check the id and try again."}The key is missing the “write” scope, or this route needs a signed-in session instead of a key.
object
Example
{ "code": "not_found", "message": "The post does not exist.", "hint": "Check the id and try again."}The plan has issues - see POST /posts/plan first.
object
Example
{ "code": "not_found", "message": "The post does not exist.", "hint": "Check the id and try again."}More than 600 requests in ten minutes for this key, or the workspace hit 60 post requests in an hour.
object
Example
{ "code": "not_found", "message": "The post does not exist.", "hint": "Check the id and try again."}Headers
Section titled “Headers”Seconds to wait.