Feed RSS
Collega un feed RSS o Atom e trasforma ogni nuovo elemento in una bozza, in un post programmato o in un post pubblicato sugli account che scegli, con un modello o con didascalie IA.
Permesso: posts.read. Vedi Ruoli e permessi.
Elencare e leggere i feed e i loro elementi richiede posts.read. Creare, vedere l'anteprima, aggiornare, mettere in pausa, riprendere, controllare ed eliminare richiedono posts.draft, più il permesso che chiede la modalità di pubblicazione del feed: posts.schedule per SCHEDULE, posts.publish per PUBLISH e ai.generate per le didascalie IA. Un feed configurato da un altro membro richiede anche posts.others per aggiornarlo, metterlo in pausa, riprenderlo, controllarlo o eliminarlo.
Un feed viene controllato secondo una pianificazione, e ogni elemento comparso dopo che l'hai aggiunto diventa un post sugli account in targets. Ogni post passa gli stessi controlli di Crea post. Un feed pubblica come il membro che l'ha salvato per ultimo: creare, aggiornare o riprendere un feed rende il membro della chiave il suo proprietario.
| Metodo | Percorso | Descrizione |
|---|---|---|
| GET | /api/v1/rss-feeds | Elenca i feed del workspace, dal più recente |
| POST | /api/v1/rss-feeds | Collega un feed |
| POST | /api/v1/rss-feeds/preview | Legge un feed senza salvarlo e mostra i suoi 5 elementi più recenti |
| GET | /api/v1/rss-feeds/:id | Ottiene un feed |
| PATCH | /api/v1/rss-feeds/:id | Cambia i campi inviati. L'URL non può cambiare |
| DELETE | /api/v1/rss-feeds/:id | Smette di controllare il feed. I post già creati restano |
| GET | /api/v1/rss-feeds/:id/items | Elenca gli elementi che il feed ha visto |
| POST | /api/v1/rss-feeds/:id/pause | Mette in pausa il feed |
| POST | /api/v1/rss-feeds/:id/resume | Cancella il motivo della pausa e controlla il feed entro un minuto |
| POST | /api/v1/rss-feeds/:id/check | Anticipa il prossimo controllo ad adesso; il feed viene letto entro un minuto |
POST /api/v1/rss-feeds
Legge il feed e registra ogni elemento che contiene già, così vengono pubblicati solo gli elementi che compaiono dopo. Un workspace può avere fino a 20 feed.
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| url | string | Sì | URL pubblico http o https di un feed RSS o Atom |
| targets | array | Sì | Da 1 a 20 account, ciascuno { platform, connectionId, pageId }. connectionId è l'id dell'account in Account social, e pageId è obbligatorio per FACEBOOK |
| postMode | string | Sì | DRAFT crea una bozza. SCHEDULE programma il post publishDelayMinutes dopo che l'elemento è stato trovato. PUBLISH lo pubblica subito |
| contentMode | string | Sì | TEMPLATE compila template. AI scrive una didascalia per piattaforma dall'articolo, aggiunge il link e consuma 1 credito IA per piattaforma e per elemento |
| name | string | No | Fino a 120 caratteri. Per impostazione predefinita, il titolo del feed |
| publishDelayMinutes | integer | No | Da 5 a 10080 (7 giorni). Obbligatorio quando postMode è SCHEDULE |
| template | string | No | Testo del post con {title}, {link}, {description}, {author} e {feed}, fino a 2000 caratteri. Predefinito {title}\n\n{link}. Prima la descrizione e poi il titolo vengono accorciati per stare su ogni piattaforma; il link non viene mai tagliato |
| aiInstructions | string | No | Istruzioni aggiuntive per le didascalie IA, fino a 1000 caratteri |
| includeImage | boolean | No | Allega l'immagine dell'elemento, o l'immagine di anteprima dell'articolo. Predefinito true |
| twitterKeepLinks | boolean | No | Mantiene cliccabili i link nei post su X. Solo piani a vita, e ogni post su X con un link costa allora più crediti. Predefinito false |
| includeKeywords | string[] | No | Fino a 50. Pubblica solo gli elementi il cui titolo o riassunto ne contiene una |
| excludeKeywords | string[] | No | Fino a 50. Salta gli elementi il cui titolo o riassunto ne contiene una |
| maxPostsPerCheck | integer | No | Da 1 a 10, predefinito 3. I nuovi elementi vengono pubblicati dal più vecchio; gli altri aspettano il controllo successivo |
| checkIntervalMinutes | integer | No | 15, 30, 60, 180, 360, 720 o 1440. Predefinito 60 |
| postLatestItem | boolean | No | Pubblica anche l'elemento più recente al primo controllo. Predefinito false |
Le destinazioni possono essere FACEBOOK, INSTAGRAM, THREADS, TWITTER, BLUESKY, LINKEDIN, MASTODON, TELEGRAM e GOOGLE_BUSINESS.
Richiesta di esempio:
{
"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": "Novità sul blog: {title}\n\n{link}",
"excludeKeywords": ["sponsored"]
}Restituisce 201 con il feed:
{
"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": "Novità sul 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"
}Un URL che non è un feed RSS o Atom, un feed già collegato, una piattaforma di destinazione non supportata, un publishDelayMinutes mancante o il limite di 20 feed restituisce 400. Un feed non raggiungibile restituisce 503. Una chiave senza il permesso richiesto dalla modalità di pubblicazione o dalle didascalie IA restituisce 403.
Campi del feed
| Campo | Descrizione |
|---|---|
| userId | Il membro per cui pubblica il feed: chi l'ha salvato per ultimo |
| status | ACTIVE o PAUSED |
| pauseReason | Perché il feed è in pausa, presente solo mentre è PAUSED. Vedi la tabella sotto |
| lastError | L'errore dietro la pausa, quando l'ha causata un problema |
| targets[].displayName | Il nome dell'account, compilato da AdaptlyPost. Ignorato se lo invii |
| nextCheckAt, lastCheckedAt, lastPostedAt | Quando il feed verrà controllato, quando è stato controllato l'ultima volta e quando ha creato l'ultimo post |
Gli altri campi riportano le impostazioni sopra.
| Motivo della pausa | Significato |
|---|---|
| USER | Qualcuno l'ha messo in pausa dall'API o dall'app |
| FETCH_FAILURES | 5 letture di fila non sono riuscite |
| CONSECUTIVE_FAILURES | 3 elementi di fila non sono stati pubblicati |
| ACCESS_LOST | Il proprietario ha perso il permesso che serve alla modalità di pubblicazione |
| SUBSCRIPTION_INACTIVE | Il piano non copre più la pubblicazione |
| CONNECTION_REMOVED | Tutti gli account di destinazione sono stati scollegati |
Risolvi la causa, poi riprendi il feed.
POST /api/v1/rss-feeds/preview
Accetta url e un template facoltativo, legge il feed senza salvare nulla e restituisce url, title, siteUrl e i suoi 5 items più recenti, ciascuno con title, link, summary, publishedAt, imageUrl e text, l'elemento con il modello applicato.
GET /api/v1/rss-feeds/:id/items
Elenca gli elementi che il feed ha visto, dal più recente, esclusi quelli già presenti quando il feed è stato aggiunto. limit accetta da 1 a 100, predefinito 20. Restituisce { "items": [...] }, ciascuno con id, title, link, publishedAt, createdAt, status, postId e error.
| Stato dell'elemento | Significato |
|---|---|
| BASELINE | Era già nel feed quando è stato aggiunto |
| PROCESSING | Sta diventando un post |
| POSTED | È diventato un post. postId lo collega |
| FILTERED | Escluso dalle regole sulle parole chiave |
| SKIPPED | Pubblicato più di 14 giorni prima che il feed fosse aggiunto |
| FAILED | Non è stato possibile creare il post. error spiega perché |
Aggiornare, mettere in pausa, riprendere, controllare ed eliminare
PATCH accetta gli stessi campi della creazione, tranne url e postLatestItem, e cambia solo quelli che invii. Pausa, ripresa, controllo ed eliminazione non hanno corpo. Tutti tranne l'eliminazione restituiscono il feed; l'eliminazione restituisce { "deleted": true }. Un id che non esiste o che appartiene a un altro workspace restituisce 404.