canonical: https://jentic.com/apis/postproxy.dev/postproxy

# Postproxy Social Media API

The Postproxy Social Media API publishes one post payload to Facebook, Instagram, TikTok, LinkedIn, YouTube, X (Twitter), Threads, Pinterest, Bluesky, Telegram, and Google Business, mapping it to each platform's rules and returning a per-platform outcome. Posts can be published now, scheduled with scheduled_at, saved as drafts, or added to a posting queue that picks the next free timeslot. Beyond publishing, it reads and replies to comments, reads and sends direct messages, manages WhatsApp templates and groups, edits Google Business locations and Facebook Pages, and reports post and profile stats. Sandbox mode is available on all plans for development without real accounts.

## For AI agents

Publish, schedule, and queue posts across eleven social platforms from one payload, reply to comments and DMs, and read post and profile stats through Postproxy.

## Scope

Does not generate post images or video, run paid ad campaigns, or provide social listening across accounts you do not own. Use for publishing to and managing your connected social profiles only.

## Capabilities

- Publish one post to several connected profiles at once, now, at a scheduled_at time, or as a draft
- Add posts to a posting queue with high, medium, or low queue_priority and read the next available timeslot
- Read, reply to, hide, pin, and like comments on a post, and send a private reply from a comment
- List chats and send, edit, or react to direct messages on a connected profile
- Report post stats, profile stats, daily stats, and follower history for a date range
- Update Google Business location hours, attributes, menus, and media, and edit a Facebook Page
- Create and manage WhatsApp message templates, groups, and business profile details

## Use cases

### Agent-run cross-posting through Jentic

A developer wants their agent to announce each release on every channel they use. Through Jentic the agent finds the Postproxy create-post operation by intent, sends the post body with a profiles array such as twitter and linkedin, and reads the per-platform outcome. The bearer key is attached by your own instance, and a rule can keep the agent to creating drafts so a human publishes them.

Example prompt: Call POST `/api/posts` with post.body set to the release note, post.draft true, and profiles twitter, linkedin, and bluesky, then publish it with POST `/api/posts/{id}/publish` after approval

### Queued posting calendar

Instead of picking exact times, a content team fills a queue and lets Postproxy space posts out. A queue is created once, posts are added with queue_id and an optional queue_priority, and the next-slot operation shows when the next post will go out. Passing scheduled_at together with queue_id is not allowed, since the queue sets the time.

Example prompt: Call POST `/api/posts` with queue_id q_123 and queue_priority high, then call GET `/api/post_queues/{id}/next_slot` to report when it will publish

### Comment and DM inbox triage

Community managers need one place to see and answer replies. Postproxy lists comments across posts or on a single post, creates replies, hides or pins comments, and sends a private reply that moves a public comment into DMs. Chats and messages can be listed per profile, filtered by direction and status, and answered from the same API.

Example prompt: Call GET `/api/comments` for the last 24 hours, then reply to each unanswered question with POST `/api/posts/{post_id}/comments`

### Performance reporting

A weekly report needs engagement per post and audience growth per profile. GET `/api/posts/stats` returns stats for chosen post_ids or profiles over a from and to range, while the profile stats, daily stats, and follower history operations return time series for a connected profile and placement.

Example prompt: Call GET `/api/profiles/{id}/follower_history` and GET `/api/profiles/{id}/daily_stats` with from and to set to last week and summarise the change in followers

### Google Business listing upkeep

Local businesses need their Google Business details kept current. Postproxy reads and updates a location, replaces opening hours, attributes, service lists, and food menus, manages place action links, and adds or removes profile media for a connected Google Business profile.

