Dry-run a post before creating it
const url = 'https://api.dropslate.top/v1/posts/plan';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"targets":{"accountIds":["example"],"groupId":"example"},"mediaIds":["example"],"text":"example","title":"example","tags":["example"],"perPlatform":{"youtube":{"visibility":"public","madeForKids":false,"useCoverAsThumbnail":true,"category":"27","language":"uk","audioLanguage":"en-US","recordingDate":"2026-09-01","license":"youtube","embeddable":true,"publicStatsViewable":true,"containsSyntheticMedia":false,"paidProductPlacement":false,"notifySubscribers":true,"playlistId":"PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"},"tiktok":{},"instagram":{"contentType":"reels","collaborators":["example"],"shareToFeed":true,"altText":"example","coverMs":1},"facebook":{"contentType":"photo","link":"https://example.com"},"threads":{"topicTag":"example","linkAttachment":"https://example.com","altText":"example","replyControl":"everyone"}},"overrides":{"threads":{"text":"A shorter line for Threads."},"youtube":{"title":"The full title","tags":["dogs","history"]}},"when":"now"}'};
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/plan \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "targets": { "accountIds": [ "example" ], "groupId": "example" }, "mediaIds": [ "example" ], "text": "example", "title": "example", "tags": [ "example" ], "perPlatform": { "youtube": { "visibility": "public", "madeForKids": false, "useCoverAsThumbnail": true, "category": "27", "language": "uk", "audioLanguage": "en-US", "recordingDate": "2026-09-01", "license": "youtube", "embeddable": true, "publicStatsViewable": true, "containsSyntheticMedia": false, "paidProductPlacement": false, "notifySubscribers": true, "playlistId": "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf" }, "tiktok": {}, "instagram": { "contentType": "reels", "collaborators": [ "example" ], "shareToFeed": true, "altText": "example", "coverMs": 1 }, "facebook": { "contentType": "photo", "link": "https://example.com" }, "threads": { "topicTag": "example", "linkAttachment": "https://example.com", "altText": "example", "replyControl": "everyone" } }, "overrides": { "threads": { "text": "A shorter line for Threads." }, "youtube": { "title": "The full title", "tags": [ "dogs", "history" ] } }, "when": "now" }'CLAUDE.md “plan before create”: no side effects, no write scope needed. Same body as POST /posts without confirm; lists a row and any issue per account. Call this first and show its table before POST /posts.
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).
Example
27BCP-47 language of the title and description.
Example
ukBCP-47 language spoken in the video.
Example
en-USExample
2026-09-01YouTube altered or synthetic content disclosure.
A playlist on the same channel; a refusal is reported on the post, the video still goes out.
Example
PLrAXtmErZgOeiKm4sgNOknGvNjby9efdfobject
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
Example
{ "threads": { "text": "A shorter line for Threads." }, "youtube": { "title": "The full title", "tags": [ "dogs", "history" ] }}Responses
Section titled “ Responses ”One row per account, an ok flag and the quota this would use.
object
object
object
The same monospaced table MCP tools show.
Example
{ "status": "draft"}