Skip to main content
This guide walks you end-to-end from “no token” to “scheduled post”. You’ll need:
  • A PublishBuddy account at app.publishbuddy.com
  • At least one social profile connected to that account (Instagram, X, Facebook, etc.)
  • curl or any HTTP client of your choice

1. Get an API token

If you don’t have one yet, follow the Authentication walkthrough:
1

Open the dashboard

2

Go to User Settings → Login & Security

Click your avatar → User Settings, then open the Login & Security tab.
3

Generate an API token

Click Generate API token, tick the abilities you need (for this quickstart, enable workspaces, profiles, media_contents, and posts), and copy the value somewhere safe.
Export it to your shell so the rest of the snippets work as-is:

2. List your workspaces

Every resource in PublishBuddy is scoped to a workspace, so the first call always tells you which workspaces your token can see.
A successful response looks like:
Copy the id of the workspace you want to work with:

3. List the workspace’s social profiles

A profile represents one connected social account inside the workspace (e.g. your Instagram business account, or your brand’s X profile).
Pick the profile you want to publish to and store its ID:
If you don’t have any profiles yet, connect one inside the dashboard first — profiles are connected through each network’s OAuth flow, which is a UI-only step.

4. Upload a piece of media

Posts can contain text, links, and media. To attach an image or video, upload it to the media library first. Uploads go directly to storage in three steps: presign, upload, confirm. First, ask the API for a pre-signed upload URL:
You’ll get back a temporary media id and an upload_url:
Upload the file bytes straight to that URL, replaying the signed headers:
Then confirm the upload to finalize the media item:
Save the media ID — it’s the same UUID you presigned and confirmed:

5. Publish a post

Combine everything: the profile to publish to, the text, and the media.
The response includes the new post and its status (waiting, publishing, published, etc.):
To schedule instead of publishing immediately, set "publish_type": "schedule_using_fixed_datetime" and add "publish_at": "2026-12-25T09:00:00Z". To add the post to a profile’s posting queue, use "publish_type": "queue_using_timeslots". See Schedule posts for the full lifecycle.

6. Check the post’s status

When status becomes published, the url field will contain the live post’s URL on the social network.

Next steps

Core concepts

Understand workspaces, profiles, posts, and the publish lifecycle.

Schedule posts

Three ways to control when a post goes live.

Analyze performance

Read profile, workspace, and best-time analytics.

Full API reference

Every endpoint, parameter, and response shape.