Posty API, MCP und CLI Referenz
Diese Seite ist die vollständige Referenz der programmierbaren Schnittstellen von Posty: jeder öffentliche REST-Endpunkt, alle Befehle des Kommandozeilentools und die Tools des MCP-Servers. Wenn du noch nicht entschieden hast, welche Schnittstelle du brauchst, die Entwicklerübersicht ist der Einstieg.
Eine eigene Seite pro Endpunkt, mit Parametern und ausführbaren Beispielen, steht in der vollständigen Dokumentation: posty.hu/dokumentacio/api/vegpontok.
So funktioniert es
Posty verwaltet über drei Schnittstellen denselben Arbeitsbereich wie die Weboberfläche. Die REST-API aus deinem eigenen Code, das Kommandozeilentool aus dem Terminal und deinen Skripten, der MCP-Server aus einem KI-Agenten. Alle drei nutzen dieselben Berechtigungen und Limits. Was du auf der einen tun kannst, kannst du auch auf den anderen tun.
Die Basis-URL der REST-API ist https://api.posty.hu/public/v1. Die Version steht in der Route, und jede Antwort ist JSON.
Verbinden in drei Schritten
1. Registriere dich unter posty.hu/regisztracio. Kein Verkaufsgespräch, keine Warteliste.
2. Verknüpfe in der Oberfläche mindestens ein Social-Media-Konto. Diesen Schritt kannst du nicht über die API erledigen, weil die Plattform die Einwilligung eines Menschen braucht.
3. Lege dir selbst einen Schlüssel an: Einstellungen → Entwickler. Der Schlüssel ist nur einmal sichtbar, im Moment des Anlegens.
Dein erster Aufruf kann prüfen, ob alles sitzt. Dieser Endpunkt antwortet auch ohne Schlüssel und sagt dir, wo du alles findest:
curl https://api.posty.hu/public/v1/statusDer erste authentifizierte Aufruf listet deine Kanäle:
curl https://api.posty.hu/public/v1/integrations \
-H "Authorization: psty_a_kulcsod"Authentifizierung
Zwei Arten von Zugangsdaten funktionieren. Der API-Schlüssel ist der vollständige Wert des Authorization-Headers (psty_…) und ist für deinen eigenen Code. Das OAuth-2.1-Access-Token (Bearer pos_…) brauchst du, wenn eine andere Anwendung im Namen deiner Nutzer auf Posty zugreift. Der Ablauf läuft mit PKCE, die Metadaten sind maschinenlesbar.
Die Berechtigungen eines Schlüssels folgen der aktuellen Rolle seines Inhabers. Wird jemand herabgestuft oder aus dem Arbeitsbereich entfernt, kann der Schlüssel sofort nur noch das, was die Person selbst darf. Gehört ein Schlüssel zu mehreren Arbeitsbereichen, wählt der Header showorg einen davon.
Endpunkte
Jeder Pfad liegt unter https://api.posty.hu/public/v1. Die Spalte „Berechtigung" zeigt, welchen Scope der Schlüssel braucht. Fehlt er, ist die Antwort 403, und sie nennt den fehlenden.
| Methode | Pfad | Was es tut | Berechtigung |
|---|---|---|---|
| GET | /status | Állapot és felderítés. Az egyetlen útvonal, amely kulcs nélkül is válaszol. | — |
| GET | /is-connected | Ellenőrzi, hogy a kulcs érvényes munkaterületre mutat-e. | — |
| GET | /integrations | A bekötött csatornák: azonosító, név, @handle, platform, és hogy tud-e most posztolni. | channels:read |
| GET | /integration-settings/:id | Egy csatorna posztolási szabályai és beállítássémája, a fiókra feloldott karakterkorláttal. | channels:read |
| POST | /integration-trigger/:id | Platformspecifikus lekérdezés egy csatornán: táblák, subredditek, oldalak listája. | channels:read |
| GET | /social/:integration | Visszaadja azt a platformcímet, amit egy embernek meg kell nyitnia a csatorna bekötéséhez. | channels:write |
| GET | /groups | Az ügyfélcsoportok, amelyekbe a csatornák be vannak sorolva. | channels:read |
| GET | /posts | A naptár egy időszakra: minden poszt állapottal és időponttal. | posts:read |
| POST | /posts | Poszt létrehozása: piszkozat, ütemezés vagy azonnali közzététel, egy vagy több csatornára. | posts:draft (közzétételhez posts:publish is) |
| DELETE | /posts/:id | Egy poszt törlése és a hozzá tartozó folyamat leállítása. | posts:draft |
| DELETE | /posts/group/:group | A teljes csoport törlése: egy szerkesztés, ami több csatornára ment ki, egyetlen posztnak számít. | posts:draft |
| PUT | /posts/:id/status | Poszt átmozgatása piszkozat és ütemezett állapot között. | posts:publish |
| GET | /posts/:id/missing | Megmondja, mi hiányzik még a poszthoz a közzétételhez. | posts:read |
| PUT | /posts/:id/release-id | A platformon kívül közzétett poszt azonosítójának és címének rögzítése. | posts:publish |
| GET | /find-slot/:id | A következő szabad időpont a munkaterület ütemezése szerint. | posts:read |
| POST | /upload | Kép vagy videó feltöltése a médiatárba, legfeljebb 1 GB. | media:write |
| POST | /upload-from-url | Médiafájl behúzása nyilvános URL-ről a médiatárba. | media:write |
| POST | /upload-link | Böngészős feltöltési link, ha a fájl a felhasználó eszközén van. | media:write |
| GET | /upload-link/:id | A feltöltési linken beérkezett fájlok, a posztba tehető címmel. | media:write |
| GET | /analytics/:integration | Egy csatorna statisztikái a kért időszakra. | analytics:read |
| GET | /analytics/post/:postId | Egy közzétett poszt platformstatisztikái. | analytics:read |
| GET | /notifications | A munkaterület értesítései, lapozva. | posts:read |
Die genauen Request- und Response-Schemas, Feld für Feld, stehen in der OpenAPI-3-Beschreibung. Daraus kannst du auch Client-Code generieren lassen.
Beispiel: geplanter Beitrag
Das Datum ist immer UTC, im ISO-8601-Format. type kann draft, schedule oder now sein.
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": "a_csatorna_azonositoja" },
"value": [{ "content": "<p>Sziasztok!</p>" }]
}]
}'Die Antwort gibt pro Kanal eine Zeile zurück, mit dem postId-Wert, den du zum Löschen und zum Ändern des Status verwendest.
Fehler
Jeder Fehler ist JSON. Bei Fehlern, die Posty auslöst, trägt das msg Feld den Satz für Menschen. Aufrufe, die an der formalen Prüfung der Anfrage scheitern, bekommen das Format des Frameworks (statusCode, message, error). Die 403 wegen fehlender Berechtigung nennt den fehlenden Scope und die Rolle des Schlüsselinhabers, weil der häufigste Grund nicht der falsche Schlüssel ist, sondern der herabgestufte Nutzer.
Der Statuscode sagt dir, ob sich ein erneuter Versuch lohnt: 400, 401, 403 und 404 gehen nicht weg, bis du etwas änderst. 429 und 5xx schon. Das Schema ApiError beschreibt das auch maschinenlesbar in der OpenAPI-Beschreibung.
Ratenlimits
Jede Antwort trägt die Header RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (in Sekunden, kein Zeitstempel) und RateLimit-Policy. Bei 429 kommt zusätzlich Retry-After. Jede Route hat ein eigenes Kontingent, pro Schlüssel. Warte nicht auf die 429: am Restwert kannst du vorher drosseln.
Versionierung und Abkündigung
Die Version steht in der Route: jeder öffentliche Aufruf läuft unter /public/v1. Eine inkompatible Änderung würde als neue Version erscheinen (/public/v2), und v1 hält seinen Vertrag. Erweiterungen (neues optionales Feld, neue Route, neuer Enum-Wert) erfolgen innerhalb von v1. Dein Code ignoriert deshalb Felder, die er nicht kennt.
Würden wir eine Route abkündigen, bekäme ihre Antwort den Header Deprecation: true, dazu im Header Sunset das Datum, ab dem sie nicht mehr funktioniert. Dieses Datum liegt nie weniger als 180 Tage in der Zukunft. Jede Antwort trägt außerdem einen Link-Header mit der Relation rel="sunset", der auf diesen Abschnitt zeigt. Derzeit ist nichts abgekündigt.
Kommandozeilentool
posty-cli nutzt dieselbe API, nur vom Terminal aus. Installation und Anmeldung:
npm install -g posty-cli
posty auth:login
posty integrations:listDie Anmeldung öffnet einen Browser und speichert den Schlüssel auf deinem Rechner, damit du ihn nicht in deine Skripte schreiben musst. Jeder Befehl kann --json-Ausgabe liefern, die für die maschinelle Verarbeitung gedacht ist.
| posty auth:login | Böngészős bejelentkezés, a kulcsot a gép tárolja. |
| posty auth:status | Melyik munkaterülethez van kötve a gép. |
| posty auth:logout | A tárolt kulcs törlése. |
| posty integrations:list | A bekötött csatornák azonosítóval. |
| posty integrations:settings <id> | Egy csatorna szabályai és beállításai. |
| posty integrations:trigger <id> <method> | Platformspecifikus lekérdezés a csatornán. |
| posty posts:create -c "szöveg" --date "..." -i "<id>" | Ütemezett poszt egy vagy több csatornára. |
| posty posts:create -c "szöveg" -t draft ... | Ugyanaz piszkozatként, közzététel nélkül. |
| posty posts:create --json fajl.json | A teljes kérés fájlból, szkriptekhez. |
| posty posts:list | A naptár tartalma. |
| posty posts:delete <id> | Poszt törlése. |
| posty posts:status <id> --status draft | Váltás piszkozat és ütemezett között. |
| posty posts:find-slot <id> | A következő szabad időpont. |
| posty upload <fajl> | Médiafeltöltés a médiatárba. |
| posty upload:link | Böngészős feltöltési link, ha a fájl nem a gépen van. |
| posty upload:files <id> | Ami a feltöltési linken beérkezett. |
| posty analytics:platform <id> -d 30 | Csatornastatisztika az elmúlt N napra. |
| posty analytics:post <id> | Egy poszt statisztikái. |
| posty posts:missing <id> | Mi hiányzik még a poszthoz. |
MCP-Server
Die Adresse des MCP-Servers ist https://api.posty.hu/mcp-oauth, mit Streamable HTTP-Übertragung und OAuth-2.1-Authentifizierung. Dein Agent sieht diese Tools:
| Tool | Was es tut | Schreibt? |
|---|---|---|
| get_workspace_context | A pontos idő UTC-ben, a felhasználó időzónája és a munkaterület neve. | nein |
| list_integrations | A bekötött csatornák azonosítóval, @handle-lel és állapottal. | nein |
| list_groups | Az ügyfélcsoportok. | nein |
| get_integration_schema | Egy csatorna szabályai és a fiókra feloldott karakterkorlát. | nein |
| get_channel_options | Platformspecifikus választható értékek egy csatornához. | ja |
| preview_post | Megmutatja, mi menne ki, csatornánként. Nem ír semmit. | nein |
| list_posts | A naptár, UTC és helyi idővel, csatornanévvel. | nein |
| delete_post | Nem közzétett poszt törlése. A már kint lévőt visszautasítja. | ja |
| create_post | Piszkozat, ütemezés vagy azonnali közzététel. | ja |
| upload_media_from_url | Kép vagy videó a médiatárba URL-ből vagy data URL-ből. | ja |
| create_upload_link | Böngészős link, amire a felhasználó ráhúzza a saját gépén lévő fájlt. Két óráig él. | ja |
| list_upload_link_files | Ami a feltöltési linken beérkezett, a posztba tehető címmel. | nein |
Die Verbindung verlangt Authentifizierung: ohne Zugangsdaten antwortet der Server mit 401, und der Header WWW-Authenticate sagt, wo du die Freigabe anfragen kannst. Das ist kein Fehler, sondern der Beginn des Ablaufs nach dem MCP-Standard. Die Tool-Liste lässt sich unabhängig davon im Manifest lesen.
Maschinenlesbar
Jedes Dokument, das ein Agent oder ein Generator anfragt:
- OpenAPI 3: https://posty.hu/openapi.json
- MCP-Manifest: https://posty.hu/.well-known/mcp.json
- Status und Erkennung:
https://api.posty.hu/public/v1/status - OAuth-Metadaten:
https://api.posty.hu/.well-known/oauth-protected-resource - Kurze Zusammenfassung für Agenten: https://posty.hu/llms.txt
Publikum statt Extraschicht
Posty führt deine Social-Media-Konten in einem Kalender zusammen. So hast du mehr Zeit für Interessierte und dein Unternehmen. Verbringe nicht zehn Stunden pro Woche mit der Kontoverwaltung.
Kostenlos testen