PostEverywhere
PostEverywhere Logo
Pricing
Features
Social Media Scheduling
Calendar View
AI Content Generator
AI Image Generator
Cross-Platform Publishing
Multi-Account Management
Integrations
Instagram
LinkedIn
TikTok
Facebook
X
YouTube
Threads
API Docs
Resources
Blog
Free Tools
AI Models
How‑To Guides
Comparisons
Support
Log inStart free trial
Pricing
Features
  • Social Media Scheduling
  • Calendar View
  • AI Content Generator
  • AI Image Generator
  • Cross-Platform Publishing
  • Multi-Account Management
Integrations
  • Instagram
  • LinkedIn
  • TikTok
  • Facebook
  • X
  • YouTube
  • Threads
API Docs
Resources
  • Blog
  • Free Tools
  • AI Models
  • How‑To Guides
  • Comparisons
  • Support
Log in
Overview

Getting Started

Quick StartAuthentication

API Reference

PostsAccountsMediaAI Generation

Guides

Rate Limits & ErrorsSDKs & Libraries
Get API Key

Base URL

app.posteverywhere.ai/api/v1
  1. Home
  2. /
  3. Developers
  4. /
  5. Posts

Posts API

Create, schedule, update, and delete social media posts across 7 platforms with a single API. Posts are the core resource in PostEverywhere — every post can target multiple accounts and each destination is tracked independently.

Get API Key
POST

/posts

Create and schedule a post to one or more connected social media accounts. Omit scheduled_at to publish immediately, or provide a future datetime to schedule.

Request Body

FieldTypeRequiredDescription
contentstringYesThe text content of your post. Platform character limits apply (e.g., 280 for X, 2,200 for Instagram).
account_idsint[]YesArray of account IDs to publish to. Get these from GET /accounts.
scheduled_atstringNoISO 8601 datetime. Omit to publish immediately. Must be in the future.
timezonestringNoIANA timezone (e.g., "America/New_York"). Defaults to UTC if omitted.
media_idsuuid[]NoArray of media UUIDs from POST /media/upload. Attach images, videos, or documents.

Example Request

Schedule a post to 3 platforms
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
  -H "Authorization: Bearer pe_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Just shipped our latest feature! Check it out at example.com",
    "account_ids": [1, 4, 7],
    "scheduled_at": "2026-03-15T14:00:00Z",
    "timezone": "America/New_York",
    "media_ids": ["a1b2c3d4-5678-9012-abcd-ef1234567890"]
  }'

Response — 201 Created

JSON response
{
  "data": {
    "post_id": "post_8f3k2j1",
    "status": "scheduled",
    "scheduled_for": "2026-03-15T14:00:00Z",
    "accounts_count": 3,
    "message": "Post scheduled for 3 accounts"
  },
  "meta": {
    "request_id": "req_abc123def456",
    "timestamp": "2026-03-10T10:30:00Z"
  }
}

Immediate vs. scheduled: If you omit scheduled_at, the post begins publishing immediately and the response status will be "publishing" instead of "scheduled".

GET

/posts

Retrieve a paginated list of posts with optional filtering by status and platform.

Query Parameters

ParameterTypeDefaultDescription
statusstringallFilter by status: scheduled, published, or draft
platformstringallFilter by platform: instagram, x, linkedin, facebook, tiktok, youtube, threads
limitinteger20Number of posts to return. Range: 1–100.
offsetinteger0Number of posts to skip for pagination.

Example Request

List scheduled posts
curl https://app.posteverywhere.ai/api/v1/posts?status=scheduled&limit=10 \
  -H "Authorization: Bearer pe_live_your_key_here"

Response — 200 OK

