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)
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.
- Sign in to app.posteverywhere.ai
- Navigate to Settings > Developer
- Click "Create API Key"
- Name your key (e.g., "Quick Start Test") and select Read and Write scopes (add AI if you want to generate images)
- Copy the key immediately — it won't be shown again
Security tip: Store your API key in an environment variable, not in your code. See Authentication > Security Best Practices for details.
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.
curl https://app.posteverywhere.ai/api/v1/accounts \
-H "Authorization: Bearer pe_live_your_key_here"{
"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.
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.
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"
}'{
"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.
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.
curl https://app.posteverywhere.ai/api/v1/posts/4827/results \
-H "Authorization: Bearer pe_live_your_key_here"{
"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.
curl -X POST https://app.posteverywhere.ai/api/v1/posts/4827/retry \
-H "Authorization: Bearer pe_live_your_key_here"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
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
}'{
"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
curl -X PUT "https://storage.posteverywhere.ai/uploads/med_a1b2c3d4e5f6?token=..." \
-H "Content-Type: image/jpeg" \
--data-binary @product-launch.jpgStep 5c: Confirm the upload
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
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.