---
title: "1Post API reference: every route, key and role"
url: "https://get1post.com/docs/api.md"
canonical_url: "https://get1post.com/docs/api"
last_updated: "2026-10-26"
type: "reference"
summary: "Every 1Post API route with its method, path, what it does, the key scope and role it needs, its parameters and its request body fields. 128 operations."
related: ["https://get1post.com/docs/quickstart.md", "https://get1post.com/docs/api-authentication.md", "https://get1post.com/docs/errors.md"]
---

# 1Post API reference: every route, key and role

Every 1Post API route with its method, path, what it does, the key scope and role it needs, its parameters and its request body fields. 128 operations.

The 1Post API has 128 operations for posts, media, accounts, slots, the library, webhooks, results, the inbox and automation. Authenticate with a key bound to a workspace. Each entry lists its method, path, what it does, the key scope and role action it needs, its parameters and the fields of its request body.

This reference is generated from the API's own route table. Public routes are listed here; vendor callbacks and service routes are left out. There are 128 operations in 23 groups. Every request needs a key unless the table says No key; see [authentication](https://get1post.com/docs/api-authentication.md). The machine-readable document is at /openapi.json on the API host.

## Posts

| Operation | What it does | Needs |
| --- | --- | --- |
| POST /v1/bulk/posts/approve | Approve up to 100 posts waiting in review and schedule them | write key, role action post.approve |
| POST /v1/bulk/posts/delete | Delete up to 100 unscheduled posts or scheduled posts | write key, role action post.create |
| POST /v1/bulk/posts/reschedule | Move up to 100 posts to a new time | write key, role action post.create |
| GET /v1/posts | List posts, newest first, with their destinations | read key, role action read |
| POST /v1/posts | Save an unscheduled post, schedule a post or publish now to one or more accounts | write key, role action post.create |
| GET /v1/posts/{id} | Read one post with the state of each destination | read key, role action read |
| PATCH /v1/posts/{id} | Change part of a post before it goes out, or move it in time | write key, role action post.create |
| DELETE /v1/posts/{id} | Delete an unscheduled post or cancel a schedule, for every destination or one | write key, role action post.create |
| POST /v1/posts/{id}/approve | Approve a post waiting in review and schedule it | write key, role action post.approve |
| POST /v1/posts/{id}/cancel | Cancel every destination of a post that has not started | write key, role action post.create |
| GET /v1/posts/{id}/comments | Read the team comments and client comments on a post | read key, role action read |
| POST /v1/posts/{id}/comments | Leave a team comment on a post | write key, role action post.comment |
| POST /v1/posts/{id}/duplicate | Copy a post into a new unscheduled post | write key, role action post.create |
| POST /v1/posts/{id}/link-live | Attach the live platform post to a destination whose outcome was unknown | write key, role action post.publish |
| POST /v1/posts/{id}/request-changes | Send a post in review back to its author with a note | write key, role action post.approve |
| POST /v1/posts/{id}/retry | Send the destinations that failed again, as a new post | write key, role action post.publish |
| POST /v1/posts/{id}/review-links | Make a link a client opens to preview, comment on and approve a post | write key, role action reviewlink.create |
| POST /v1/posts/{id}/submit | Send an unscheduled post to review | write key, role action post.create |
| POST /v1/posts/import-csv | Schedule up to 500 posts from a spreadsheet | write key, role action post.create |
| DELETE /v1/review-links/{id} | Turn a review link off | write key, role action reviewlink.create |

## Media

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/media | List the media library by name, type and library flag | read key, role action read |
| POST /v1/media | Import a file from a public address | write key, role action library.edit |
| POST /v1/media/uploads | Get a resumable signed upload address and the media id | write key, role action library.edit |

## Accounts

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/accounts | The connected accounts, with their state | read key, role action read |
| GET /v1/accounts/{id} | One connected account | read key, role action read |
| PATCH /v1/accounts/{id} | Disable or enable an account, or change its settings | write key, role action workspace.manage |
| DELETE /v1/accounts/{id} | Disconnect an account: its tokens are erased and its queued posts are canceled | write key, role action workspace.manage |
| PATCH /v1/accounts/{id}/name | Give an account your own name; the platform's name is kept | write key, role action workspace.manage |
| POST /v1/accounts/{id}/pick | Pick the Page, channel, blog or location an account posts to | write key, role action workspace.manage |
| POST /v1/accounts/{id}/reconnect-link | Make a link a client opens to connect one broken account again | write key, role action workspace.manage |
| GET /v1/accounts/{id}/targets | The Pages, boards, playlists, locations or blogs an account can post to, and the one picked | read key, role action read |
| POST /v1/accounts/connect | Get the address that connects an account by redirect | write key, role action workspace.manage |
| POST /v1/accounts/connect/form | Connect an account that uses a password, token or pasted address | write key, role action workspace.manage |
| POST /v1/invite-links | Make an expiring link a client opens to connect their own account into this workspace | write key, role action workspace.manage |

