Resumen claro - Crear publicación con la API
Publica o programa una publicación en múltiples plataformas con una sola llamada a la API, incluyendo contenido y medios.
https://post.adaptlypost.com/post/api/v1/social-postsCree una nueva publicacion en redes sociales. Las publicaciones pueden publicarse inmediatamente, programarse para mas tarde o guardarse como borradores.
posts.draft basta cuando saveAsDraft es true. Un scheduledAt futuro necesita posts.schedule. Sin scheduledAt, o con una hora ya pasada, se publica ahora y hace falta posts.publish. Por tanto, una clave de Colaborador solo puede guardar borradores.
Parametros del cuerpo
| Parametro | Tipo | Descripcion |
|---|---|---|
platformsOBLIGATORIO | PlatformType[] | Plataformas objetivo (ej. TWITTER, LINKEDIN, INSTAGRAM). Cada una necesita también sus IDs de conexión. TELEGRAM no se puede usar desde la API: las publicaciones de Telegram solo se crean en la app |
contentTypeOBLIGATORIO | ContentType | TEXT, IMAGE, VIDEO, CAROUSEL o DOCUMENT. DOCUMENT es solo para LinkedIn: exactamente un archivo PDF, PPT, PPTX, DOC o DOCX en mediaUrls, mostrado como documento deslizable |
text | string | Contenido de texto de la publicacion. En LinkedIn, menciona una página de empresa con @[Nombre de la página](urn:li:organization:<id>), escribiendo el nombre exactamente como lo muestra LinkedIn. LinkedIn solo permite mencionar páginas de empresa, no personas |
platformTexts | PlatformText[] | Textos personalizados por plataforma |
mediaUrls | string[] | URLs de archivos multimedia subidos |
mediaAltTexts | string[] | Texto alternativo de cada imagen, en el mismo orden que mediaUrls. Máximo 1000 caracteres cada uno; usa una cadena vacía para omitir una imagen. Se envía a X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram y Threads. Pinterest usa el primero, recortado a 500 caracteres. TikTok, YouTube, el Perfil de Empresa de Google y los vídeos lo ignoran. |
thumbnailUrl | string | URL de miniatura para publicaciones de video |
thumbnailTimestampMs | number | Fotograma del video que se usa como miniatura, en milisegundos desde el inicio |
platformThumbnails | PlatformThumbnail[] | Una miniatura distinta para una plataforma de una publicación de video, como { platform, thumbnailUrl?, thumbnailTimestampMs? }. YOUTUBE, FACEBOOK y LINKEDIN aceptan una imagen, INSTAGRAM y PINTEREST una imagen o un fotograma, TIKTOK solo un fotograma. Las plataformas sin entrada usan thumbnailUrl y thumbnailTimestampMs |
platformAspectRatios | PlatformAspectRatio[] | Ajusta todas las imágenes de una publicación IMAGE o CAROUSEL a un formato en una plataforma, como { platform, aspectRatio, fit? }. Una entrada por plataforma. aspectRatio es SQUARE (1:1), PORTRAIT (4:5), VERTICAL (9:16) o LANDSCAPE (1.91:1): INSTAGRAM acepta SQUARE, PORTRAIT o LANDSCAPE, TIKTOK los cuatro. fit es CROP (por defecto, recorta desde el centro) o PAD (conserva la imagen entera y rellena el resto con una copia desenfocada). Otras plataformas, publicaciones de video, historias de Instagram y una segunda entrada para una plataforma devuelven un 400. Las plataformas sin entrada mantienen las imágenes tal como las subiste |
firstComments | PlatformFirstComment[] | Un comentario que se publica bajo la publicación ya publicada desde la misma cuenta, como { platform, text }. Una entrada por plataforma. LINKEDIN acepta hasta 1250 caracteres, TWITTER 280, THREADS 500, BLUESKY 300, MASTODON 500 y YOUTUBE 10000 (no en videos privados ni creados para niños). Otras plataformas devuelven un 400 |
scheduledAt | string | Fecha en formato ISO 8601 para programacion. Omita para publicar inmediatamente. |
timezoneOBLIGATORIO | string | Zona horaria IANA (ej. America/New_York) |
saveAsDraft | boolean | Guardar como borrador en lugar de publicar |
recurrence | Recurrence | Repite la publicación según un calendario. Necesita un scheduledAt futuro. Consulta Publicaciones recurrentes más abajo |
twitterConnectionIds | string[] | ID de conexion de cuentas de Twitter |
twitterKeepLinks | boolean | Mantiene clicables los enlaces del texto de X. Por defecto se rompe cada enlace del texto de X (example.com pasa a example. com), porque X cobra más de 10 veces más por un post con enlace. Solo las cuentas con lifetime deal de AppSumo pueden activarlo: un enlace mantenido cuesta 20 créditos en vez de 2, también en un primer comentario de X, y sin créditos suficientes el post de X falla. true devuelve un 400 en cualquier otro plan. Se ignora cuando el texto de X no tiene enlaces |
linkedinConnectionIds | string[] | ID de conexion de cuentas de LinkedIn |
instagramConnectionIds | string[] | ID de conexion de cuentas de Instagram |
tiktokConnectionIds | string[] | ID de conexion de cuentas de TikTok |
youtubeConnectionIds | string[] | ID de conexion de canales de YouTube |
pinterestConnectionIds | string[] | IDs de conexión de la cuenta de Pinterest |
blueskyConnectionIds | string[] | IDs de conexión de la cuenta de Bluesky |
mastodonConnectionIds | string[] | IDs de conexión de la cuenta de Mastodon |
googleBusinessConnectionIds | string[] | IDs de conexión de las ubicaciones del Perfil de Empresa de Google |
googleBusinessConfigs | GoogleBusinessConfig[] | Ajustes de publicación del Perfil de Empresa de Google por ubicación: tipo de publicación (novedad, evento u oferta), botón, fechas del evento y detalles de la oferta. Consulte Configuraciones de plataforma para el esquema |
threadsConnectionIds | string[] | IDs de conexión de la cuenta de Threads |
pageIds | string[] | Páginas de Facebook en las que publicar. Se acepta el id de la cuenta o el pageId de /social-accounts |
pinterestConfigs | PinterestConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
tiktokConfigs | TikTokConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
instagramConfigs | InstagramConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
facebookConfigs | FacebookConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
youtubeConfigs | YouTubeConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
linkedinConfigs | LinkedInConfig[] | Configuración de esta plataforma, un objeto por cuenta, cada uno con el connectionId al que se aplica (pageId en Facebook). Consulte Configuraciones de plataforma |
Texto especifico por plataforma
Utilice platformTexts para personalizar el contenido por plataforma mientras comparte la misma publicacion.
Una cuenta por plataforma
Solo se permite una cuenta por plataforma por publicacion. Por ejemplo, no puede incluir dos IDs de conexion de Twitter en la misma solicitud. Esta restriccion se aplica para cumplir con los Terminos de Servicio de las plataformas. Violar esta regla devolvera un error 400.Publicaciones recurrentes
Añade un objeto recurrence para repetir la publicación. La publicación en scheduledAt es la primera de la serie y fija la hora del día, en la timezone que envíes. Solo existe la siguiente publicación de la serie. AdaptlyPost la crea unas 24 horas antes de que salga.
Objeto recurrence
| Parametro | Tipo | Descripcion |
|---|---|---|
frequencyOBLIGATORIO | RecurrenceFrequency | DAILY, WEEKLY, MONTHLY o YEARLY. YEARLY publica cada año en la misma fecha; una serie que empieza el 29 de febrero publica el 28 de febrero en los demás años |
interval | number | Repetir cada N días, semanas, meses o años (1-30, predeterminado: 1) |
weekdays | Weekday[] | Solo WEEKLY. Los días en que se publica, de MONDAY a SUNDAY. El día de la semana de scheduledAt siempre se incluye |
endsOn | string | Último día en que puede salir una publicación, en formato YYYY-MM-DD. Debe ser el día de la primera publicación o posterior. No se puede combinar con maxOccurrences |
maxOccurrences | number | Número total de publicaciones de la serie (2-365). No se puede combinar con endsOn. Sin ninguno de los dos, se repite hasta que pauses o elimines la serie |
Reglas de las publicaciones recurrentes
Una publicación recurrente no puede usar saveAsDraft: true ni incluir una cuenta de TikTok. Cualquiera de los dos devuelve 400. Las fechas que pasan mientras la serie está en pausa se omiten y nunca se publican tarde. X y LinkedIn rechazan un texto igual al de una publicación anterior, así que añade spintax como {Hi|Hello} para que cada publicación sea distinta.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
}