Skip to content
API endpoints

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.

MethodPathWhat it doesScope
GET/statusStatus and discovery. Answers without a key.
POST/signup/startSends a one-time code to the user's email address. Callable without a key, and gives the same answer for every address.
POST/signup/completeWith 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-connectedChecks whether the key points to a valid workspace.
GET/workspacesThe 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/integrationsThe connected channels: id, name, @handle, platform, and whether it can post right now.channels:read
GET/integration-settings/:idA channel's posting rules and settings schema, with the character limit resolved for the account.channels:read
POST/integration-trigger/:idA platform specific lookup on a channel: lists of boards, subreddits, pages.channels:read
GET/social/:integrationReturns the platform URL a person has to open to connect the channel.channels:write
GET/groupsThe customer groups the channels are filed under.channels:read
GET/postsThe calendar for a period: every post with its state and time.posts:read
POST/postsCreates a post: draft, scheduled or published now, on one or more channels.posts:draft (posts:publish as well to publish)
DELETE/posts/:idDeletes only this one post (one channel), with its thread. The other channels of the group stay.posts:draft
DELETE/posts/group/:groupDeletes the whole group from every channel: one edit that went out to several channels.posts:draft
PUT/posts/:id/statusMoves a post between the draft and scheduled states.posts:publish
GET/posts/:id/missingTells you what the post still needs before it can publish.posts:read
PUT/posts/:id/release-idRecords the id and URL of a post that was published outside the platform.posts:publish
GET/find-slot/:idThe next free time slot according to the workspace's schedule.posts:read
POST/uploadUploads an image or video to the media library, up to 1 GB.media:write
POST/upload-from-urlPulls a media file from a public URL into the media library.media:write
POST/upload-linkA browser upload link, for when the file is on the user's device.media:write
GET/upload-link/:idThe files that arrived through an upload link, with a URL you can put in a post.media:write
GET/analytics/:integrationA channel's statistics for the requested period.analytics:read
GET/analytics/post/:postIdA published post's platform statistics.analytics:read
GET/notificationsThe workspace's notifications, paginated.posts:read
GET/fotoai/statusWhether the key owner's FotoAI account is connected, as whom, and the FotoAI credit balance.media:write
GET/fotoai/modelsFotoAI's image and video models with their parameters (aspect ratio, resolution, length) and credit price.media:write
POST/fotoai/quoteThe exact price of a generation and a quote_id valid for 10 minutes. Spends nothing.media:write
POST/fotoai/generationsStarts 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/generationsThe user's recent FotoAI generations from every source, marked when one is already in this workspace's media library.media:write
GET/fotoai/generations/:idA 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/importImports any FotoAI generation (also ones made on fotoai.hu) into the media library. Importing twice returns the same media.media:write
GET/plansThe 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/subscriptionThe 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/checkoutA 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/portalA 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.

Is something missing from this page? Email [email protected] or use the form on the Help page.