## Slots

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/slots | The weekly slots, in the workspace time zone | read key, role action read |
| POST /v1/slots | Add a weekly slot | write key, role action library.edit |
| PATCH /v1/slots/{id} | Change a slot that no future post uses | write key, role action library.edit |
| DELETE /v1/slots/{id} | Delete a slot, optionally moving the posts that use it to the next free slot | write key, role action library.edit |
| POST /v1/slots/next | The next free slot for some accounts | write key, role action post.create |

## Library

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/sets | Saved selections of accounts and their platform settings | read key, role action read |
| POST /v1/sets | Save a set of accounts and settings | write key, role action library.edit |
| PATCH /v1/sets/{id} | Change a set | write key, role action library.edit |
| DELETE /v1/sets/{id} | Delete a set | write key, role action library.edit |
| GET /v1/signatures | Saved blocks of text added to posts | read key, role action read |
| POST /v1/signatures | Save a signature | write key, role action library.edit |
| PATCH /v1/signatures/{id} | Change a signature | write key, role action library.edit |
| DELETE /v1/signatures/{id} | Delete a signature | write key, role action library.edit |
| GET /v1/tags | Tags with their colors | read key, role action read |
| POST /v1/tags | Make a tag | write key, role action library.edit |
| PATCH /v1/tags/{id} | Rename or recolor a tag | write key, role action library.edit |
| DELETE /v1/tags/{id} | Delete a tag | write key, role action library.edit |

## Webhooks

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/webhooks | Outgoing webhook endpoints | read key, role action webhooks.manage |
| POST /v1/webhooks | Add a webhook endpoint | write key, role action webhooks.manage |
| PATCH /v1/webhooks/{id} | Change the events or scope of a webhook, or switch it on or off | write key, role action webhooks.manage |
| DELETE /v1/webhooks/{id} | Delete a webhook endpoint | write key, role action webhooks.manage |
| POST /v1/webhooks/{id}/test | Send a signed test event now | write key, role action webhooks.manage |

## Analytics

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/analytics/export | The posts of a range with their latest numbers, as CSV text | read key, role action read |
| GET /v1/analytics/refresh | How many on-demand refreshes are left today | read key, role action read |
| POST /v1/analytics/refresh | Ask for fresh numbers for one published post | write key, role action post.create |
| GET /v1/analytics/summary | Totals per platform, the best posts, and account cards compared with the previous period | read key, role action read |
| GET /v1/imported-posts | Posts imported from an account's own history (published elsewhere) | read key, role action read |
| GET /v1/posts/{id}/analytics | The stored metric snapshots of each destination of a post | read key, role action read |

## Inbox

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/comments | Comments and replies gathered from the accounts | read key, role action read |
| PATCH /v1/comments/{id} | Set a comment open, done or hidden, or assign it to a member | write key, role action post.comment |
| GET /v1/comments/{id}/labels | The labels on one comment | read key, role action read |
| POST /v1/comments/{id}/labels | Set the labels on a comment (replaces the ones it had) | write key, role action post.comment |
| POST /v1/comments/{id}/reply | Send your own reply to a comment, from the account it was left on | write key, role action post.publish |
| GET /v1/inbox-labels | The labels the team sorts the inbox with | read key, role action read |
| POST /v1/inbox-labels | Add an inbox label | write key, role action library.edit |
| PATCH /v1/inbox-labels/{id} | Rename or recolor an inbox label | write key, role action library.edit |
| DELETE /v1/inbox-labels/{id} | Delete an inbox label; it comes off every item | write key, role action library.edit |
| GET /v1/inbox-labels/{id}/comments | The ids of the comments that carry a label, newest first | read key, role action read |

## Automation

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/plugs | Rules that act on a post when it reaches a like count | read key, role action read |
| POST /v1/plugs | Save a plug, off | write key, role action automation.manage |
| PATCH /v1/plugs/{id} | Switch a plug on or off | write key, role action automation.manage |
| DELETE /v1/plugs/{id} | Delete a plug | write key, role action automation.manage |

## Account

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/audit | The workspace audit trail: what was done, by a member, a key, an MCP client or a rule | read key, role action workspace.manage |
| GET /v1/me | The workspace, the role this key or sign-in acts with, and the plan | read key, role action read |
| GET /v1/notifications | The notification center for the member this key acts as, newest first | read key, role action read |
| POST /v1/notifications/preferences | Turn the email for one kind of notice on or off | write key, role action read |
| POST /v1/notifications/read | Mark notifications read, some by id or all | write key, role action read |
| GET /v1/usage | Plan limits and what this month has used of each allowance | read key, role action read |

## Connect links

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/connect-links/{token} | What an invite link is for: the workspace name and the platforms it offers | No key |
| POST /v1/connect-links/{token}/start | A client begins connecting their own account with an invite link | No key |
| GET /v1/connect/{platform}/callback | Where a platform sends the person back; answers with a redirect to the site | No key |

