Install
openclaw skills install @makepost/makepost-com-app-growthManage your social media across 9 platforms — draft captions, hashtags & post ideas, generate AI images, schedule, publish, set recurring autopilot schedules, and trigger webhooks — all through conversation.
openclaw skills install @makepost/makepost-com-app-growthMakePost is a social media scheduling platform built to be driven by AI agents. Draft captions, hashtags, and post ideas, generate AI images, schedule, and publish videos, image carousels, and posts to 9 platforms — TikTok, Instagram, YouTube, Facebook, X, LinkedIn, Threads, Pinterest, and Bluesky — from one place or straight from your AI agent. Set recurring autopilot schedules that auto-publish a queue, and fire signed webhooks into n8n, Zapier, Make, or your own service.
MAKEPOST_API_KEY=sk_live_your_key_here
All requests use Bearer token:
Authorization: Bearer <MAKEPOST_API_KEY>
MCP endpoint: https://makepost.com/api/mcp/
API docs: https://api.makepost.com
list_videos — List uploaded videos ready for posting.
limit (int, default 50) — Max videos to return.upload_video — Upload a video from a public URL into MakePost.
video_url (string, required) — Public URL to .mp4, .mov, .webm, or .m4v. Max 500MB, max 10 minutes.title (string, required) — Video title.caption (string) — Default caption for publishing. Falls back to title if empty.app_id (string) — Project to link to. Accepts project ID or name. Auto-selects if you have one project.cover_timestamp (float) — Seconds into the video to extract as cover frame (e.g. 5.5).cover_image_url (string) — Public URL to a custom cover image (JPEG/PNG/WebP/GIF, max 10MB). Alternative to cover_timestamp. Accepts any public URL directly — no need to upload the cover image separately first.POST /v1/media/upload-file with multipart form data.list_accounts — List connected social media accounts.
list_account_groups — List account groups with their member accounts.
schedule_post — Schedule a video to one or more social media accounts at a specific time.
video_id (string, required) — Video ID from list_videos.account_ids (list of strings, required) — Account IDs from list_accounts.scheduled_at (string, required) — ISO 8601 datetime (e.g. "2026-03-22T15:00:00").timezone (string) — IANA timezone (e.g. "America/New_York"). Defaults to your account timezone.caption (string) — Post caption. Falls back to video script, then title.list_posts — List your posts, optionally filtered by status.
status (string) — Filter: "scheduled", "published", "failed", "pending", or "processing".limit (int, default 50) — Max posts to return (1-100).cancel_scheduled_post — Cancel a scheduled post before it publishes.
post_id (string, required) — Post ID to cancel.reschedule_scheduled_post — Change when a scheduled post will be published.
post_id (string, required) — Post ID to reschedule.scheduled_at (string, required) — New publish time in ISO 8601.timezone (string) — IANA timezone. Defaults to your account timezone.edit_scheduled_post_caption — Edit the caption of a scheduled post.
post_id (string, required) — Post ID to edit.caption (string, required) — The new caption text.get_publishing_results — Check publishing results for a post.
post_id (string, required) — Post ID to check.publish_content — Create and publish content (text, image, video, or carousel) to one or more accounts.
content_type (string, required) — "text", "image", "video", or "carousel".caption (string, required) — Main post caption. Used for all platforms unless overridden by captions.account_ids (list of strings) — Account IDs to post to. Required unless is_draft=True.media_id (string) — Pre-uploaded media ID (from upload_image or upload_video). Required for image/video/carousel.scheduled_at (string) — ISO 8601 datetime. Omit to publish immediately.timezone (string) — IANA timezone for scheduled_at.is_draft (bool, default false) — Save as draft without publishing. Account IDs and captions are stored for later use.title (string) — Optional title (used by YouTube).app_id (string) — Project ID to associate content with (from list_apps).captions (dict) — Per-platform caption overrides, e.g. {"linkedin": "Professional version", "x": "Short version"}.group_ids (list of strings) — Account group IDs to resolve to individual accounts (from list_account_groups).tiktok_is_draft (bool, default false) — Send to TikTok as a draft instead of publishing live. The video appears in the user's TikTok drafts for editing before posting.upload_image — Upload an image from a public URL into MakePost.
image_url (string, required) — Public URL to .jpg, .png, .webp, or .gif. Max 20MB.title (string) — Image title.app_id (string) — Project to link to. Auto-selects if you have one project.POST /v1/media/upload-file with multipart form data.list_drafts — List your draft posts.
limit (int, default 50) — Max drafts to return (1-100).publish_draft_tool — Publish a draft post (immediately or scheduled).
post_id (string, required) — Draft post ID from list_drafts.account_ids (list of strings) — Account IDs. If omitted, uses accounts stored when the draft was created.scheduled_at (string) — ISO 8601 datetime. Omit for immediate.timezone (string) — IANA timezone.update_draft_tool — Update a draft post's content, accounts, or captions.
post_id (string, required) — Draft post ID.caption (string) — New main caption text.content_type (string) — New content type.media_id (string) — New media ID.account_ids (list of strings) — Updated list of account IDs for this draft.captions (dict) — Updated per-platform caption overrides, e.g. {"x": "Short", "linkedin": "Long"}.delete_draft_tool — Delete a draft post permanently.
post_id (string, required) — Draft post ID to delete.bulk_publish_content — Publish, schedule, or draft up to 20 content items in a single request.
items (list, required) — Array of content items (max 20). Each item has the same fields as publish_content: content_type, caption, account_ids, media_id, scheduled_at, timezone, is_draft, title, app_id, captions, group_ids, tiktok_is_draft.bulk_upload_media — Upload up to 20 images or videos from public URLs in a single request.
items (list, required) — Array of media items (max 20). Each item has: url (string, required), type ("image" or "video", default "image"), title (string), app_id (string).bulk_cancel_posts — Cancel up to 50 scheduled posts in a single request.
post_ids (list of strings, required) — Post IDs to cancel (max 50).bulk_reschedule_posts — Reschedule up to 50 scheduled posts in a single request.
items (list, required) — Array of reschedule items (max 50). Each item has: post_id (string, required), scheduled_at (string, required — ISO 8601 datetime), timezone (string).list_apps — List your projects.
app_id when uploading or publishing to associate content with that project.generate_caption — Draft a post caption from a short brief.
brief (string, required) — What the post is about (topic, angle, key points).platform (string) — Target platform (e.g. "tiktok", "linkedin"). Tailors length and style to the platform's norms.tone (string) — Desired tone (e.g. "casual", "professional", "playful").generate_hashtags — Generate relevant hashtags for a topic.
topic (string, required) — The subject to find hashtags for.count (int) — How many hashtags to return.platform (string) — Target platform for platform-appropriate tags.generate_post_ideas — Brainstorm distinct post ideas for a theme.
topic (string, required) — The theme or product to generate ideas for.count (int) — How many ideas to return.generate_title — Write a short, viral hook or title.
topic (string, required) — What the content is about.platform (string) — Target platform (e.g. "youtube" for a video title).generate_image — Generate an AI image (Google Imagen) ready to post.
prompt (string, required) — Description of the image to create.aspect_ratio (string) — Image shape: "1:1" (default), "3:4", "4:3", "9:16", or "16:9".app_id (string) — Project to link the resulting media to.media_id plus the image URL — use the media_id directly with publish_content or schedule_post. Counts toward your monthly AI usage.get_usage — Check your AI usage and plan limits.
get_platform_rules — Get per-platform posting rules so you post correctly.
platform (string) — Optional. A single platform to look up; omit to return rules for all 9.list_webhooks_tool — List your registered webhook endpoints.
create_webhook_tool — Register a webhook endpoint to receive signed events.
url (string, required) — HTTPS endpoint MakePost will POST to.events (list of strings) — Events to subscribe to (e.g. "post.published", "post.failed"). Omit to receive all events.secret — shown only once. Each delivery includes an X-MakePost-Signature header (HMAC-SHA256 of the body using your secret); verify it to confirm authenticity.delete_webhook_tool — Remove a webhook endpoint.
webhook_id (string, required) — Endpoint ID to delete.Set-and-forget autopilot: create a posting plan with recurring weekday + time slots, add media to its queue, and each slot automatically publishes the next queued item.
create_posting_plan_tool — Create a recurring posting plan.
name (string, required) — Plan name.account_ids (list of strings, required) — Accounts the plan publishes to.slots (list, required) — Recurring slots, each with a weekday and a time (e.g. Monday 09:00, Thursday 17:30).timezone (string) — IANA timezone the slots are interpreted in (e.g. "America/New_York").list_posting_plans_tool — List your recurring posting plans.
add_to_posting_queue — Add uploaded media to a plan's queue.
plan_id (string, required) — The posting plan.media_id (string, required) — Pre-uploaded media (from upload_image, upload_video, generate_image, or bulk_upload_media).caption (string) — Caption to use when this item publishes.list_posting_queue — View the queued items for a plan.
plan_id (string, required) — The posting plan.pause_posting_plan — Pause a plan so its slots stop auto-publishing.
plan_id (string, required) — The plan to pause.resume_posting_plan — Resume a paused plan.
plan_id (string, required) — The plan to resume.delete_posting_plan_tool — Delete a posting plan.
plan_id (string, required) — The plan to delete.The MCP tools above also have equivalent REST API endpoints at https://api.makepost.com/v1/. Full interactive docs at https://api.makepost.com.
New endpoint groups:
POST /v1/ai/caption, POST /v1/ai/hashtags, POST /v1/ai/ideas, POST /v1/ai/title, POST /v1/ai/image, and GET /v1/ai/usage.GET /v1/platforms — per-platform caption limits, supported media, and carousel sizes.GET /v1/webhooks, POST /v1/webhooks, DELETE /v1/webhooks/{id}, and POST /v1/webhooks/{id}/test. Deliveries are signed with an X-MakePost-Signature (HMAC-SHA256) header.GET /v1/schedules, POST /v1/schedules, DELETE /v1/schedules/{id}, POST /v1/schedules/{id}/pause, POST /v1/schedules/{id}/resume, and POST /v1/schedules/{id}/queue.Direct file upload (REST API only — not available via MCP):
POST https://api.makepost.com/v1/media/upload-file
Content-Type: multipart/form-data
Authorization: Bearer <MAKEPOST_API_KEY>
file: <binary> (required) Image or video file
type: "image"|"video"|"cover" (default "image")
title: string (optional)
app_id: string (optional)
REST API: Cover Image Upload — Upload a cover image without creating a media record.
POST /v1/media/upload-file with type: "cover" — returns {"url": "...", "type": "cover"} with no media_id.POST /v1/media/upload with type: "cover" — same, from a public URL.cover_image_url when uploading a video.TikTok, Instagram, YouTube, Facebook, X, LinkedIn, Threads, Pinterest, Bluesky