Works with all AI agents

Connect your AI agent

Choose your AI agent and connect in seconds.

Add to Claude

Works on every Claude plan, including free. Full Claude guide

  1. 1

    Add to Claude

    One click from Claude’s connector directory.

  2. 2

    Sign up or sign in

    Takes seconds, then you’re sent straight back.

  3. 3

    Ask Claude

    “Plan and schedule my posts for next week.”

POST/posts

Create or schedule a post with the PostEverywhere API

Omit `scheduled_for` to publish immediately; provide it (ISO 8601, assumed UTC when no offset given) to schedule. Set `draft: true` to save a native draft instead (no destinations are created and nothing publishes until `POST /posts/{id}/schedule`). Attach media by id (see [media requirements per platform](/media-requirements)), and use `platform_content` for per-platform overrides — the [Platform Guides](/platforms/instagram) document every option. Field-name handling: camelCase aliases (`accountIds`, `mediaIds`, `scheduledFor`, `platformContent`) and the deprecated `scheduled_at` alias are accepted. Fields whose names imply a different shape (`media`, `media_id`, `mediaId`, `attachments`) are rejected with `400 invalid_field_name`. Content rules: `content` may be omitted only when `platform_content` provides at least one per-platform caption or media is attached. Max 10,000 characters. Max 50 `account_ids`. Instagram captions with more than 30 hashtags are rejected (`instagram_hashtag_limit_exceeded`). WordPress blog posts use `platform_content.wordpress` (see `WordPressBlogPost`). Bad settings return `400 wordpress_post_invalid` with every problem in `details.errors`; a WordPress target with no title returns `400 wordpress_title_required`. A long blog body goes in `platform_content.wordpress.content` (up to 200,000 characters), not in `content`. Google Business Profile posts use `platform_content.google_business` (see `GoogleBusinessPost`): text up to 1500 characters, at most 1 photo, no video. A post that breaks a rule returns `400 google_business_post_invalid` with every problem in `details.errors`. Media referenced by `media_ids` must exist in the workspace and be `ready` (`media_not_found` / `media_not_ready` otherwise; media stuck in `uploading` is auto-finalized via the `/complete` flow when the file was actually uploaded). Platform media requirements are validated pre-flight (`platform_requirement_violation`, e.g. video to Pinterest). Not accepted: `schedule_at` (MCP only; the REST API returns `400 unsupported_schedule_at` instead of publishing now; call `GET /best-times` and send its time as `scheduled_for`), and `request_approval` without `draft: true` (`400 request_approval_needs_draft`). `timezone` is stored for display only: `scheduled_for` without an offset is read as UTC. Settings: the snake_case spellings first_comment, alt_text, media_alt_text, reply_settings, privacy_level, disable_comment, disable_duet, disable_stitch, video_type, cover_photo_url, topic_tag, link_attachment, board_id, board_section_id, comment_status are accepted and stored as the camelCase keys the publishers read. Facebook `contentType` Reels posts a video as a Reel; Post or Video posts it as a regular video (a landscape video always posts as a regular video). First comments are not available on Instagram, Facebook, LinkedIn, Threads and YouTube yet. They work on X. A first comment sent for those platforms is removed and the response `notes` say so. `notes` also warns when a cover image from `cover_photo.media_id` is a 7-day link and the post goes out later than that. A circuit breaker refuses a request body that has already failed 5+ times in 6 hours for the same key with `422 permanent_failure_circuit_breaker` — change any field to reset. Error codes: `invalid_json`, `wrong_content_type_for_endpoint`, `invalid_field_name`, `validation_error`, `content_too_long`, `account_ids_required`, `too_many_accounts`, `invalid_timezone`, `invalid_accounts`, `instagram_hashtag_limit_exceeded`, `invalid_datetime`, `past_schedule_time`, `media_not_found`, `media_not_ready`, `platform_requirement_violation`, `post_creation_failed`, `rate_limit_exceeded`, `permanent_failure_circuit_breaker`, `x_article_invalid`, `wordpress_post_invalid`, `wordpress_title_required`, `google_business_post_invalid`, `unsupported_schedule_at`, `request_approval_needs_draft`, `campaign_not_found`.

Guides: Quick start: create your first post · Bulk operations guide

This endpoint accepts a JSON request body. See the posts guide for a worked example.

Responses

  • 201Post created. Regular creates return the full publishing topology (`destinations`); `draft: true` returns the smaller draft shape with `next_steps`.
  • 400
  • 401
  • 402
  • 403
  • 422Circuit breaker open for this exact request body
  • 429
  • 500

More in Posts