Example prompt: Call PATCH `/api/profiles/{profile_id}/google_business/update_hours` with the holiday hours for location_id loc_1 and confirm with GET `/api/profiles/{profile_id}/google_business/location`

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/api/posts` | Create, schedule, or queue a post |
| POST | `/api/posts/{id}/publish` | Publish a draft post |
| GET | `/api/posts` | List posts by status and platform |
| GET | `/api/posts/stats` | Get post stats |
| GET | `/api/comments` | List comments across posts |
| POST | `/api/chats/{chat_id}/messages` | Send a direct message |
| GET | `/api/post_queues/{id}/next_slot` | Get next available timeslot |
| GET | `/api/profiles/{id}/follower_history` | Get follower history |

## Key resources

- **Posts** — Create, schedule, publish, update, delete, and report stats on posts across connected platforms
- **Post queues** — Create queues and find the next available timeslot
- **Comments** — List, reply to, edit, hide, pin, and like comments on posts and profiles
- **Chats and messages** — List chats, send and edit messages, react, and archive conversations
- **Profiles and profile groups** — List connected profiles, read stats and follower history, and organise profiles into groups
- **Google Business and Facebook Pages** — Update location details, hours, menus, media, and Page settings
- **WhatsApp** — Manage message templates, groups, blocked users, and business profile details
- **Webhooks and API keys** — Register webhooks, inspect deliveries, and create or revoke API keys

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 62 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 61 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 55 / 100
  - Agent Usability: 71 / 100
  - Security: 60 / 100
  - AI Discoverability: 74 / 100
- **View full report:** https://jentic.com/apis/postproxy.dev/postproxy/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Postproxy by hand means managing a bearer key that may be full-access or profile-group scoped, passing profile_group_id where needed, adding Idempotency-Key headers to writes, and learning which operations only work on certain platforms. Through Jentic you install once, import Postproxy from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Postproxy puts the profile id in the URL path for comments, chats, stats, Google Business, and WhatsApp operations (`/api/profiles/{profile_id}/...`), so a rule can pin your agent to one profile there. Post creation carries its target profiles in the request body, so for publishing a rule bounds the operation rather than the profile. You choose the operations it may call, so destructive ones like deleting a post on the platforms or revoking an API key are not included unless you add them.
- **Credential handling:** Your Postproxy API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'schedule a post to LinkedIn' or 'reply to a comment', and Jentic returns the matching Postproxy operation from its large surface with its input schema, so the agent does not have to read through the full reference.

## Related APIs

- **Buffer API** — Social media scheduling and publishing across major networks
- **Sendible API** — Social media management for agencies with publishing and reporting
- **Ocoya API** — AI-assisted social content creation and scheduling
- **PostNitro Embed API** — Generates carousel, image, and video post files from templates

## FAQ

### What authentication does the Postproxy Social Media API use?

Postproxy authenticates with an API key sent as a bearer token in the Authorization header, per its OpenAPI spec. Keys are either full-access to the whole account or scoped to a single profile group, and are created in the Postproxy dashboard under Settings, API Keys. Through Jentic the key is stored by your own instance and attached at call time.

### Can I schedule a post to several platforms with one call?

Yes. POST `/api/posts` takes a profiles array of profile ids or platform names such as twitter or instagram, a post object with body, and either scheduled_at for a fixed time, draft true for review, or queue_id to let a queue pick the slot. All resolved profiles must belong to the same profile group, and the response reports the outcome per platform.

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

The OpenAPI spec defines a RateLimited response for when a posting rate limit is reached but does not state the numbers. Check https://postproxy.dev/reference/overview/ for current limits, and send an Idempotency-Key header on writes so a retry after a rate-limit error does not publish twice.

### Is there a Postproxy MCP server?

You don't need an MCP server to give your agent Postproxy. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent discovers the posting, comment, and stats operations it needs on demand instead of loading the whole surface into its context up front.

### Can I limit what my agent is allowed to do with Postproxy?

Yes. For instance, write a rule that allows POST `/api/posts`, GET `/api/posts/{id}`, and GET `/api/profiles/{profile_id}/comments`, and the agent can create posts and read one profile's comments but cannot delete posts, remove them from platforms, or revoke API keys. Pairing that rule with a Postproxy key scoped to one profile group narrows it further, and every call is logged.

### How do I publish a draft post through Jentic?

Search Jentic for 'publish a draft social media post', load POST `/api/posts/{id}/publish`, and execute it with the draft's id; then call GET `/api/posts/{id}` to read the per-platform result. To run it on your own infrastructure, install Jentic One from its GitHub repo.
