REST APIGET

Feeds RSS

Conecta un feed RSS o Atom y convierte cada elemento nuevo en un borrador, una publicación programada o una publicación en las cuentas que elijas, con una plantilla o con textos de IA.

Permiso: posts.read. Consulta Roles y permisos.

Listar y leer feeds y sus elementos necesita posts.read. Crear, previsualizar, actualizar, pausar, reanudar, comprobar y eliminar necesitan posts.draft, más el permiso que pide el modo de publicación del feed: posts.schedule para SCHEDULE, posts.publish para PUBLISH y ai.generate para los textos de IA. Un feed que configuró otro miembro también necesita posts.others para actualizarlo, pausarlo, reanudarlo, comprobarlo o eliminarlo.

Un feed se comprueba según un horario, y cada elemento que aparece después de añadirlo se convierte en una publicación en las cuentas de targets. Cada publicación pasa por las mismas comprobaciones que Crear publicación. Un feed publica como el miembro que lo guardó por última vez: crear, actualizar o reanudar un feed convierte al miembro de la clave en su propietario.

MétodoRutaDescripción
GET/api/v1/rss-feedsListar los feeds del espacio de trabajo, los más nuevos primero
POST/api/v1/rss-feedsConectar un feed
POST/api/v1/rss-feeds/previewLeer un feed sin guardarlo y mostrar sus 5 elementos más recientes
GET/api/v1/rss-feeds/:idObtener un feed
PATCH/api/v1/rss-feeds/:idCambiar los campos que envías. La URL no puede cambiar
DELETE/api/v1/rss-feeds/:idDejar de comprobar el feed. Las publicaciones que ya creó se quedan
GET/api/v1/rss-feeds/:id/itemsListar los elementos que ha visto el feed
POST/api/v1/rss-feeds/:id/pausePausar el feed
POST/api/v1/rss-feeds/:id/resumeBorrar el motivo de pausa y comprobar el feed en menos de un minuto
POST/api/v1/rss-feeds/:id/checkAdelantar la próxima comprobación a ahora; el feed se lee en menos de un minuto

POST /api/v1/rss-feeds

Lee el feed y registra cada elemento que ya contiene, para que solo se publiquen los elementos que aparezcan después. Un espacio de trabajo admite hasta 20 feeds.

CampoTipoObligatorioDescripción
urlstringSíURL pública http o https de un feed RSS o Atom
targetsarraySíDe 1 a 20 cuentas, cada una { platform, connectionId, pageId }. connectionId es el id de la cuenta en Cuentas sociales, y pageId es obligatorio para FACEBOOK
postModestringSíDRAFT crea un borrador. SCHEDULE programa la publicación publishDelayMinutes después de encontrar el elemento. PUBLISH la publica de inmediato
contentModestringSíTEMPLATE rellena template. AI escribe un texto por plataforma a partir del artículo, añade el enlace y gasta 1 crédito de IA por plataforma y elemento
namestringNoHasta 120 caracteres. Por defecto, el título del feed
publishDelayMinutesintegerNoDe 5 a 10080 (7 días). Obligatorio cuando postMode es SCHEDULE
templatestringNoTexto de la publicación con {title}, {link}, {description}, {author} y {feed}, hasta 2000 caracteres. Por defecto {title}\n\n{link}. Primero la descripción y luego el título se acortan para que quepan en cada plataforma; el enlace nunca se corta
aiInstructionsstringNoInstrucciones extra para los textos de IA, hasta 1000 caracteres
includeImagebooleanNoAdjuntar la imagen del elemento, o la imagen de vista previa del artículo. Por defecto true
twitterKeepLinksbooleanNoMantener los enlaces clicables en las publicaciones de X. Solo planes de por vida, y cada publicación de X con enlace cuesta entonces más créditos. Por defecto false
includeKeywordsstring[]NoHasta 50. Publicar solo los elementos cuyo título o resumen contenga alguna
excludeKeywordsstring[]NoHasta 50. Omitir los elementos cuyo título o resumen contenga alguna
maxPostsPerCheckintegerNoDe 1 a 10, 3 por defecto. Los elementos nuevos se publican del más antiguo al más nuevo; el resto espera a la siguiente comprobación
checkIntervalMinutesintegerNo15, 30, 60, 180, 360, 720 o 1440. Por defecto 60
postLatestItembooleanNoPublicar también el elemento más reciente en la primera comprobación. Por defecto false

Los destinos pueden ser FACEBOOK, INSTAGRAM, THREADS, TWITTER, BLUESKY, LINKEDIN, MASTODON, TELEGRAM y GOOGLE_BUSINESS.

Solicitud de ejemplo:

{
  "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": "Nuevo en el blog: {title}\n\n{link}",
  "excludeKeywords": ["sponsored"]
}

Devuelve 201 con el 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": "Nuevo en el 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"
}

Una URL que no es un feed RSS o Atom, un feed ya conectado, una plataforma de destino no admitida, la falta de publishDelayMinutes o el límite de 20 feeds devuelve 400. Un feed al que no se puede llegar devuelve 503. Una clave sin el permiso que piden el modo de publicación o los textos de IA devuelve 403.

Campos del feed

CampoDescripción
userIdEl miembro como el que publica el feed: quien lo guardó por última vez
statusACTIVE o PAUSED
pauseReasonPor qué se pausó el feed, solo mientras está PAUSED. Consulta la tabla de abajo
lastErrorEl error detrás de la pausa, cuando la causó un fallo
targets[].displayNameEl nombre de la cuenta, que rellena AdaptlyPost. Se ignora si lo envías
nextCheckAt, lastCheckedAt, lastPostedAtCuándo se comprobará el feed, cuándo se comprobó por última vez y cuándo creó su última publicación

Los demás campos llevan los ajustes de arriba.

Motivo de pausaSignificado
USERAlguien lo pausó desde la API o la app
FETCH_FAILURESFallaron 5 lecturas seguidas
CONSECUTIVE_FAILURES3 elementos seguidos no se pudieron publicar
ACCESS_LOSTSu propietario perdió el permiso que necesita su modo de publicación
SUBSCRIPTION_INACTIVEEl plan ya no cubre la publicación
CONNECTION_REMOVEDSe desconectaron todas las cuentas de destino

Corrige la causa y luego reanuda el feed.

POST /api/v1/rss-feeds/preview

Recibe url y un template opcional, lee el feed sin guardar nada y devuelve url, title, siteUrl y sus 5 items más recientes, cada uno con title, link, summary, publishedAt, imageUrl y text, el elemento con la plantilla aplicada.

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

Lista los elementos que ha visto el feed, los más nuevos primero, sin los que ya estaban en el feed cuando se añadió. limit admite de 1 a 100 y por defecto es 20. Devuelve { "items": [...] }, cada uno con id, title, link, publishedAt, createdAt, status, postId y error.

Estado del elementoSignificado
BASELINEYa estaba en el feed cuando se añadió
PROCESSINGSe está convirtiendo en una publicación
POSTEDSe convirtió en una publicación. postId la enlaza
FILTEREDLo descartaron las reglas de palabras clave
SKIPPEDSe publicó más de 14 días antes de añadir el feed
FAILEDNo se pudo crear la publicación. error dice por qué

Actualizar, pausar, reanudar, comprobar y eliminar

PATCH acepta los mismos campos que la creación, salvo url y postLatestItem, y solo cambia los que envías. Pausar, reanudar, comprobar y eliminar no llevan cuerpo. Todos menos eliminar devuelven el feed; eliminar devuelve { "deleted": true }. Un id que no existe o que pertenece a otro espacio de trabajo devuelve 404.