REST APIPOST

Beiträge via API erstellen

Veröffentlichen oder planen Sie einen Beitrag auf mehreren Plattformen mit einem einzigen API-Aufruf, inklusive Medien.

POSThttps://post.adaptlypost.com/post/api/v1/social-posts

Erstellen Sie einen neuen Social-Media-Beitrag. Beiträge können sofort veröffentlicht, für später geplant oder als Entwurf gespeichert werden.

API-Schlüssel (Bearer-Token)
Berechtigung:posts.draftRollen und Berechtigungen

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

ParameterTypBeschreibung
platformsERFORDERLICHPlatformType[]Zielplattformen (z. B. TWITTER, LINKEDIN, INSTAGRAM). Jede braucht auch ihre Verbindungs-IDs
contentTypeERFORDERLICHContentTypeTEXT, 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
textstringTextinhalt 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
platformTextsPlatformText[]Plattformspezifische Textüberschreibungen
mediaUrlsstring[]URLs der hochgeladenen Mediendateien
mediaAltTextsstring[]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.
thumbnailUrlstringVorschaubild-URL für Videobeiträge
thumbnailTimestampMsnumberVideobild, das als Vorschaubild dient, in Millisekunden ab Beginn
platformThumbnailsPlatformThumbnail[]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
platformAspectRatiosPlatformAspectRatio[]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
firstCommentsPlatformFirstComment[]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
threadRepliesPlatformThreadReplies[]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
scheduledAtstringISO 8601-Datum für die Planung. Weglassen für sofortige Veröffentlichung.
timezoneERFORDERLICHstringIANA-Zeitzone (z. B. America/New_York)
saveAsDraftbooleanAls Entwurf speichern statt zu veröffentlichen
recurrenceRecurrenceWiederholt den Beitrag nach Zeitplan. Braucht ein zukünftiges scheduledAt. Siehe Wiederkehrende Beiträge unten
twitterConnectionIdsstring[]Twitter-Konto-Verbindungs-IDs
twitterKeepLinksbooleanLinks 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
linkedinConnectionIdsstring[]LinkedIn-Konto-Verbindungs-IDs
instagramConnectionIdsstring[]Instagram-Konto-Verbindungs-IDs
tiktokConnectionIdsstring[]TikTok-Konto-Verbindungs-IDs
youtubeConnectionIdsstring[]YouTube-Kanal-Verbindungs-IDs
pinterestConnectionIdsstring[]Pinterest-Konto-Verbindungs-IDs
blueskyConnectionIdsstring[]Bluesky-Konto-Verbindungs-IDs
mastodonConnectionIdsstring[]Mastodon-Konto-Verbindungs-IDs
googleBusinessConnectionIdsstring[]Verbindungs-IDs der Standorte im Google Unternehmensprofil
googleBusinessConfigsGoogleBusinessConfig[]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
tumblrConnectionIdsstring[]Verbindungs-IDs der Tumblr-Blogs
telegramConnectionIdsstring[]Verbindungs-IDs der Telegram-Kanäle und -Gruppen
tumblrConfigsTumblrConfig[]Tumblr-Einstellungen pro Blog: Tags, Titel und Quelllink. Schema unter Plattform-Konfigurationen
threadsConnectionIdsstring[]Threads-Konto-Verbindungs-IDs
pageIdsstring[]Facebook-Seiten, auf denen gepostet wird. Akzeptiert entweder die Konto-id oder die pageId aus /social-accounts
pinterestConfigsPinterestConfig[]Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen
tiktokConfigsTikTokConfig[]Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen
instagramConfigsInstagramConfig[]Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen
facebookConfigsFacebookConfig[]Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen
youtubeConfigsYouTubeConfig[]Einstellungen für diese Plattform, ein Objekt pro Konto, jeweils mit der connectionId, für die es gilt (pageId bei Facebook). Siehe Plattform-Konfigurationen
linkedinConfigsLinkedInConfig[]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.

Wenn eine Plattform keinen Eintrag in platformTexts hat, wird das Standard-text-Feld verwendet.

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

ParameterTypBeschreibung
frequencyERFORDERLICHRecurrenceFrequencyDAILY, 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
intervalnumberAlle N Tage, Wochen, Monate oder Jahre wiederholen (1-30, Standard: 1)
weekdaysWeekday[]Nur bei WEEKLY. Die Wochentage für Beiträge, MONDAY bis SUNDAY. Der Wochentag von scheduledAt ist immer enthalten
endsOnstringLetzter Tag, an dem ein Beitrag erscheinen darf, als YYYY-MM-DD. Muss am Tag des ersten Beitrags oder danach liegen. Nicht mit maxOccurrences kombinierbar
maxOccurrencesnumberGesamtzahl 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
Die Antwort enthält zusätzlich recurringPostId, und postId ist der erste Beitrag der Serie. Übergeben Sie recurringPostId an die Endpunkte für wiederkehrende Beiträge, um die Serie zu pausieren, fortzusetzen oder zu 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"
    }
  ]
}
Um diese Probleme zu sehen, ohne etwas anzulegen, senden Sie denselben Body vorher an Beitrag prüfen (POST /api/v1/social-posts/validate).
Einen Social-Media-Beitrag erstellen
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"]
  }'
Einen wiederkehrenden Beitrag erstellen
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
    }
  }'
201
{
  "postId": "post_xyz789",
  "queuedPlatforms": ["TWITTER", "LINKEDIN"],
  "skippedPlatforms": [],
  "isScheduled": false,
  "scheduledAt": null
}