Posty API, MCP a CLI reference
Tato stránka je kompletní referenční příručka programovatelných rozhraní Posty: každý veřejný REST endpoint, všechny příkazy nástroje příkazové řádky a nástroje MCP serveru. Pokud jste se ještě nerozhodli, které rozhraní potřebujete, začněte přehledem pro vývojáře.
Ke každému endpointu je v kompletní dokumentaci samostatná stránka, s parametry a spustitelnými příklady: posty.hu/dokumentacio/api/vegpontok.
Jak to funguje
Posty přes tři rozhraní spravuje stejný pracovní prostor jako webová aplikace. REST API z vašeho vlastního kódu, nástroj příkazové řádky z terminálu a vašich skriptů, MCP server z AI agenta. Všechna tři používají stejná oprávnění a limity, proto co zvládnete na jednom, zvládnete i na ostatních.
Základní adresa REST API je https://api.posty.hu/public/v1. Verze je v cestě a každá odpověď je JSON.
Připojení ve třech krocích
1. Zaregistrujte se na posty.hu/regisztracio. Žádný prodejní hovor, žádná čekací listina.
2. V rozhraní propojte alespoň jeden sociální účet. Tento krok z API neuděláte, protože platforma chce souhlas od člověka.
3. Vytvořte si klíč: Automatizace → Vývojáři. Klíč se ukáže jen jednou, v okamžiku vytvoření.
Prvním voláním si ověříte, že je vše na svém místě. Tento endpoint odpoví i bez klíče a řekne vám, kde najdete všechno:
curl https://api.posty.hu/public/v1/statusPrvní ověřené volání vypíše vaše kanály:
curl https://api.posty.hu/public/v1/integrations \
-H "Authorization: psty_a_kulcsod"Autentizace
Fungují dva typy přihlašovacích údajů. API klíč je celá hodnota hlavičky Authorization (psty_…) a je určený pro váš vlastní kód. Přístupový token OAuth 2.1 (Bearer pos_…) potřebujete, když k Posty přistupuje jiná aplikace jménem vašich uživatelů. Průběh používá PKCE a metadata jsou strojově čitelná.
Oprávnění klíče se řídí aktuální rolí jeho vlastníka. Když je někdo přeřazen na nižší roli nebo odebrán z pracovního prostoru, klíč umí hned jen to, co smí on. Pokud klíč patří k více pracovním prostorům, hlavička showorg mezi nimi vybere.
Endpointy
Každá cesta je pod https://api.posty.hu/public/v1. Sloupec „Oprávnění" ukazuje, jaký scope klíč potřebuje. Když chybí, odpověď je 403 a pojmenuje, co chybí.
| Metoda | Cesta | Co dělá | Oprávnění |
|---|---|---|---|
| GET | /status | Stav a zjišťování. Odpovídá i bez klíče. | |
| POST | /signup/start | Pošle jednorázový kód na e-mailovou adresu uživatele. Lze volat bez klíče a pro každou adresu vrací stejnou odpověď. | |
| POST | /signup/complete | S kódem a souhlasem uživatele (acceptTerms: true) vytvoří účet a jednou zobrazí úplný klíč pracovního prostoru (psty_sa_). Zkušební období zdarma není, dalším krokem je checkout. 409, pokud k adrese už účet existuje. | |
| GET | /is-connected | Ověří, zda klíč ukazuje na platný pracovní prostor. | |
| GET | /workspaces | Pracovní prostory, na které klíč dosáhne. `current` označuje ten, na který dotaz přišel. Pokud klíč platí pro více pracovních prostorů, ostatní cesty očekávají ID pracovního prostoru v hlavičce `showorg`. | |
| GET | /integrations | Připojené kanály: ID, název, @handle, platforma a zda kanál může právě publikovat. | channels:read |
| GET | /integration-settings/:id | Pravidla publikování a schéma nastavení kanálu, s limitem znaků platným pro daný účet. | channels:read |
| POST | /integration-trigger/:id | Dotaz specifický pro platformu na kanálu: seznamy nástěnek, subredditů, stránek. | channels:read |
| GET | /social/:integration | Vrátí adresu platformy, kterou musí člověk otevřít, aby kanál připojil. | channels:write |
| GET | /groups | Skupiny zákazníků, do kterých jsou kanály zařazeny. | channels:read |
| GET | /posts | Kalendář za dané období: každý příspěvek se stavem a časem. | posts:read |
| POST | /posts | Vytvoří příspěvek: koncept, naplánovaný nebo okamžitě publikovaný, na jeden či více kanálů. | posts:draft (pro publikování také posts:publish) |
| DELETE | /posts/:id | Smaže jen tento jeden příspěvek (jeden kanál) s jeho vláknem. Ostatní kanály skupiny zůstanou. | posts:draft |
| DELETE | /posts/group/:group | Smaže celou skupinu na všech kanálech: jednu úpravu odeslanou na více kanálů. | posts:draft |
| PUT | /posts/:id/status | Přesune příspěvek mezi stavem konceptu a naplánovaným stavem. | posts:publish |
| GET | /posts/:id/missing | Řekne, co příspěvku ještě chybí k publikování. | posts:read |
| PUT | /posts/:id/release-id | Zaznamená ID a adresu příspěvku, který byl publikován mimo platformu. | posts:publish |
| GET | /find-slot/:id | Nejbližší volný termín podle plánu pracovního prostoru. | posts:read |
| POST | /upload | Nahraje obrázek nebo video do knihovny médií, nejvýše 1 GB. | media:write |
| POST | /upload-from-url | Stáhne mediální soubor z veřejné adresy URL do knihovny médií. | media:write |
| POST | /upload-link | Odkaz pro nahrání v prohlížeči, když je soubor v zařízení uživatele. | media:write |
| GET | /upload-link/:id | Soubory přijaté přes odkaz pro nahrání, s adresou, kterou lze vložit do příspěvku. | media:write |
| GET | /analytics/:integration | Statistiky kanálu za požadované období. | analytics:read |
| GET | /analytics/post/:postId | Statistiky publikovaného příspěvku z platformy. | analytics:read |
| GET | /notifications | Oznámení pracovního prostoru, po stránkách. | posts:read |
| GET | /fotoai/status | Zda je připojen účet FotoAI vlastníka klíče, pod kým, a zůstatek kreditů FotoAI. | media:write |
| GET | /fotoai/models | Obrazové a video modely FotoAI s parametry (poměr stran, rozlišení, délka) a cenou v kreditech. | media:write |
| POST | /fotoai/quote | Přesná cena generování a quote_id platné 10 minut. Nic neutratí. | media:write |
| POST | /fotoai/generations | Spustí generování z kreditů FotoAI uživatele, s cenovým stropem (max_millicredits nebo quote_id) a klíčem idempotence. Výsledek jde do knihovny médií. | media:write |
| GET | /fotoai/generations | Nedávná generování FotoAI uživatele ze všech zdrojů, označená, pokud už jsou v knihovně médií tohoto pracovního prostoru. | media:write |
| GET | /fotoai/generations/:id | Stav generování; po dokončení obrázky a videa uložené v knihovně médií s adresou pro příspěvek. | media:write |
| POST | /fotoai/generations/:id/import | Importuje libovolné generování FotoAI (i vytvořené na fotoai.hu) do knihovny médií. Druhý import vrátí stejná média. | media:write |
| GET | /plans | Čtyři tarify (Alap, Pro, Kreátor, Csapat) s měsíční a roční cenou ve forintech, eurech, švýcarských francích a amerických dolarech, hlavní limity, pravidlo zkušebního období a aktuální tarif pracovního prostoru. Odpovídá bez omezení tarifem. | |
| GET | /subscription | Stav předplatného, které řídí pracovní prostor (none, trialing, active, past_due, read_only, cancelled), tarif, konec období a nezaplacený checkout zahájený za poslední hodinu. Zjistěte to po zaplacení. | |
| POST | /subscriptions/checkout | Odkaz na Stripe Checkout pro zvolený tarif a období. Nic nestrhne: uživatel odkaz otevře a zaplatí vlastní peněženkou Link nebo kartou. Volat ho může jen token OAuth nebo úplný klíč pracovního prostoru (psty_sa_) plátce. | |
| GET | /subscription/portal | Krátkodobý odkaz na fakturační portál Stripe: změna tarifu, zrušení, faktury, karta. Stejné pravidlo ověření jako u checkoutu. |
Přesná schémata požadavku a odpovědi, pole po poli, najdete v popisu OpenAPI 3. Z něj si můžete nechat vygenerovat i kód klienta.
Příklad: naplánovaný příspěvek
Datum je vždy UTC, ve formátu ISO 8601. type může být draft, schedule nebo now.
curl -X POST https://api.posty.hu/public/v1/posts \
-H "Authorization: psty_a_kulcsod" \
-H "Content-Type: application/json" \
-d '{
"type": "schedule",
"date": "2026-09-15T09:00:00.000Z",
"shortLink": false,
"posts": [{
"integration": { "id": "id_vaseho_kanalu" },
"value": [{ "content": "<p>Ahoj všichni!</p>" }]
}]
}'Odpověď vrací jeden řádek na kanál, s hodnotou postId, kterou použijete při mazání a při změně stavu.
Chyby
Každá chyba je JSON. U chyb, které vyvolá Posty, nese lidskou větu pole msg. Volání, která neprojdou kontrolou formátu požadavku, dostanou tvar frameworku (statusCode, message, error). Oprávnění 403 pojmenuje chybějící scope a roli vlastníka klíče, protože nejčastější příčina není špatný klíč, ale uživatel se sníženou rolí.
Stavový kód řekne, jestli má smysl to zkusit znovu: 400, 401, 403 a 404 nezmizí, dokud něco nezměníte. 429 a 5xx ano. Schéma ApiError toto všechno popisuje i strojově čitelně v dokumentu OpenAPI.
Limity volání
Každá odpověď nese hlavičky RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (v sekundách, ne jako časové razítko) a RateLimit-Policy. S kódem 429 přijde i Retry-After. Každá cesta má vlastní okno, na klíč. Nečekejte na 429: ze zbývající hodnoty můžete zpomalit předem.
Verze a vyřazování
Verze je v cestě: každé veřejné volání žije pod /public/v1. Nekompatibilní změna by se objevila jako nová verze (/public/v2) a v1 si drží svou smlouvu. Rozšíření (nové volitelné pole, nová cesta, nová hodnota výčtu) probíhá uvnitř v1, proto váš kód ignoruje pole, která nezná.
Kdybychom cestu vyřazovali, odpověď by dostala hlavičku Deprecation: true a v hlavičce Sunset datum, po kterém už nebude fungovat. Toto datum není nikdy blíž než 180 dní. Každá odpověď nese i hlavičku Link se vztahem rel="sunset", která ukazuje na tuto sekci. Momentálně není nic ve vyřazování.
Nástroj příkazové řádky
posty-cli používá stejné API, jen z terminálu. Instalace a přihlášení:
npm install -g posty-cli
posty auth:login
posty integrations:listPřihlášení otevře prohlížeč a klíč uloží na váš počítač, takže ho nemusíte vkládat do skriptů. Každý příkaz umí dát výstup --json, který je určený ke strojovému zpracování.
| posty auth:login | Sign in through the browser. The machine stores the key. |
| posty auth:signup --email <address> | A new account with a code sent by email, without a free trial. The machine stores the key, then comes billing:subscribe. |
| posty auth:status | Which workspace this machine is linked to. |
| posty auth:logout | Delete the stored key. |
| posty integrations:list | The connected channels, with IDs. |
| posty integrations:settings <id> | A channel's rules and settings. |
| posty integrations:trigger <id> <method> | A platform-specific lookup on the channel. |
| posty posts:create -c "text" --date "..." -i "<id>" | A scheduled post to one or more channels. |
| posty posts:create -c "text" -t draft ... | The same as a draft, without publishing. |
| posty posts:create --json file.json | The full request from a file, for scripts. |
| posty posts:list | The calendar contents. |
| posty posts:delete <id> | Delete one post (one channel). |
| posty posts:delete-group <group> | Delete the whole group, from every channel. |
| posty posts:status <id> --status draft | Switch between draft and scheduled. |
| posty posts:find-slot <id> | The next free time slot. |
| posty upload <file> | Upload media to the media library. |
| posty upload:link | A browser upload link, for when the file is not on this machine. |
| posty upload:files <id> | What has arrived on the upload link. |
| posty analytics:platform <id> -d 30 | Channel statistics for the last N days. |
| posty analytics:post <id> | A post's statistics. |
| posty posts:missing <id> | What a post still needs. |
| posty fotoai:status | Whether FotoAI is connected, as whom, and the credit balance. |
| posty fotoai:models --category image | FotoAI's models with their parameters and price. |
| posty fotoai:generate -m <model> -p "prompt" --aspect 4:5 | Quote, confirm, generate with your own FotoAI credits; the result goes into the media library. |
| posty fotoai:get <id> | A generation's status and the URLs of the files saved in the media library. |
| posty billing:plans | The prices and limits of the four plans. |
| posty billing:subscribe --tier pro --period yearly | A Stripe Checkout link for the plan. --open opens it in the browser. The user pays. |
| posty billing:status | The subscription status. Check it after payment. |
| posty billing:manage | A link to the Stripe billing portal. |
MCP server
Adresa MCP serveru je https://api.posty.hu/mcp-oauth, s přenosem streamable HTTP a autentizací OAuth 2.1. Váš agent vidí tyto nástroje:
| Nástroj | Co dělá | Zapisuje? |
|---|---|---|
| get_workspace_context | Přesný čas v UTC, časové pásmo uživatele a název pracovního prostoru. | ne |
| list_workspaces | Vypíše pracovní prostory uživatele a označí ten, ve kterém připojení pracuje. | ne |
| switch_workspace | Přepne připojení do jiného pracovního prostoru. Všechny nástroje pak pracují tam. | ano |
| list_integrations | Připojené kanály s ID, @handle a stavem. | ne |
| list_groups | Skupiny zákazníků. | ne |
| get_integration_schema | Pravidla kanálu a limit znaků platný pro daný účet. | ne |
| get_channel_options | Hodnoty specifické pro platformu, ze kterých lze u kanálu vybírat. | ano |
| preview_post | Ukáže, co by se odeslalo, pro každý kanál zvlášť. Nic nezapisuje. | ne |
| list_posts | Kalendář v UTC i místním čase, s názvy kanálů. | ne |
| delete_post | Smaže nepublikovaný příspěvek (jeden kanál), s allChannels: true celou skupinu. Již zveřejněný odmítne. | ano |
| create_post | Koncept, naplánování nebo okamžité publikování. | ano |
| upload_media_from_url | Obrázek nebo video do knihovny médií z URL nebo data URL. | ano |
| create_upload_link | Odkaz v prohlížeči, na který uživatel přetáhne soubor ze svého počítače. Platí dvě hodiny. | ano |
| list_upload_link_files | Co přišlo přes odkaz pro nahrání, s adresou, kterou lze vložit do příspěvku. | ne |
| fotoai_list_models | Obrazové a video modely FotoAI s parametry a cenou v kreditech. | ne |
| fotoai_quote | Přesná cena generování FotoAI. Nic neutratí. | ne |
| fotoai_generate | Generuje z kreditů FotoAI uživatele podle schválené nabídky; výsledek jde do knihovny médií. | ano |
| fotoai_get_generation | Stav generování a po dokončení adresy souborů uložených v knihovně médií, připravené pro příspěvek. | ano |
| get_plans | Čtyři tarify s cenami ve forintech, eurech, švýcarských francích a amerických dolarech, limity, pravidlo zkušebního období a aktuální tarif. Jen když se uživatel zeptá. | ne |
| subscribe | Odkaz na Stripe Checkout pro zvolený tarif. Uživatel ho otevře a zaplatí vlastní peněženkou. Jen přes přihlášené (OAuth) připojení, pro vlastníka. | ano |
| get_subscription | Stav předplatného a nezaplacený checkout. Po zaplacení jím agent ověří, že tarif je aktivní. | ne |
| manage_subscription | Odkaz na fakturační portál Stripe: změna tarifu, zrušení, faktury, karta. Jen přes připojení OAuth, pro plátce. | ano |
| open_posty | Otevře aplikaci Posty: kalendář, editor příspěvků a kanály. Je také v postranním panelu ChatGPT. | ne |
| open_posty_panel | Stejná aplikace v bočním panelu konverzace v ChatGPT. Volá ji aplikace, ne model. | ne |
| read_settings | Nastavení uživatele: časové pásmo a pracovní prostor, ve kterém připojení pracuje, s hodnotami k výběru. | ne |
| update_settings | Uloží časové pásmo, nebo přepne připojení do jiného pracovního prostoru. Volá ho nastavení pluginu v ChatGPT. | ano |
| search_mentions | Kanály a nadcházející příspěvky pro nabídku @ v desktopové aplikaci ChatGPT. Volá ji aplikace, ne model. | ne |
| get_post | Celý příspěvek (příspěvky vlákna nebo komentáře, média, nastavení) pro editor aplikace Posty. Volá ji aplikace, ne model. | ne |
| update_post | Změní naplánovaný, rozpracovaný nebo neúspěšný příspěvek z editoru aplikace Posty. Publikovaný příspěvek odmítne. Volá ji aplikace, ne model. | ano |
Připojení žádá o autentizaci: bez přihlašovacích údajů server vrátí 401 a v hlavičce WWW-Authenticate řekne, kde požádat o oprávnění. To není chyba, ale začátek procesu podle standardu MCP. Seznam nástrojů se i tak dá přečíst z manifestu.
Strojově čitelné
Každý dokument, který agent nebo generátor požaduje:
- OpenAPI 3: https://posty.hu/openapi.json
- MCP manifest: https://posty.hu/.well-known/mcp.json
- Stav a zjištění:
https://api.posty.hu/public/v1/status - OAuth metadata:
https://api.posty.hu/.well-known/oauth-protected-resource - Krátké shrnutí pro agenty: https://posty.hu/llms.txt
Získejte publikum, ne další směnu
Posty uspořádá vaše sociální účty do jednoho kalendáře. Zbude vám víc času na zájemce i na podnikání. Ať vám správa účtů nezabere deset hodin týdně.
Vyzkoušet zdarma