JSON response
{
  "data": [
    {
      "id": "post_8f3k2j1",
      "content": "Just shipped our latest feature!",
      "media": [],
      "scheduled_for": "2026-03-15T14:00:00Z",
      "timezone": "America/New_York",
      "status": "scheduled",
      "destinations": [
        { "id": "dest_001", "platform": "instagram", "status": "queued", "account_name": "@acme" },
        { "id": "dest_002", "platform": "linkedin", "status": "queued", "account_name": "Acme Inc." }
      ],
      "created_at": "2026-03-10T10:30:00Z",
      "updated_at": "2026-03-10T10:30:00Z"
    }
  ],
  "meta": {
    "request_id": "req_xyz789",
    "timestamp": "2026-03-10T11:00:00Z"
  }
}
GET

/posts/{id}

Retrieve full details for a single post, including all platform destinations and their individual statuses.

Path Parameters

ParameterTypeDescription
idstringThe post ID (e.g., post_8f3k2j1)

Example Request

Get post details
curl https://app.posteverywhere.ai/api/v1/posts/post_8f3k2j1 \
  -H "Authorization: Bearer pe_live_your_key_here"

Response — 200 OK

JSON response
{
  "data": {
    "id": "post_8f3k2j1",
    "content": "Just shipped our latest feature! Check it out at example.com",
    "media": [
      { "id": "a1b2c3d4-5678-9012-abcd-ef1234567890", "type": "image", "url": "https://cdn.posteverywhere.ai/..." }
    ],
    "scheduled_for": "2026-03-15T14:00:00Z",
    "timezone": "America/New_York",
    "status": "published",
    "destinations": [
      {
        "id": "dest_001",
        "platform": "instagram",
        "status": "published",
        "account_name": "@acme",
        "account_id": 1,
        "published_at": "2026-03-15T14:00:02Z",
        "platform_post_id": "17895695668004550",
        "error": null,
        "attempts": 1
      },
      {
        "id": "dest_002",
        "platform": "linkedin",
        "status": "published",
        "account_name": "Acme Inc.",
        "account_id": 4,
        "published_at": "2026-03-15T14:00:03Z",
        "platform_post_id": "urn:li:share:7123456789",
        "error": null,
        "attempts": 1
      },
      {
        "id": "dest_003",
        "platform": "x",
        "status": "failed",
        "account_name": "@acme_tweets",
        "account_id": 7,
        "published_at": null,
        "platform_post_id": null,
        "error": "Rate limit exceeded on platform",
        "attempts": 3
      }
    ],
    "created_at": "2026-03-10T10:30:00Z",
    "updated_at": "2026-03-15T14:00:03Z"
  },
  "meta": {
    "request_id": "req_get456",
    "timestamp": "2026-03-15T14:05:00Z"
  }
}
PATCH

/posts/{id}

Update a post that has not yet been published. Only posts with status scheduled or draft can be updated.

Request Body

FieldTypeDescription
contentstringUpdated post content.
scheduled_atstringNew scheduled datetime (ISO 8601). Must be in the future.
timezonestringIANA timezone string.
account_idsint[]Replace the list of target accounts.
media_idsuuid[]Replace the list of attached media.

All fields are optional. Only include the fields you want to change.

Example Request

Reschedule a post and update content
curl -X PATCH https://app.posteverywhere.ai/api/v1/posts/post_8f3k2j1 \
  -H "Authorization: Bearer pe_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Updated: Launching our new feature tomorrow!",
    "scheduled_at": "2026-03-16T10:00:00Z"
  }'

Response — 200 OK

JSON response
{
  "data": {
    "id": "post_8f3k2j1",
    "content": "Updated: Launching our new feature tomorrow!",
    "scheduled_for": "2026-03-16T10:00:00Z",
    "status": "scheduled",
    "updated_at": "2026-03-10T12:00:00Z"
  },
  "meta": {
    "request_id": "req_patch789",
    "timestamp": "2026-03-10T12:00:00Z"
  }
}

Published posts cannot be updated. Attempting to PATCH a post with status "published" or "publishing" returns a 409 Conflict error.

DELETE

