All API endpoints
The full endpoint list of the public REST API, with method, path and the scope each one needs.
The full list
Every path is under https://api.posty.hu/public/v1. Click a name for the detailed description, with the parameters and a runnable example.
| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /status | Status and discovery. Answers without a key. | |
| POST | /signup/start | Sends a one-time code to the user's email address. Callable without a key, and gives the same answer for every address. | |
| POST | /signup/complete | With the code and the user's consent (acceptTerms: true) it creates the account and shows a full workspace key (psty_sa_) once. There is no free trial; the next step is checkout. 409 if the address already has an account. | |
| GET | /is-connected | Checks whether the key points to a valid workspace. | |
| GET | /workspaces | The workspaces the key can reach. `current` marks the one the request arrived on. If the key covers several workspaces, the other routes expect the workspace id in the `showorg` header. | |
| GET | /integrations | The connected channels: id, name, @handle, platform, and whether it can post right now. | channels:read |
| GET | /integration-settings/:id | A channel's posting rules and settings schema, with the character limit resolved for the account. | channels:read |
| POST | /integration-trigger/:id | A platform specific lookup on a channel: lists of boards, subreddits, pages. | channels:read |
| GET | /social/:integration | Returns the platform URL a person has to open to connect the channel. | channels:write |
| GET | /groups | The customer groups the channels are filed under. | channels:read |
| GET | /posts | The calendar for a period: every post with its state and time. | posts:read |
| POST | /posts | Creates a post: draft, scheduled or published now, on one or more channels. | posts:draft (posts:publish as well to publish) |
| DELETE | /posts/:id | Deletes only this one post (one channel), with its thread. The other channels of the group stay. | posts:draft |
| DELETE | /posts/group/:group | Deletes the whole group from every channel: one edit that went out to several channels. | posts:draft |
| PUT | /posts/:id/status | Moves a post between the draft and scheduled states. | posts:publish |
| GET | /posts/:id/missing | Tells you what the post still needs before it can publish. | posts:read |
| PUT | /posts/:id/release-id | Records the id and URL of a post that was published outside the platform. | posts:publish |
| GET | /find-slot/:id | The next free time slot according to the workspace's schedule. | posts:read |
| POST | /upload | Uploads an image or video to the media library, up to 1 GB. | media:write |
| POST | /upload-from-url | Pulls a media file from a public URL into the media library. | media:write |
| POST | /upload-link | A browser upload link, for when the file is on the user's device. | media:write |
| GET | /upload-link/:id | The files that arrived through an upload link, with a URL you can put in a post. | media:write |
| GET | /analytics/:integration | A channel's statistics for the requested period. | analytics:read |
| GET | /analytics/post/:postId | A published post's platform statistics. | analytics:read |
| GET | /notifications | The workspace's notifications, paginated. | posts:read |
| GET | /fotoai/status | Whether the key owner's FotoAI account is connected, as whom, and the FotoAI credit balance. | media:write |
| GET | /fotoai/models | FotoAI's image and video models with their parameters (aspect ratio, resolution, length) and credit price. | media:write |
| POST | /fotoai/quote | The exact price of a generation and a quote_id valid for 10 minutes. Spends nothing. | media:write |
| POST | /fotoai/generations | Starts a generation paid with the user's FotoAI credits, with a price ceiling (max_millicredits or quote_id) and an idempotency key. The result goes into the media library. | media:write |
| GET | /fotoai/generations | The user's recent FotoAI generations from every source, marked when one is already in this workspace's media library. | media:write |
| GET | /fotoai/generations/:id | A generation's status; once done, the images and videos saved in the media library with a URL you can put in a post. | media:write |
| POST | /fotoai/generations/:id/import | Imports any FotoAI generation (also ones made on fotoai.hu) into the media library. Importing twice returns the same media. | media:write |
| GET | /plans | The four plans (Basic, Pro, Creator, Team) with monthly and yearly prices in forints, euros, Swiss francs and US dollars, the main limits, the trial rule and the workspace's current plan. Answers without a plan gate. | |
| GET | /subscription | The state of the subscription that governs the workspace (none, trialing, active, past_due, read_only, cancelled), the plan, the period end, and any unpaid checkout started in the last hour. Ask this after payment. | |
| POST | /subscriptions/checkout | A Stripe Checkout link for the chosen plan and period. It charges nothing: the user opens the link and pays with their own Link wallet or card. Only an OAuth token or a full workspace key (psty_sa_) can call it, the payer's. | |
| GET | /subscription/portal | A short lived link to the Stripe billing portal: plan change, cancellation, invoices, card. The same authentication rule as checkout. |
How to read it
The Scope column shows which scope the key needs. If it is missing, the response is 403, and it names the missing one and the key owner's current role. The list of scopes is on the Authentication page.
Two paths, /status and /is-connected, need no scope. The first needs no authentication either.
The exact schemas
These pages describe the usage, with examples. The field-by-field, machine-readable schema is in the OpenAPI 3 document, and you can generate client code from it too.
Error responses and rate limits are covered on the Errors and limits page.