REST APIGET

RSS-Feeds

Verbinden Sie einen RSS- oder Atom-Feed und machen Sie aus jedem neuen Eintrag einen Entwurf, einen geplanten oder einen veröffentlichten Beitrag auf den gewählten Konten, mit einer Vorlage oder KI-Texten.

Berechtigung: posts.read. Siehe Rollen und Berechtigungen.

Feeds und ihre Einträge auflisten und abrufen braucht posts.read. Erstellen, Vorschau, Aktualisieren, Pausieren, Fortsetzen, Prüfen und Löschen brauchen posts.draft und dazu die Berechtigung, die der Beitragsmodus des Feeds verlangt: posts.schedule für SCHEDULE, posts.publish für PUBLISH und ai.generate für KI-Texte. Ein Feed, den ein anderes Mitglied eingerichtet hat, braucht zum Aktualisieren, Pausieren, Fortsetzen, Prüfen oder Löschen außerdem posts.others.

Ein Feed wird nach Zeitplan geprüft, und jeder Eintrag, der nach dem Hinzufügen erscheint, wird zu einem Beitrag auf den Konten in targets. Jeder Beitrag durchläuft dieselben Prüfungen wie Beitrag erstellen. Ein Feed postet als das Mitglied, das ihn zuletzt gespeichert hat: Wer einen Feed erstellt, aktualisiert oder fortsetzt, wird mit dem Mitglied des Schlüssels zu seinem Besitzer.

MethodePfadBeschreibung
GET/api/v1/rss-feedsDie Feeds des Workspace auflisten, neueste zuerst
POST/api/v1/rss-feedsEinen Feed verbinden
POST/api/v1/rss-feeds/previewEinen Feed abrufen, ohne ihn zu speichern, und seine 5 neuesten Einträge darstellen
GET/api/v1/rss-feeds/:idEinen Feed abrufen
PATCH/api/v1/rss-feeds/:idDie gesendeten Felder ändern. Die URL kann nicht geändert werden
DELETE/api/v1/rss-feeds/:idDen Feed nicht mehr prüfen. Bereits erstellte Beiträge bleiben
GET/api/v1/rss-feeds/:id/itemsDie Einträge auflisten, die der Feed gesehen hat
POST/api/v1/rss-feeds/:id/pauseDen Feed pausieren
POST/api/v1/rss-feeds/:id/resumeDen Pausengrund löschen und den Feed innerhalb einer Minute prüfen
POST/api/v1/rss-feeds/:id/checkDie nächste Prüfung auf jetzt legen; der Feed wird innerhalb einer Minute abgerufen

POST /api/v1/rss-feeds

Ruft den Feed ab und merkt sich jeden Eintrag, der schon darin steht, damit nur später erscheinende Einträge gepostet werden. Ein Workspace kann bis zu 20 Feeds haben.

FeldTypPflichtBeschreibung
urlstringJaÖffentliche http- oder https-URL eines RSS- oder Atom-Feeds
targetsarrayJa1 bis 20 Konten, jeweils { platform, connectionId, pageId }. connectionId ist die Konto-ID aus Social Accounts, und pageId ist für FACEBOOK Pflicht
postModestringJaDRAFT erstellt einen Entwurf. SCHEDULE plant den Beitrag publishDelayMinutes nach dem Fund des Eintrags. PUBLISH veröffentlicht ihn sofort
contentModestringJaTEMPLATE füllt template. AI schreibt aus dem Artikel einen Text pro Plattform, hängt den Link an und verbraucht 1 KI-Credit pro Plattform und Eintrag
namestringNeinBis zu 120 Zeichen. Standard ist der Titel des Feeds
publishDelayMinutesintegerNein5 bis 10080 (7 Tage). Pflicht, wenn postMode SCHEDULE ist
templatestringNeinBeitragstext mit {title}, {link}, {description}, {author} und {feed}, bis zu 2000 Zeichen. Standard ist {title}\n\n{link}. Zuerst die Beschreibung, dann der Titel wird gekürzt, damit der Text auf jede Plattform passt; der Link wird nie gekürzt
aiInstructionsstringNeinZusätzliche Anweisungen für KI-Texte, bis zu 1000 Zeichen
includeImagebooleanNeinDas Bild des Eintrags oder das Vorschaubild des Artikels anhängen. Standard ist true
twitterKeepLinksbooleanNeinLinks in X-Beiträgen klickbar lassen. Nur bei Lifetime-Deal-Plänen, und jeder X-Beitrag mit Link kostet dann mehr Credits. Standard ist false
includeKeywordsstring[]NeinBis zu 50. Nur Einträge posten, deren Titel oder Zusammenfassung eines davon enthält
excludeKeywordsstring[]NeinBis zu 50. Einträge überspringen, deren Titel oder Zusammenfassung eines davon enthält
maxPostsPerCheckintegerNein1 bis 10, Standard 3. Neue Einträge werden ältester zuerst gepostet; der Rest wartet auf die nächste Prüfung
checkIntervalMinutesintegerNein15, 30, 60, 180, 360, 720 oder 1440. Standard ist 60
postLatestItembooleanNeinBei der ersten Prüfung auch den neuesten Eintrag posten. Standard ist false

Ziele können FACEBOOK, INSTAGRAM, THREADS, TWITTER, BLUESKY, LINKEDIN, MASTODON, TELEGRAM und GOOGLE_BUSINESS sein.

