canonical: https://jentic.com/apis/bufferapp.com/bufferapp

# Bufferapp

Buffer's API schedules, edits, and analyses social media posts across the connected profiles a user has linked to their Buffer account, including Twitter, Facebook, LinkedIn, and Instagram. The spec covers profile listing and schedule management, creation and editing of pending updates, reordering and shuffling the publishing queue, retrieving sent posts and their interactions, and shortening links via /links/shares. It is the standard integration entry point for cross-network scheduling, marketing automations, and content-calendar tools that publish through Buffer.

## For AI agents

Schedule and manage social media posts across connected Buffer profiles, retrieve sent posts and engagement, and edit the publishing queue.

## Scope

Does not handle direct messaging, ad campaign management, or social listening - use for scheduling and editing posts on profiles connected to Buffer only.

## Capabilities

- List the social profiles a user has connected to their Buffer account
- Create a new pending update and target it at one or more profiles
- Edit a pending update's text, media, or scheduled time before it sends
- Reorder, shuffle, or move-to-top the queue of pending updates per profile
- Retrieve sent updates and their interaction counts (likes, comments, retweets)
- Update the posting schedule (days and times) for a profile
- Shorten a URL through Buffer's link shortener and look up share counts

## Use cases

### Cross-Network Content Calendar

Publish a single content calendar across Twitter, LinkedIn, Facebook, and Instagram by listing profiles via /profiles and creating one update per network with /updates/create. Buffer queues each update according to that profile's schedule, so the marketer authors once and Buffer handles per-network timing. End-to-end scheduling for a week of posts moves from per-network manual work to a single API loop.

Example prompt: Call /profiles to list connected profiles, then for each profile call /updates/create with the post text and chosen scheduled_at time

### Queue Management Automation

Automate Buffer queue housekeeping by reordering pending updates with /profiles/{id}/updates/reorder, shuffling for variety with /profiles/{id}/updates/shuffle, or pushing a time-sensitive post to the top with /updates/{id}/move_to_top. Useful for marketing teams who plan a week of evergreen content but need to insert breaking announcements without rebuilding the queue.

Example prompt: Call /updates/{id}/move_to_top for the breaking announcement so it ships in the next available slot

### Engagement Reporting

Pull sent-post engagement into BI tools by listing /profiles/{id}/updates/sent for a profile and then reading /updates/{id}/interactions for each post. The interaction counts (likes, comments, retweets) feed weekly performance reports without requiring a Buffer Analytics seat. Combined with the link-share data from /links/shares, this measures both engagement and click-through.

Example prompt: Call /profiles/{id}/updates/sent for the last 7 days, then call /updates/{id}/interactions for each ID and aggregate into the report

### AI Agent Posting Through Jentic

Allow an AI agent to schedule social posts on a marketer's behalf without holding the Buffer access token. Through Jentic, the agent searches by intent, loads the create-update schema, and executes against /updates/create with the chosen profile_ids and scheduled_at. The OAuth access token is stored in your Jentic One instance and injected at execution time so credentials never enter the agent's context.

Example prompt: Use Jentic to search 'schedule a Buffer post', load the create-update schema, and execute against /updates/create with the post text and target profile IDs

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /profiles | List connected social profiles |
| POST | /updates/create | Create a new pending update on one or more profiles |
| GET | /profiles/{id}/updates/pending | List pending updates for a profile |
| GET | /profiles/{id}/updates/sent | List sent updates for a profile |
| POST | /updates/{id}/update | Edit a pending update |
| POST | /updates/{id}/move_to_top | Move an update to the top of the queue |
| GET | /updates/{id}/interactions | Get interaction counts for a sent update |
| POST | /profiles/{id}/schedules/update | Update the posting schedule for a profile |

## Key resources

- **User** — Retrieve the authenticated Buffer user's profile data
- **Profiles** — List connected social profiles and update their posting schedules
- **Pending Updates** — List, reorder, shuffle, and inspect the queue of unsent updates per profile
- **Sent Updates** — List sent updates and retrieve their interaction counts
- **Updates** — Create, edit, share, move to top, and destroy individual updates
- **Links** — Shorten URLs and retrieve aggregated share counts via /links/shares
- **Info** — Retrieve API configuration metadata

## Why Jentic

- **Setup:** Wiring Bufferapp by hand means running its OAuth 2.0 authorization-code exchange, keeping the per-user access token refreshed, and posting updates to api.bufferapp.com yourself. Through Jentic you install once, import Bufferapp from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Bufferapp puts the profile id in the URL path (/profiles/{id}/updates/...), so a rule can pin your agent to one profile: it can create and edit updates and adjust that profile's schedule and nothing else. You choose the operations it may call, so it can schedule and edit posts without being able to reorder or move updates to the top unless you add those.
- **Credential handling:** Your Bufferapp OAuth access token is stored once, encrypted, by your own Jentic One instance and injected at execution time. The client id, client secret, and authorization code never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'schedule a Buffer post' or 'edit a pending update', and Jentic returns the matching Bufferapp operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Bluesky AT Protocol API** — Direct Bluesky posting for networks Buffer does not yet support
- **Bruzu API** — Generates the share image attached to scheduled Buffer posts
- **Buddy API** — Triggers a Buffer release post when a Buddy CI/CD pipeline completes

## FAQ

### What authentication does the Buffer API use?

Buffer uses OAuth 2.0 with the authorization code flow. After the user authorises your app, exchange the returned code for an access_token at Buffer's token endpoint. Send the access_token in the HTTP Authorization header, request body, or query string on subsequent calls. Through Jentic the OAuth client secret and access token are stored encrypted in the vault and injected at execution time.

### Can I schedule a post with the Buffer API?

Yes. POST to /updates/create with text, profile_ids (an array of one or more profile IDs from /profiles), and either scheduled_at (Unix timestamp) for a specific time or now=true to add to the front of the queue. Buffer queues the update according to the profile's posting schedule and returns the new update ID.

### What are the rate limits for the Buffer API?

Buffer applies a rolling per-token limit (historically 60 requests per minute for most endpoints). The exact value is not in this spec - see Buffer's developer docs at buffer.com/developers/api for current limits. The API returns 429 responses when the limit is exceeded and clients should back off before retrying.

### How do I list pending posts through Jentic?

Install the SDK with pip install jentic, search for 'list pending Buffer posts', load the relevant schema, and execute it against /profiles/{id}/updates/pending with the profile ID. Jentic injects the OAuth access token from the vault and returns the list of unsent updates with their scheduled times.

### Can I edit a Buffer update after creating it?

Yes, while it is still pending. POST /updates/{id}/update with the new text, media, or scheduled time and Buffer replaces the queued update in place. Once a post has been sent (visible via /profiles/{id}/updates/sent) it can no longer be edited via the API.

### Is the Buffer API free?

Buffer offers a free plan with limited connected profiles and posts; paid plans (Essentials, Team, and Agency) raise those limits. API access is available across plans and is billed against the same per-account quotas. See buffer.com/pricing for current details.

### Can I limit what my agent is allowed to do with the Buffer API?

Yes. Because you run your own self-hosted Jentic One instance, your own rules decide which Buffer operations and credentials the agent may use, and the operator sets those limits. Since Buffer puts the profile id in the URL path (/profiles/{id}/updates/...), a rule can pin the agent to a single profile so it can create and edit updates with /updates/create and /updates/{id}/update and adjust that profile's schedule and nothing else. You choose the allowed operations, so the agent can schedule and edit posts without being able to reorder the queue or call /updates/{id}/move_to_top unless you grant those. The OAuth access token stays with your instance and is injected at execution time, so it never enters the agent's context.