## Free tools

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/public/tools/{tool} | Run a free tool (check_post, split_thread, platform_limits, build_utm_link) with query parameters | No key |
| POST /v1/public/tools/{tool} | Run a free tool with a JSON body (for long text) | No key |

## MCP

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /.well-known/oauth-authorization-server | RFC 8414 authorization server metadata | No key |
| GET /.well-known/oauth-protected-resource | RFC 9728 metadata for the MCP resource | No key |
| GET /.well-known/oauth-protected-resource/v1/mcp | RFC 9728 metadata for /v1/mcp | No key |
| GET /.well-known/oauth-protected-resource/v1/mcp/oauth | RFC 9728 metadata for /v1/mcp/oauth | No key |
| POST /oauth/register | RFC 7591 dynamic registration of a public client | No key |
| POST /oauth/revoke | RFC 7009 revocation | No key |
| POST /oauth/token | Authorization code and refresh token grants | No key |
| POST /v1/mcp | The MCP server: free tools with no credential, every tool with a key or an OAuth token | No key |
| POST /v1/mcp/oauth | The same MCP server at an address that requires an OAuth sign-in | No key |

## Alerts

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/alert-target | Where failure alerts go (a Slack or Discord channel) | read key, role action webhooks.manage |
| POST /v1/alert-target | Send failure alerts to a Slack or Discord channel | write key, role action webhooks.manage |
| PATCH /v1/alert-target | Switch failure alerts on or off | write key, role action webhooks.manage |
| DELETE /v1/alert-target | Remove the failure-alert target | write key, role action webhooks.manage |

## Brand kits

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/brand-kits | The workspace's brand kits: name, website, colors, fonts and library assets | read key, role action read |
| POST /v1/brand-kits | Add a brand kit | write key, role action library.edit |
| PATCH /v1/brand-kits/{id} | Change a brand kit, or make it the primary | write key, role action library.edit |
| DELETE /v1/brand-kits/{id} | Delete a brand kit; another becomes the primary if this one was | write key, role action library.edit |

## Calendar

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/calendar/links | The read-only calendar links of this workspace | read key, role action workspace.manage |
| POST /v1/calendar/links | Make a read-only link a client opens to see the calendar | write key, role action workspace.manage |
| DELETE /v1/calendar/links/{id} | Revoke a calendar link at once | write key, role action workspace.manage |
| GET /v1/calendar/notes | The notes on a date or range of dates | read key, role action read |
| POST /v1/calendar/notes | Add a note to a date or range of dates | write key, role action post.create |
| PATCH /v1/calendar/notes/{id} | Change a calendar note | write key, role action post.create |
| DELETE /v1/calendar/notes/{id} | Delete a calendar note | write key, role action post.create |

## Calendar links

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/calendar-links/{token} | A read-only calendar a team shared: when each post goes out, where, a short preview and the calendar notes | No key |

## Developer

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/logs | The last 7 days of API requests for this workspace, with payloads and answers | read key, role action apikeys.manage |

## Feeds

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/feeds | The RSS feeds that turn new items into posts | read key, role action automation.manage |
| POST /v1/feeds | Turn each new item of a feed into a post | write key, role action automation.manage |
| PATCH /v1/feeds/{id} | Change a feed, or switch it on or off | write key, role action automation.manage |
| DELETE /v1/feeds/{id} | Delete a feed; posts already made from it stay | write key, role action automation.manage |

## Members

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/members | The people in the workspace and their roles | read key, role action read |

## Recurring

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/recurring | The posts that repeat, with their next run | read key, role action read |
| POST /v1/recurring | Make a scheduled post repeat every 1 to 31 days | write key, role action automation.manage |
| PATCH /v1/recurring/{id} | Change a repeating post for the next run only, or for every run after it | write key, role action automation.manage |
| DELETE /v1/recurring/{id} | Stop a repeating post; runs already written stay | write key, role action automation.manage |

## Review links

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/review/{token} | What a client sees on a review link: each post as it will go out, per destination, and the comments so far | No key |
| POST /v1/review/{token}/comments | A client leaves a comment on a post of the link | No key |
| POST /v1/review/{token}/decisions | A client approves a post waiting in review, or asks for changes with a note | No key |

## Workspace

| Operation | What it does | Needs |
| --- | --- | --- |
| GET /v1/utm-preset | The UTM preset added to links when posts go out | read key, role action read |
| POST /v1/utm-preset | Set the UTM preset | write key, role action workspace.manage |
| DELETE /v1/utm-preset | Remove the UTM preset | write key, role action workspace.manage |

## Questions

**Where is the OpenAPI document?**

The API serves OpenAPI 3.1 at /openapi.json on its own host, generated from the same route table as this page.

**Does every route need a key?**

Every route except the free tools and the invite-link routes needs a key. The Needs column says which.

## Related

- [Quickstart: 1Post docs](https://get1post.com/docs/quickstart.md)
- [API authentication and keys: 1Post docs](https://get1post.com/docs/api-authentication.md)
- [1Post API error codes and how to fix each](https://get1post.com/docs/errors.md)