/posts/{id}

Delete a post. Only posts with status scheduled or draft can be deleted. Published posts cannot be removed through the API because the content already exists on external platforms.

Example Request

Delete a scheduled post
curl -X DELETE https://app.posteverywhere.ai/api/v1/posts/post_8f3k2j1 \
  -H "Authorization: Bearer pe_live_your_key_here"

Response — 200 OK

JSON response
{
  "data": {
    "id": "post_8f3k2j1",
    "deleted": true
  },
  "meta": {
    "request_id": "req_del012",
    "timestamp": "2026-03-10T12:30:00Z"
  }
}

This action is irreversible. Deleting a post removes it and all associated destinations. Attempting to delete a published post returns a 409 Conflict error.

GET

/posts/{id}/results

Get per-platform publishing results for a post. This endpoint returns detailed status for each destination, including published URLs, error messages, attempt counts, and retry scheduling.

Example Request

Get publishing results
curl https://app.posteverywhere.ai/api/v1/posts/post_8f3k2j1/results \
  -H "Authorization: Bearer pe_live_your_key_here"

Response — 200 OK

JSON response — PostResult[]
{
  "data": [
    {
      "id": "dest_001",
      "platform": "instagram",
      "status": "published",
      "account_name": "@acme",
      "account_id": 1,
      "published_at": "2026-03-15T14:00:02Z",
      "platform_post_id": "17895695668004550",
      "platform_post_url": "https://www.instagram.com/p/ABC123/",
      "error": null,
      "attempts": 1,
      "next_retry_at": null
    },
    {
      "id": "dest_002",
      "platform": "linkedin",
      "status": "published",
      "account_name": "Acme Inc.",
      "account_id": 4,
      "published_at": "2026-03-15T14:00:03Z",
      "platform_post_id": "urn:li:share:7123456789",
      "platform_post_url": "https://www.linkedin.com/feed/update/urn:li:share:7123456789",
      "error": null,
      "attempts": 1,
      "next_retry_at": null
    },
    {
      "id": "dest_003",
      "platform": "x",
      "status": "failed",
      "account_name": "@acme_tweets",
      "account_id": 7,
      "published_at": null,
      "platform_post_id": null,
      "platform_post_url": null,
      "error": "Rate limit exceeded on platform",
      "attempts": 3,
      "next_retry_at": "2026-03-15T14:15:00Z"
    }
  ],
  "meta": {
    "request_id": "req_res345",
    "timestamp": "2026-03-15T14:10:00Z"
  }
}

PostResult Fields

FieldTypeDescription
idstringUnique destination ID
platformstringPlatform name (e.g., instagram, x, linkedin)
statusstringOne of: queued, publishing, published, failed
platform_post_urlstring | nullDirect URL to the published post on the platform
errorstring | nullError message if publishing failed
attemptsintegerNumber of publishing attempts made
next_retry_atstring | nullWhen the next automatic retry is scheduled (if applicable)
POST

/posts/{id}/retry

Retry publishing for all failed destinations of a post. Only destinations with status failed are retried — already-published destinations are not affected.

Example Request

Retry failed destinations
curl -X POST https://app.posteverywhere.ai/api/v1/posts/post_8f3k2j1/retry \
  -H "Authorization: Bearer pe_live_your_key_here"

Response — 200 OK

JSON response
{
  "data": {
    "retried_count": 1,
    "destinations": [
      {
        "id": "dest_003",
        "platform": "x",
        "new_status": "queued"
      }
    ]
  },
  "meta": {
    "request_id": "req_retry678",
    "timestamp": "2026-03-15T14:20:00Z"
  }
}

Tip: If retried_count is 0, there were no failed destinations to retry. Check GET /posts/{id}/results first to confirm which destinations need retrying.

PostDestination Status Lifecycle

Each post creates one PostDestination per target account. Destinations progress through a status lifecycle independently, so one platform can succeed while another fails.

