Entwickler
Öffentliche Veröffentlichungs-API
Lade Medien hoch, erstelle Beiträge und veröffentliche auf Facebook, Instagram, TikTok, LinkedIn, Threads und Pinterest, jeweils auf ein Produkt beschränkt über einen Arbeitsbereichs-API-Schlüssel. Der empfohlene Weg zur Integration ist die Connect-API, eine kleine, flache/api/connect/v1-Oberfläche, die die meisten Planungstools direkt verwenden können.
Brauchst du volle Kontrolle, explizite Veröffentlichung, Abfrage von Job-Läufen, signierte Webhooks, Batch-Verarbeitung, kanalspezifische Einstellungen? Die erweiterte /api/public/v1-API weiter unten stellt all das bereit. Beide teilen sich Authentifizierung, Produkte und Veröffentlichungspipeline; verwende ausschließlich diese versionierten öffentlichen Routen (interne App-Routen erfordern Firebase-Nutzerauthentifizierung und sind nicht Teil des öffentlichen Vertrags).
Facebook, Instagram und TikTok sind über die API grundsätzlich manuell. Beiträge für diese Kanäle nutzen standardmäßig die manual_reminder-Zustellung: Markaestro ruft niemals die API der Plattform für sie auf. Das Veröffentlichen verschiebt den Beitrag in die „Zu veröffentlichen“-Warteschlange des Arbeitsbereichs. Übergib deliveryMode: "direct_publish", um die offizielle API-Veröffentlichung zu aktivieren. Bei TikTok wird standardmäßig die Posteingangsübergabe genutzt, außer settings.postMode ist direct_post. LinkedIn, Threads und Pinterest veröffentlichen standardmäßig programmatisch.
Arbeitsbereiche können mehrere Produkte haben. Jeder API-Schlüssel ist bei der Erstellung an ein Produkt gebunden, sodass Aufrufe automatisch dieses Produkt ansteuern und Anfragen für jedes andere Produkt abgelehnt werden.
Baust du einen KI-Agenten?
Beginne stattdessen mit dem Leitfaden für KI-Agenten. Er enthält fertige Tool-Schemas zum Kopieren, eine System-Prompt-Kurzübersicht, die Wiederholungs- und Fehlerbehandlungsregeln, die ein Agent braucht, sowie einen Schnellstart mit vier Befehlen. Dein Agent kann auch direkt /llms.txt lesen.
Maschinenlesbare Spezifikation
Jeder Endpunkt, jedes Request- und Response-Format und jeder Fehlercode als OpenAPI 3.1. Generiert aus denselben Schemata, gegen die die API validiert, also kann sie keine API beschreiben, die es nicht gibt.
/api/connect/v1, die die meisten Planungstools direkt verwenden können. Sie bildet die gängige create-upload-url → PUT → post-Konvention auf denselben Arbeitsbereich, dieselbe Authentifizierung, Produkte und Veröffentlichungspipeline ab wie die vollständige API unten. Setze die Basis-URL des Clients auf /api/connect und authentifiziere dich mit einem produktbeschränkten Arbeitsbereichs-API-Schlüssel (Berechtigungen posts.read, posts.write, media.write)./api/connect/v1/social-accountsListet verbundene Facebook-, Instagram-, TikTok- und LinkedIn-Ziele als flache Konten auf, jeweils mit ihrem Produkt gekennzeichnet, damit Clients gruppieren und unterscheiden können. Jeder Kanal hat seinen eigenen Pfad, kein kanalübergreifendes Fan-out.
/api/connect/v1/productsListet Marken (API-Name: products) mit ihren verbundenen Konten verschachtelt auf, eine markenzentrierte Auswahl.
/api/connect/v1/media/create-upload-urlGibt eine kurzlebige, einmal verwendbare signierte PUT-URL sowie eine Medien-ID zurück.
<upload_url>Lädt die rohen Bild-Bytes an die signierte URL hoch. Kein API-Schlüssel nötig, die Signatur autorisiert die Anfrage.
/api/connect/v1/postsErstellt einen Entwurf pro ausgewähltem Konto. Setze is_draft=false mit scheduled_at, um die Zustellung zu planen; TikTok nutzt die Posteingangsübergabe des Creators.
/api/connect/v1/postsListet Arbeitsbereichsbeiträge mit flachem Status, Text und Medien-URLs auf.
# 1. List connected accounts
curl "$MARKAESTRO_URL/api/connect/v1/social-accounts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# 2. Request a signed upload url, then PUT the bytes
curl -X POST "$MARKAESTRO_URL/api/connect/v1/media/create-upload-url" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mime_type": "image/png", "size_bytes": 184320, "name": "slide-1.png" }'
curl -X PUT "<upload_url>" -H "Content-Type: image/png" --data-binary @slide-1.png
# 3. Create a draft post for one or more accounts
curl -X POST "$MARKAESTRO_URL/api/connect/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"caption": "New drop",
"media": ["ast_111", "ast_222"],
"social_accounts": ["prod_123#instagram:instagram:ig_123"]
}'Jedes Konto aus /social-accounts ist mit seinem product beschriftet, dem API-Namen für eine Marke (dasselbe Konto kann unter mehreren Marken erscheinen), und seine id kodiert productId#destinationId, gib sie unverändert in social_accounts zurück, und die Anfrage verteilt sich auf einen Beitrag pro Konto. Jeder Schlüssel ist an eine Marke gebunden, sieht und postet also nur für diese Marke. Facebook-, Instagram- und TikTok-Beiträge sind grundsätzlich manuell, sie werden als Entwürfe erstellt und vom Arbeitsbereichsinhaber nativ aus der „Zu veröffentlichen“-Warteschlange von Markaestro veröffentlicht, niemals über die API der Plattform. LinkedIn, Threads und Pinterest veröffentlichen programmatisch nach einer expliziten Veröffentlichungsaktion. Der Status eines Beitrags ist entweder draft, processing, posted oder failed. Facebook, Instagram, LinkedIn, TikTok und Threads sind jeweils eigene dedizierte Ziele, das Veröffentlichen auf einem verteilt sich niemals auf ein anderes. Verfolge den Veröffentlichungsstatus über GET /api/connect/v1/posts.
Erweitert: vollständige öffentliche API
Die vollständige /api/public/v1-Oberfläche, explizite Veröffentlichung, asynchrone Job-Läufe, signierte Webhooks, Batch-Erstellung und kanalspezifische Einstellungen. Nutze sie, wenn die Connect-API nicht ausreicht.
/api/public/v1/productsListet die Marken des Schlüssels sowie die aktuell verfügbaren Kanäle für jede auf.
/api/public/v1/products/:id/destinationsListet die Veröffentlichungsziele dieser Marke auf, einschließlich eigenständigem Instagram Login, Facebook-Seite, Threads, LinkedIn-Profil/-Seite und verbundenen TikTok-Zielen.
/api/public/v1/media/upload-sessionsErstellt aus Dateiname, Inhaltstyp und exakter Größe eine 15-minütige direkte Upload-Sitzung.
<uploadSession.uploadUrl>Lädt Rohdaten mit dem zurückgegebenen Content-Type direkt in den Speicher; keinen API-Schlüssel senden.
/api/public/v1/media/upload-sessions/:id/finalizePrüft Typ und Größe und gibt das Medien-Asset zurück; abgeschlossene Sitzungen sind wiederholbar.
/api/public/v1/mediaKompatibler Multipart-Upload. Gibt eine Asset-ID und gehostete URL zurück.
/api/public/v1/postsErstellt einen Entwurf im Arbeitsbereich. Facebook, Instagram und TikTok nutzen standardmäßig manuelle Veröffentlichung (deliveryMode manual_reminder); übergib deliveryMode direct_publish, um einen Beitrag für die API-Veröffentlichung zu aktivieren.
/api/public/v1/postsListet Beiträge auf, neueste zuerst. Filtere mit ?status=scheduled, um zu sehen, was eingereiht ist, und ?productId=, um auf eine Marke zu beschränken. Ein markengebundener Schlüssel ist immer auf seine eigene Marke beschränkt und kann productId weglassen.
/api/public/v1/posts/:idGibt den aktuellen Beitragsstatus, den Zustellmodus und die Veröffentlichungsergebnisse zurück.
/api/public/v1/posts/:id/publishReiht einen asynchronen Veröffentlichungslauf ein. Manuelle Beiträge landen zur nativen Veröffentlichung in der „Zu veröffentlichen“-Warteschlange des Arbeitsbereichs; LinkedIn, Threads und Pinterest veröffentlichen direkt; aktivierte Meta-Beiträge werden über die offizielle API veröffentlicht, und aktivierte TikTok-Beiträge nutzen die Posteingangsübergabe.
/api/public/v1/posts/:idLöscht den Beitrag aus Markaestro. Nutzt die vorhandene Berechtigung posts.write. Gibt 400 VALIDATION_POST_IS_PUBLISHING zurück, während ein Veröffentlichungslauf läuft. Das Löschen eines bereits veröffentlichten Beitrags entfernt nicht die aktive Kopie auf der Plattform.
/api/public/v1/job-runs/:idGibt queued, running, succeeded oder failed zurück.
/api/public/v1/webhook-endpointsRegistriert ein Webhook-Ziel; maximal 25 aktive Endpunkte pro Arbeitsbereich.
/api/public/v1/webhook-endpointsListet registrierte Webhook-Ziele für den Geltungsbereich dieses API-Schlüssels auf.
/api/public/v1/webhook-endpoints/:idDeaktiviert ein Webhook-Ziel.
curl "$MARKAESTRO_URL/api/public/v1/products" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"destinationId, wenn ein Produkt mehrere Ziele hat, etwa ein LinkedIn-Profil plus Seiten.curl "$MARKAESTRO_URL/api/public/v1/products/prod_123/destinations" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"# 1. Create a 15-minute upload session
UPLOAD=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileName":"launch-1.jpg","contentType":"image/jpeg","sizeBytes":184320}')
# 2. PUT bytes directly to uploadSession.uploadUrl with its returned headers
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @launch-1.jpg
# 3. Finalize; the response contains asset.id for mediaAssetIds
curl -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions/<session_id>/finalize" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY""deliveryMode": "direct_publish" hinzu, um diesen Beitrag für die offizielle API-Veröffentlichung zu aktivieren.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-001" \
-d '{
"channel": "instagram",
"caption": "Launch day carousel",
"mediaAssetIds": ["ast_123", "ast_124"],
"productId": "prod_123",
"destinationId": "instagram:instagram:ig_123"
}'deliveryMode: "platform_inbox" (oder direct_publish) sendet eine explizite Veröffentlichung den Entwurf stattdessen an den Posteingang des Creators auf TikTok.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-tt-001" \
-d '{
"channel": "tiktok",
"caption": "Spring drop teaser",
"mediaAssetIds": ["ast_vid_123"],
"productId": "prod_123",
"destinationId": "tiktok:tiktok:tt_open_123"
}'post.action_required aus; LinkedIn, Threads, Pinterest und aktivierte Meta-Beiträge veröffentlichen direkt; aktivierte TikTok-Beiträge reihen die Posteingangsübergabe ein.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts/pst_123/publish" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Idempotency-Key: publish-001"posts.read und posts.write.# The key is already bound to one brand
curl "$MARKAESTRO_URL/api/public/v1/posts?status=scheduled&limit=100" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# Cancel one
curl -X DELETE "$MARKAESTRO_URL/api/public/v1/posts/pst_123" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"{
"id": "evt_123",
"type": "post.action_required",
"createdAt": "2026-04-08T18:06:10.000Z",
"workspaceId": "ws_123",
"data": {
"postId": "pst_123",
"channel": "instagram",
"status": "platform_action_required",
"nextAction": "post_manually_from_reminder"
}
}Reine Text-, Bild- oder Video-Beiträge. Bis zu 10 Bilder oder 1 Video pro Beitrag. Standardmäßig manuelle Veröffentlichung; direkte Veröffentlichung bei Aktivierung.
Mindestens ein Bild oder Video, bis zu 10 Elemente. Ein einzelnes Video wird als Reel veröffentlicht. Standardmäßig manuelle Veröffentlichung; direkte Veröffentlichung bei Aktivierung.
TikTok
Mindestens ein Bild oder Video. Bis zu 35 Bilder oder 1 Video. Standardmäßig manuelles Posten; freigegebene Beiträge gehen in den TikTok-Posteingang des Creators oder mit TikTok postMode direct_post direkt ins Profil.
Text, einzelnes Bild, einzelnes Video oder organische Multi-Bild-Beiträge mit bis zu 20 Bildern. Ziele auf das verbundene Profil oder eine verwaltete Seite.
X
Text, bis zu vier Bilder, ein GIF oder ein Video. Antwortkontrollen gelten pro Beitrag, und die Veröffentlichung wird blockiert, wenn das X-Kostenbudget des Workspace aufgebraucht ist.