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. Quick Start
5-minute tutorial

Quick Start Guide

Go from zero to your first scheduled post in under 5 minutes. This guide walks you through authenticating, listing accounts, creating a post, checking results, and uploading media.

Prerequisites

  • 1A PostEverywhere account on any plan (Starter $19/mo, Growth $39/mo, or Pro $79/mo)
  • 2At least one connected social media account (Instagram, X, LinkedIn, etc.)
  • 3A terminal or HTTP client (cURL, Postman, or your language of choice)
1

Get your API key

API keys are generated from the PostEverywhere dashboard. Each key starts with pe_live_ followed by 32 hexadecimal characters. You can create up to 10 keys per organization, each with independent scopes.

  1. Sign in to app.posteverywhere.ai
  2. Navigate to Settings > Developer
  3. Click "Create API Key"
  4. Name your key (e.g., "Quick Start Test") and select Read and Write scopes (add AI if you want to generate images)
  5. Copy the key immediately — it won't be shown again
Create API Key

Security tip: Store your API key in an environment variable, not in your code. See Authentication > Security Best Practices for details.

2

List your connected accounts

Before creating a post, you need the IDs of your connected social media accounts. The GET /accounts endpoint returns all accounts linked to your organization, including their platform, health status, and whether they can currently post.

List connected accounts
curl https://app.posteverywhere.ai/api/v1/accounts \
  -H "Authorization: Bearer pe_live_your_key_here"
Response — 200 OK
{
  "data": [
    {
      "id": 1,
      "platform": "instagram",
      "name": "@yourcompany",
      "health": "healthy",
      "can_post": true,
      "connected_at": "2026-01-15T09:30:00Z"
    },
    {
      "id": 2,
      "platform": "linkedin",
      "name": "Your Company Page",
      "health": "healthy",
      "can_post": true,
      "connected_at": "2026-01-15T09:32:00Z"
    }
  ],
  "meta": {
    "request_id": "req_abc123def456",
    "timestamp": "2026-03-02T10:00:00Z"
  }
}

Note the id values — you'll pass these as account_ids when creating a post. The health field tells you if the account's token is valid (healthy, expired, or unhealthy). See the Accounts API reference for all fields.

3

Create your first post

Use POST /posts to create and schedule a post. Pass the account_ids from Step 2, your content, and an optional scheduled_at timestamp. Omit scheduled_at to publish immediately.

Schedule a post to Instagram + LinkedIn
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": "Excited to announce our new product launch! Check it out at example.com",
    "account_ids": [1, 2],
    "scheduled_at": "2026-03-15T14:00:00Z",
    "timezone": "America/New_York"
  }'
Response — 201 Created
{
  "data": {
    "id": 4827,
    "content": "Excited to announce our new product launch! Check it out at example.com",
    "status": "scheduled",
    "account_ids": [1, 2],
    "scheduled_at": "2026-03-15T14:00:00Z",
    "timezone": "America/New_York",
    "media_ids": [],
    "created_at": "2026-03-02T10:05:00Z"
  },
  "meta": {
    "request_id": "req_xyz789ghi012",
    "timestamp": "2026-03-02T10:05:00Z"
  }
}

The post is now scheduled and will publish to both Instagram and LinkedIn at 2:00 PM ET on March 15. You can update it with PATCH /posts/4827 or delete it with DELETE /posts/4827 before it publishes. See the Posts API reference for all options.

4

Check publishing results

After the scheduled time passes, PostEverywhere publishes your post to each platform independently. Use GET /posts/{id}/results to see per-platform results, including the live URL on each platform.

Get per-platform results
curl https://app.posteverywhere.ai/api/v1/posts/4827/results \
  -H "Authorization: Bearer pe_live_your_key_here"
Response — 200 OK
{
  "data": [
    {
      "account_id": 1,
      "platform": "instagram",
      "status": "published",
      "platform_post_url": "https://www.instagram.com/p/ABC123/",
      "error": null,
      "attempts": 1,
      "next_retry_at": null,
      "published_at": "2026-03-15T14:00:02Z"
    },
    {
      "account_id": 2,
      "platform": "linkedin",
      "status": "failed",
      "platform_post_url": null,
      "error": "Token expired. Reconnect account in dashboard.",
      "attempts": 3,
      "next_retry_at": "2026-03-15T14:15:00Z",
      "published_at": null
    }
  ],
  "meta": {
    "request_id": "req_rst345uvw678",
    "timestamp": "2026-03-15T14:05:00Z"
  }
}

