Beiträge via API erstellen
Veröffentlichen oder planen Sie einen Beitrag auf mehreren Plattformen mit einem einzigen API-Aufruf, inklusive Medien.
https://post.adaptlypost.com/post/api/v1/social-postsErstellen Sie einen neuen Social-Media-Beitrag. Beiträge können sofort veröffentlicht, für später geplant oder als Entwurf gespeichert werden.
posts.draft reicht, wenn saveAsDraft true ist. Ein zukünftiges scheduledAt braucht posts.schedule. Ohne scheduledAt, oder mit einer bereits vergangenen Zeit, wird sofort veröffentlicht, das braucht posts.publish. Ein Mitwirkenden-Schlüssel kann daher nur Entwürfe speichern.
Body-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
platformsERFORDERLICH | PlatformType[] | Zielplattformen (z. B. TWITTER, LINKEDIN, INSTAGRAM). Jede braucht auch ihre Verbindungs-IDs |
contentTypeERFORDERLICH | ContentType | TEXT, IMAGE, VIDEO, CAROUSEL oder DOCUMENT. DOCUMENT gibt es nur für LinkedIn: genau eine PDF-, PPT-, PPTX-, DOC- oder DOCX-Datei in mediaUrls, angezeigt als durchblätterbares Dokument |
text | string | Textinhalt des Beitrags. Auf LinkedIn erwähnen Sie eine Unternehmensseite mit @[Seitenname](urn:li:organization:<id>), wobei der Name genau so geschrieben sein muss, wie LinkedIn ihn anzeigt. LinkedIn erlaubt nur Erwähnungen von Unternehmensseiten, nicht von Personen |
platformTexts | PlatformText[] | Plattformspezifische Textüberschreibungen |
mediaUrls | string[] | URLs der hochgeladenen Mediendateien |
mediaAltTexts | string[] | Alternativtext für jedes Bild, in derselben Reihenfolge wie mediaUrls. Höchstens 1000 Zeichen pro Eintrag; ein leerer String überspringt ein Bild. Wird an X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram und Threads gesendet. Pinterest verwendet den ersten, gekürzt auf 500 Zeichen. TikTok, YouTube, das Google Unternehmensprofil und Videos ignorieren ihn. |
thumbnailUrl | string | Vorschaubild-URL für Videobeiträge |
thumbnailTimestampMs | number | Videobild, das als Vorschaubild dient, in Millisekunden ab Beginn |
platformThumbnails | PlatformThumbnail[] | Ein anderes Thumbnail für eine Plattform eines Videobeitrags, als { platform, thumbnailUrl?, thumbnailTimestampMs? }. YOUTUBE, FACEBOOK, LINKEDIN und TELEGRAM nehmen ein Bild, INSTAGRAM und PINTEREST ein Bild oder ein Videobild, TIKTOK nur ein Videobild. Plattformen ohne Eintrag nutzen thumbnailUrl und thumbnailTimestampMs |
platformAspectRatios | PlatformAspectRatio[] | Bringt jedes Bild eines IMAGE- oder CAROUSEL-Beitrags auf einer Plattform in ein Format, als { platform, aspectRatio, fit? }. Ein Eintrag pro Plattform. aspectRatio ist SQUARE (1:1), PORTRAIT (4:5), VERTICAL (9:16) oder LANDSCAPE (1.91:1): INSTAGRAM nimmt SQUARE, PORTRAIT oder LANDSCAPE, TIKTOK alle vier. fit ist CROP (Standard, aus der Mitte zugeschnitten) oder PAD (das ganze Bild bleibt, der Rest wird mit einer unscharfen Kopie gefüllt). Andere Plattformen, Videobeiträge, Instagram-Storys und ein zweiter Eintrag für eine Plattform ergeben einen 400. Plattformen ohne Eintrag behalten die Bilder wie hochgeladen |
firstComments | PlatformFirstComment[] | Ein Kommentar, der vom selben Konto unter dem veröffentlichten Beitrag gepostet wird, als { platform, text }. Ein Eintrag pro Plattform. LINKEDIN nimmt bis zu 1250 Zeichen, TWITTER 280, THREADS 500, BLUESKY 300, MASTODON 500, YOUTUBE 10000 (nicht bei privaten oder für Kinder gemachten Videos), FACEBOOK 8000 und INSTAGRAM 2200 (nicht bei Stories). Andere Plattformen ergeben einen 400. Eine Facebook-Seite oder ein Instagram-Konto, das vor der Einführung erster Kommentare dort verbunden wurde, muss einmal neu verbunden werden; bis dahin schlägt der Kommentar mit firstCommentError fehl |
threadReplies | PlatformThreadReplies[] | Macht den Beitrag zu einem Thread, als { platform, texts }: Der Beitrag eröffnet ihn, und jeder Text geht vom selben Konto als Antwort auf den vorherigen raus. Ein Eintrag pro Plattform, bis zu 25 Texte. TWITTER nimmt 280 Zeichen pro Antwort (mehr mit X Premium), THREADS 500, BLUESKY 300 und MASTODON 500 (oder das Limit der Instanz). Andere Plattformen, eine leere oder zu lange Antwort und eine Plattform, die auch einen ersten Kommentar hat, ergeben einen 400 |
scheduledAt | string | ISO 8601-Datum für die Planung. Weglassen für sofortige Veröffentlichung. |
timezoneERFORDERLICH | string | IANA-Zeitzone (z. B. America/New_York) |
saveAsDraft | boolean | Als Entwurf speichern statt zu veröffentlichen |
recurrence | Recurrence | Wiederholt den Beitrag nach Zeitplan. Braucht ein zukünftiges scheduledAt. Siehe Wiederkehrende Beiträge unten |
twitterConnectionIds | string[] | Twitter-Konto-Verbindungs-IDs |
twitterKeepLinks | boolean | Links im X-Text klickbar lassen. Standardmäßig wird jeder Link im X-Text aufgebrochen (aus example.com wird example. com), weil X für einen Beitrag mit Link über 10-mal mehr berechnet. Nur AppSumo-Lifetime-Deal-Konten können das einschalten: Ein behaltener Link kostet 20 statt 2 Credits, auch bei einem ersten Kommentar auf X, und ohne genug Credits schlägt der X-Beitrag fehl. true ergibt bei jedem anderen Tarif einen 400. Wird ignoriert, wenn der X-Text keinen Link enthält |
linkedinConnectionIds | string[] | LinkedIn-Konto-Verbindungs-IDs |
instagramConnectionIds | string[] | Instagram-Konto-Verbindungs-IDs |
tiktokConnectionIds | string[] | TikTok-Konto-Verbindungs-IDs |
youtubeConnectionIds | string[] | YouTube-Kanal-Verbindungs-IDs |
pinterestConnectionIds | string[] | Pinterest-Konto-Verbindungs-IDs |
blueskyConnectionIds | string[] | Bluesky-Konto-Verbindungs-IDs |
mastodonConnectionIds | string[] | Mastodon-Konto-Verbindungs-IDs |
googleBusinessConnectionIds | string[] | Verbindungs-IDs der Standorte im Google Unternehmensprofil |
googleBusinessConfigs | GoogleBusinessConfig[] | Beitragseinstellungen für das Google Unternehmensprofil pro Standort: Beitragstyp (Neuigkeit, Veranstaltung oder Angebot), Schaltfläche, Veranstaltungsdaten und Angebotsdetails. Siehe Plattform-Konfigurationen für das Schema |
tumblrConnectionIds | string[] | Verbindungs-IDs der Tumblr-Blogs |
telegramConnectionIds | string[] | Verbindungs-IDs der Telegram-Kanäle und -Gruppen |
tumblrConfigs | TumblrConfig[] | Tumblr-Einstellungen pro Blog: Tags, Titel und Quelllink. Schema unter Plattform-Konfigurationen |
threadsConnectionIds | string[] | Threads-Konto-Verbindungs-IDs |
pageIds | string[] | Facebook-Seiten, auf denen gepostet wird. Akzeptiert entweder die Konto-id oder die pageId aus /social-accounts |
pinterestConfigs | PinterestConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
tiktokConfigs | TikTokConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
instagramConfigs | InstagramConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
facebookConfigs | FacebookConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
youtubeConfigs | YouTubeConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
linkedinConfigs | LinkedInConfig[] | Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen |
Plattformspezifischer Text
Verwenden Sie platformTexts, um Inhalte pro Plattform anzupassen und dabei denselben Beitrag zu teilen.
Ein Konto pro Plattform
Pro Beitrag ist nur ein Konto pro Plattform erlaubt. Sie können beispielsweise nicht zwei Twitter-Verbindungs-IDs in derselben Anfrage verwenden. Diese Einschränkung gilt zur Einhaltung der Nutzungsbedingungen der Plattformen. Ein Verstoß führt zu einem 400-Fehler.Wiederkehrende Beiträge
Fügen Sie ein recurrence-Objekt hinzu, um den Beitrag zu wiederholen. Der Beitrag zu scheduledAt ist der erste der Serie und legt die Uhrzeit fest, in der timezone, die Sie senden. Es existiert immer nur der nächste Beitrag der Serie. AdaptlyPost erstellt ihn etwa 24 Stunden, bevor er erscheint.
Recurrence-Objekt
| Parameter | Typ | Beschreibung |
|---|---|---|
frequencyERFORDERLICH | RecurrenceFrequency | DAILY, WEEKLY, MONTHLY oder YEARLY. YEARLY postet jedes Jahr am selben Datum; eine Serie, die am 29. Februar beginnt, postet in anderen Jahren am 28. Februar |
interval | number | Alle N Tage, Wochen, Monate oder Jahre wiederholen (1-30, Standard: 1) |
weekdays | Weekday[] | Nur bei WEEKLY. Die Wochentage für Beiträge, MONDAY bis SUNDAY. Der Wochentag von scheduledAt ist immer enthalten |
endsOn | string | Letzter Tag, an dem ein Beitrag erscheinen darf, als YYYY-MM-DD. Muss am Tag des ersten Beitrags oder danach liegen. Nicht mit maxOccurrences kombinierbar |
maxOccurrences | number | Gesamtzahl der Beiträge, die die Serie veröffentlicht (2-365). Nicht mit endsOn kombinierbar. Ohne beide Felder läuft die Serie, bis Sie sie pausieren oder löschen |
Regeln für wiederkehrende Beiträge
Ein wiederkehrender Beitrag kann weder saveAsDraft: true nutzen noch ein TikTok-Konto enthalten. Beides liefert 400. Termine, die während einer Pause verstreichen, werden übersprungen und nie nachträglich veröffentlicht. X und LinkedIn lehnen Text ab, der einem früheren Beitrag gleicht. Nutzen Sie daher Spintax wie {Hi|Hello}, damit sich jeder Beitrag unterscheidet.Wenn ein Beitrag abgelehnt wird
Ein Beitrag, der wegen seines Inhalts abgelehnt wird, liefert 400 mit code post_validation_failed und issues, das alle gefundenen Probleme auf einmal auflistet, im selben Format wie die issues von Beitrag prüfen. message ist der Text des Problems, wenn es eines gibt, und eine Liste von Texten, wenn es mehrere sind.
{
"statusCode": 400,
"error": "Bad Request",
"code": "post_validation_failed",
"message": [
"Text exceeds maximum length for Twitter/X. Maximum is 280 characters",
"Video duration (185s) exceeds your TikTok account limit of 180 seconds"
],
"issues": [
{
"code": "TEXT_TOO_LONG",
"severity": "ERROR",
"message": "Text exceeds maximum length for Twitter/X. Maximum is 280 characters",
"platform": "TWITTER",
"connectionId": "conn_abc123"
},
{
"code": "TIKTOK_VIDEO_TOO_LONG",
"severity": "ERROR",
"message": "Video duration (185s) exceeds your TikTok account limit of 180 seconds",
"platform": "TIKTOK",
"connectionId": "conn_tt789"
}
]
}curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/social-posts \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"platforms": ["TWITTER", "LINKEDIN"],
"contentType": "TEXT",
"text": "Exciting product update!",
"timezone": "America/New_York",
"twitterConnectionIds": ["conn_abc123"],
"linkedinConnectionIds": ["conn_def456"]
}'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/social-posts \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"platforms": ["LINKEDIN"],
"contentType": "TEXT",
"text": "{Hi|Hello} everyone, the weekly product tip is live!",
"scheduledAt": "2026-10-05T13:00:00Z",
"timezone": "America/New_York",
"linkedinConnectionIds": ["conn_def456"],
"recurrence": {
"frequency": "WEEKLY",
"weekdays": ["MONDAY", "THURSDAY"],
"maxOccurrences": 12
}
}'{
"postId": "post_xyz789",
"queuedPlatforms": ["TWITTER", "LINKEDIN"],
"skippedPlatforms": [],
"isScheduled": false,
"scheduledAt": null
}