Beispielanfrage:

{
  "url": "https://blog.example.com/feed.xml",
  "targets": [
    { "platform": "LINKEDIN", "connectionId": "conn_li_001" },
    { "platform": "FACEBOOK", "connectionId": "conn_fb_001", "pageId": "123456789012345" }
  ],
  "postMode": "SCHEDULE",
  "publishDelayMinutes": 30,
  "contentMode": "TEMPLATE",
  "template": "Neu im Blog: {title}\n\n{link}",
  "excludeKeywords": ["sponsored"]
}

Gibt 201 mit dem Feed zurück:

{
  "id": "rss_01j9x",
  "userId": "user_123",
  "accountGroupId": "ag_01j9x",
  "name": "Example Blog",
  "url": "https://blog.example.com/feed.xml",
  "siteUrl": "https://blog.example.com",
  "status": "ACTIVE",
  "postMode": "SCHEDULE",
  "publishDelayMinutes": 30,
  "contentMode": "TEMPLATE",
  "template": "Neu im Blog: {title}\n\n{link}",
  "includeImage": true,
  "twitterKeepLinks": false,
  "includeKeywords": [],
  "excludeKeywords": ["sponsored"],
  "maxPostsPerCheck": 3,
  "checkIntervalMinutes": 60,
  "targets": [
    { "platform": "LINKEDIN", "connectionId": "conn_li_001", "displayName": "Example Inc." },
    { "platform": "FACEBOOK", "connectionId": "conn_fb_001", "pageId": "123456789012345", "displayName": "Example" }
  ],
  "nextCheckAt": "2026-11-08T15:00:00.000Z",
  "createdAt": "2026-11-08T14:00:00.000Z",
  "updatedAt": "2026-11-08T14:00:00.000Z"
}

Eine URL, die kein RSS- oder Atom-Feed ist, ein bereits verbundener Feed, eine nicht unterstützte Zielplattform, ein fehlendes publishDelayMinutes oder die Grenze von 20 Feeds ergibt 400. Ein Feed, der nicht erreichbar ist, ergibt 503. Ein Schlüssel ohne die Berechtigung, die der Beitragsmodus oder die KI-Texte verlangen, ergibt 403.

Feed-Felder

FeldBeschreibung
userIdDas Mitglied, als das der Feed postet: wer ihn zuletzt gespeichert hat
statusACTIVE oder PAUSED
pauseReasonWarum der Feed pausiert ist, nur gesetzt, solange er PAUSED ist. Siehe Tabelle unten
lastErrorDer Fehler hinter der Pause, wenn ein Fehler sie ausgelöst hat
targets[].displayNameDer Name des Kontos, von AdaptlyPost eingetragen. Wird ignoriert, wenn Sie ihn senden
nextCheckAt, lastCheckedAt, lastPostedAtWann der Feed als Nächstes geprüft wird, wann er zuletzt geprüft wurde und wann er zuletzt einen Beitrag erstellt hat

Die übrigen Felder enthalten die Einstellungen von oben.

PausengrundBedeutung
USERJemand hat ihn über die API oder die App pausiert
FETCH_FAILURES5 Abrufe hintereinander sind fehlgeschlagen
CONSECUTIVE_FAILURES3 Einträge hintereinander konnten nicht gepostet werden
ACCESS_LOSTSein Besitzer hat die Berechtigung verloren, die sein Beitragsmodus braucht
SUBSCRIPTION_INACTIVEDer Plan deckt das Veröffentlichen nicht mehr ab
CONNECTION_REMOVEDJedes Zielkonto wurde getrennt

Beheben Sie die Ursache und setzen Sie den Feed dann fort.

POST /api/v1/rss-feeds/preview

Nimmt url und optional template, ruft den Feed ab, ohne etwas zu speichern, und gibt url, title, siteUrl und die 5 neuesten items zurück, jeweils mit title, link, summary, publishedAt, imageUrl und text, dem mit der Vorlage dargestellten Eintrag.

GET /api/v1/rss-feeds/:id/items

Listet die Einträge auf, die der Feed gesehen hat, neueste zuerst, ohne die, die beim Hinzufügen schon im Feed standen. limit nimmt 1 bis 100, Standard 20. Gibt { "items": [...] } zurück, jeweils mit id, title, link, publishedAt, createdAt, status, postId und error.

EintragsstatusBedeutung
BASELINEStand schon im Feed, als er hinzugefügt wurde
PROCESSINGWird gerade zu einem Beitrag
POSTEDWurde zu einem Beitrag. postId verweist darauf
FILTEREDVon den Stichwortregeln ausgeschlossen
SKIPPEDMehr als 14 Tage vor dem Hinzufügen des Feeds veröffentlicht
FAILEDDer Beitrag konnte nicht erstellt werden. error nennt den Grund

Aktualisieren, pausieren, fortsetzen, prüfen und löschen

PATCH nimmt dieselben Felder wie das Erstellen, außer url und postLatestItem, und ändert nur die gesendeten. Pausieren, Fortsetzen, Prüfen und Löschen nehmen keinen Body. Alle außer Löschen geben den Feed zurück; Löschen gibt { "deleted": true } zurück. Eine ID, die nicht existiert oder zu einem anderen Workspace gehört, ergibt 404.