In this example, the Instagram post published successfully. The LinkedIn post failed because the account token expired. After reconnecting the account in the dashboard, you can retry with POST /posts/4827/retry.

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

Upload media

To attach images or videos to a post, upload them using a three-step flow: (1) request a presigned upload URL, (2) PUT your file to that URL, then (3) confirm the upload with POST /media/{id}/complete. Once completed, pass the media_id in your post request.

Step 5a: Request a presigned URL

Request presigned upload URL
curl -X POST https://app.posteverywhere.ai/api/v1/media/upload \
  -H "Authorization: Bearer pe_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "product-launch.jpg",
    "content_type": "image/jpeg",
    "size": 2048576
  }'
Response — 200 OK
{
  "data": {
    "media_id": "med_a1b2c3d4e5f6",
    "upload_url": "https://storage.posteverywhere.ai/uploads/med_a1b2c3d4e5f6?token=...",
    "expires_in": 3600
  },
  "meta": {
    "request_id": "req_med456abc789",
    "timestamp": "2026-03-02T10:10:00Z"
  }
}

Step 5b: Upload the file

PUT file to presigned URL
curl -X PUT "https://storage.posteverywhere.ai/uploads/med_a1b2c3d4e5f6?token=..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @product-launch.jpg

Step 5c: Confirm the upload

POST /media/{id}/complete
curl -X POST https://app.posteverywhere.ai/api/v1/media/med_a1b2c3d4e5f6/complete \
  -H "Authorization: Bearer pe_live_your_key_here"

Step 5d: Create a post with media

Schedule a post with an image
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": "Excited to announce our new product launch!",
    "account_ids": [1, 2],
    "scheduled_at": "2026-03-15T14:00:00Z",
    "timezone": "America/New_York",
    "media_ids": ["med_a1b2c3d4e5f6"]
  }'

The presigned URL expires after the expires_in seconds (default: 3600 = 1 hour). Upload your file before it expires. See the Media API reference for file size limits, supported formats, and listing/deleting media.

Generate images with AI

Want to generate images with AI instead of uploading them? Use POST /ai/generate-image to create social media images from text prompts — 4 AI models, 7 aspect ratios, saved directly to your media library. See the AI Image Generation guide.

What's next

You've scheduled your first post and uploaded media. Here's where to go from here to build a complete integration with the PostEverywhere social media scheduler.

Posts API Reference

Create, update, delete, and list posts. Filter by status, platform, and date.

Accounts API Reference

List accounts, check health status, and monitor token expiry across platforms.

Media API Reference

Upload images and videos, list media files, and manage your media library.

Authentication

API key scopes, security best practices, code examples in Python and Node.js.

Rate Limits & Errors

Rate limit windows, error response format, and retry strategies.

SDKs & Libraries

Code examples, OpenAPI spec, and auto-generated client libraries.

Ready to automate your social media?

API access is included on all plans. Get your key and start scheduling posts across Instagram, X, LinkedIn, Facebook, TikTok, YouTube, Threads.

Get API KeyView Pricing

Frequently asked questions

How long does it take to get started with the PostEverywhere API?
Most developers make their first successful API call within 5 minutes. Generate an API key from Settings > Developer, copy one of the cURL examples from this guide, replace the placeholder key with yours, and run it. If you already have social accounts connected in PostEverywhere, you can schedule a post immediately.
Do I need to connect social accounts before using the API?
Yes. The API schedules and publishes posts through your connected social media accounts. Connect accounts in the PostEverywhere dashboard first, then use GET /accounts to retrieve their IDs for the API. Each account has a unique ID that you pass in the account_ids array when creating posts.
What programming languages does the API support?
The PostEverywhere API is a standard REST API that works with any programming language or HTTP client. This guide shows cURL examples, but you can use Python (requests), Node.js (fetch/axios), PHP (Guzzle), Ruby, Go, Java, or any language that can make HTTP requests. See the Authentication page for code examples in multiple languages.
Can I test the API without publishing to real social accounts?
Currently, the API operates in production mode. We recommend creating a test organization with sandbox social media accounts (e.g., a private Instagram account or an X test account) for development. You can also create posts with a future scheduled_at date and delete them before they publish to test the workflow without posting live.
What happens if a post fails on one platform but succeeds on others?
PostEverywhere publishes to each platform independently. If a post succeeds on Instagram but fails on LinkedIn, the Instagram post stays live. Use GET /posts/{id}/results to see per-platform status, error messages, and attempt counts. You can then use POST /posts/{id}/retry to retry only the failed destinations without affecting successful ones.

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.