queued

Post is waiting to be published. This is the initial state for scheduled posts.

publishing

Actively being sent to the platform. Usually lasts a few seconds.

published

Successfully published. The platform_post_url is now available.

failed

Publishing failed after all retry attempts. Use POST /retry to try again.

PostDestination Fields

FieldTypeDescription
idstringUnique destination identifier
platformenumx, instagram, facebook, linkedin, youtube, tiktok, threads
statusenumqueued, publishing, published, failed
account_namestringDisplay name of the connected account
account_idintegerID of the connected account
published_atstring | nullISO 8601 timestamp when published (null if not yet published)
platform_post_idstring | nullPlatform-native post ID (e.g., tweet ID, LinkedIn URN)
errorstring | nullError message if publishing failed
attemptsintegerTotal number of publishing attempts

Start publishing with the API

Get your API key and create your first post in under 5 minutes. API access is included on all plans from $19/mo.

Get API Key View Pricing

Frequently asked questions

Can I post to multiple platforms at once?
Yes. Pass multiple account IDs in the account_ids array when creating a post via POST /posts. The API publishes to all specified platforms simultaneously from a single request. Each platform destination is tracked independently, so if one fails the others still succeed.
What happens if one platform fails?
Each platform is published independently. If Instagram succeeds but LinkedIn fails, the post status becomes "partial". You can check GET /posts/{id}/results to see per-platform status, then call POST /posts/{id}/retry to retry only the failed destinations.
Can I edit a published post?
No. Once a post is published to social platforms, it cannot be edited via the API because the content already exists on external platforms. You can only update posts with status "scheduled" or "draft" using PATCH /posts/{id}.
How do I schedule a post for a specific timezone?
Pass both scheduled_at (ISO 8601 datetime) and timezone (IANA timezone string like "America/New_York" or "Europe/London") in the POST /posts request body. If timezone is omitted, the time is interpreted as UTC.
What media types are supported?
Images (JPEG, PNG, GIF, WebP), videos (MP4, MOV), and documents (PDF for LinkedIn). Upload media first via POST /media/upload, then pass the returned media_ids when creating a post. Each platform has its own size and format limits — see the Media API docs.
How do I know when a post is published?
After creating a scheduled post, poll GET /posts/{id}/results to check per-platform publishing status. Each destination includes a status field (queued, publishing, published, failed), published_at timestamp, and platform_post_url once live.

Related documentation

Media API

Upload images, videos, and documents

Accounts API

List and monitor connected accounts

Authentication

API keys, scopes, and security

Rate Limits & Errors

Limits, error codes, and retry logic

Social Media Scheduler

Schedule posts from the dashboard

Pricing

All plans include API access

Footer

PostEverywhere

The all-in-one platform for social media management and growth. Built for marketing teams in the US, UK, Canada, Australia & Europe.

XLinkedInInstagram
ToolPilot

Product

  • Features
  • Integrations
  • Pricing
  • Developers
  • Resources

Features

  • Social Media Scheduling
  • Calendar View
  • AI Content Generator
  • AI Image Generator
  • Best Time to Post
  • Cross-Posting
  • Multi-Account Management
  • Workspaces
  • Campaign Management

Integrations

  • Instagram Integration
  • LinkedIn Integration
  • TikTok Integration
  • Facebook Integration
  • X Integration
  • YouTube Integration
  • Threads Integration

Resources

  • Resources Hub
  • How-To Guides
  • Blog
  • Comparisons
  • API Docs
  • Help

Free Tools

  • Post Previewer
  • Viral Score Predictor
  • Engagement Calculator
  • Content Repurposer
  • 30-Day Content Generator
  • Grid Previewer
  • Viral Hook Generator
  • Hashtag Generator
  • Character Counter
  • UTM Link Builder

Company

  • Contact
  • Privacy
  • Terms

© 2026 PostEverywhere. All rights reserved.