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.”

PostEverywhere Quick Start Guide

Get up and running with the PostEverywhere API in under 5 minutes. Create your first cross-platform social media post.

Get your first cross-platform post scheduled in under 5 minutes.

Prefer the terminal?

The CLI does this whole flow end-to-end: posteverywhere login, posteverywhere connect <platform>, then posteverywhere post. Install: npm install -g @posteverywhere/cli.

What you need before starting

  • A PostEverywhere account (7-day free trial)
  • At least one connected social media account (connect via the dashboard)
  • An API key (create one on the Developers page of your dashboard)

Step 1: Create your API key

Open the Developers page in your PostEverywhere dashboard, go to the API Keys tab and click Create a key.

Your key starts with pe_live_. Keep it secret.

export POSTEVERYWHERE_API_KEY="pe_live_abc123..."

Step 2: List your connected accounts

curl https://app.posteverywhere.ai/api/v1/accounts \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY"

Response:

{
  "data": {
    "accounts": [
      {
        "id": 2280,
        "platform": "instagram",
        "account_name": "mybrand",
        "avatar_url": "https://...",
        "is_active": true
      }
    ]
  }
}

Note the id values (integers): you'll use these in account_ids when creating posts.

Step 3: Publish your first post

curl -X POST https://app.posteverywhere.ai/api/v1/posts \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Exciting news! We just launched our API.",
    "account_ids": [2280, 2281],
    "scheduled_for": "2026-04-01T10:00:00Z"
  }'

Response:

{
  "data": {
    "post_id": "d3e859bf-8b9e-4cd8-99e5-7f019ab95709",
    "content": "Exciting news! We just launched our API.",
    "status": "scheduled",
    "scheduled_for": "2026-04-01T10:00:00Z",
    "account_ids": [2280, 2281],
    "destinations": [
      {
        "platform": "instagram",
        "account_id": 2280,
        "account_name": "mybrand",
        "destination_status": "queued"
      },
      {
        "platform": "linkedin",
        "account_id": 2281,
        "account_name": "My Brand Inc.",
        "destination_status": "queued"
      }
    ]
  },
  "error": null,
  "meta": {
    "request_id": "a1b2c3d4",
    "timestamp": "2026-04-01T09:55:12.341Z"
  }
}

Notice that every field name in your request (content, account_ids, scheduled_for) also appears in the response with the same name and same meaning: this is the round-trip principle. You can take the response and POST its top-level fields straight back to create a clone.

Save it as a draft instead

Add "draft": true to save the post as a draft rather than scheduling it (account_ids is optional for drafts). Review it later, then schedule it with POST /v1/posts/{id}/schedule, sending scheduled_for or publish_now: true. This "draft → review → schedule" flow is ideal for AI agents that should get human approval before anything publishes. See Building AI Agents.

Step 4: Confirm the post published

After the scheduled time, check how your post performed:

# $POST_ID is the UUID post_id returned in Step 3 (non-UUID ids return 400 invalid_id)
curl https://app.posteverywhere.ai/api/v1/posts/$POST_ID/results \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY"

Each platform in the response has its status, the link to the live post, any error, and a warnings array. A post can publish and still carry a warning (for example, text cut to fit or a setting the platform did not apply), so show warnings to the user too. See Published, but with a warning.

Two things that trip up first integrations: scheduled_for without an offset is read as UTC (timezone is only a display label), and a caption over a platform's real limit is refused with 400 content_too_long instead of failing later. See the limits.

Where to go after your first post

Next: the full Create Post reference, schedule a draft, or connect more platforms.

Related: test your integration safely · get notified when a post publishes · create up to 50 posts in one call · page through your posts · every error code the API returns · what changed in the API · how to get social media API access