Comprobar una publicación antes de crearla
Haz una prueba de una publicación: envía el mismo cuerpo que en Crear publicación y recibe cada problema que la detendría, por cuenta, sin crear nada.
https://post.adaptlypost.com/post/api/v1/social-posts/validateEjecuta todas las comprobaciones de Crear publicación sin crear nada. Envía el mismo cuerpo y lee qué haría la publicación y cada problema que la detendría.
Basta con posts.draft para ejecutar la comprobación, haga lo que haga la publicación. requiredPermissions en la respuesta indica lo que necesitaría crear la publicación, y una clave a la que le falte uno recibe un problema PERMISSION_DENIED.
Cuerpo de la solicitud
El mismo cuerpo que Crear publicación, campo por campo. No se crea nada, no se sube ningún archivo y no se guarda nada. Un cuerpo bien formado siempre responde 200 con un informe, aunque la publicación fuera a rechazarse. Solo un cuerpo mal formado responde 400.
Problemas detectados antes de publicar
Además de todas las comprobaciones de Crear publicación, el informe cubre problemas que de otro modo solo aparecerían al publicar: los límites de creador de TikTok, el límite diario de subidas de YouTube para canales sin subida de respaldo, el acceso caducado de Instagram y Threads, los servidores de Mastodon que aceptan menos adjuntos, los tableros de Pinterest que no existen y los créditos de X en los planes de por vida.Campos de la respuesta
| Campo | Descripción |
|---|---|
valid | false cuando algún problema tiene severidad ERROR, en el nivel superior o en una cuenta |
outcome | Lo que haría crear la publicación: PUBLISH_NOW, SCHEDULED o DRAFT |
scheduledAt | Cuándo saldría la publicación (ISO 8601). Solo se incluye cuando outcome es SCHEDULED |
requiredPermissions | Los permisos que necesitaría crear la publicación, como posts.schedule |
issues | Problemas que no son de una cuenta concreta, como un permiso que falta |
accounts | Una entrada por cuenta seleccionada, con los campos de abajo |
notChecked | Lo que solo la plataforma puede decidir al publicar, como { code, message }. code es PLATFORM_PROCESSING, DUPLICATE_CONTENT, PLATFORM_RATE_LIMITS, LIVE_ACCOUNT_ACCESS o VIDEO_DURATION |
Campos de la cuenta
| Campo | Descripción |
|---|---|
platform, connectionId, accountName | La plataforma de la cuenta, su ID de conexión y su nombre cuando se conoce |
status | READY, WARNING (se publica con una advertencia) o BLOCKED (no se publicaría) |
issues | Los problemas encontrados para esta cuenta |
Campos del problema
| Campo | Descripción |
|---|---|
code | Un motivo estable como TEXT_TOO_LONG, ACCOUNT_DISCONNECTED, TIKTOK_POSTING_BLOCKED o YOUTUBE_UPLOAD_QUOTA_EXHAUSTED. Pueden añadirse códigos nuevos, así que muestra message si no conoces el código |
severity | ERROR impide que salga la publicación o esa cuenta. WARNING la deja pasar |
message | Una frase legible que puedes mostrar tal cual |
platform, connectionId | La plataforma y la cuenta a las que se refiere el problema, cuando se refiere a una |
valid: true no es una garantía
Una plataforma todavía puede rechazar un archivo al procesarlo, rechazar una publicación duplicada o alcanzar un límite de frecuencia al publicar. notChecked enumera estos casos. Nunca necesitas ejecutar la comprobación antes de Crear publicación, que vuelve a hacer las mismas comprobaciones.curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/social-posts/validate \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"platforms": ["TWITTER", "TIKTOK"],
"contentType": "VIDEO",
"text": "Behind the scenes of our launch",
"mediaUrls": ["https://cdn.adaptlypost.com/uploads/launch.mp4"],
"scheduledAt": "2026-11-03T15:00:00Z",
"timezone": "America/New_York",
"twitterConnectionIds": ["conn_abc123"],
"tiktokConnectionIds": ["conn_tt789"]
}'{
"valid": false,
"outcome": "SCHEDULED",
"scheduledAt": "2026-11-03T15:00:00.000Z",
"requiredPermissions": ["posts.schedule"],
"issues": [],
"accounts": [
{
"platform": "TWITTER",
"connectionId": "conn_abc123",
"accountName": "@yourhandle",
"status": "READY",
"issues": []
},
{
"platform": "TIKTOK",
"connectionId": "conn_tt789",
"accountName": "yourbrand",
"status": "BLOCKED",
"issues": [
{
"code": "TIKTOK_VIDEO_TOO_LONG",
"severity": "ERROR",
"message": "Video duration (185s) exceeds your TikTok account limit of 180 seconds",
"platform": "TIKTOK",
"connectionId": "conn_tt789"
}
]
}
],
"notChecked": [
{
"code": "PLATFORM_PROCESSING",
"message": "The platform processes media after upload and can still reject it then"
}
]
}