REST APIPOST

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.

POSThttps://post.adaptlypost.com/post/api/v1/social-posts/validate

Ejecuta 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.

Clave API (token Bearer)
Permiso:posts.draftRoles y permisos

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

CampoDescripción
validfalse cuando algún problema tiene severidad ERROR, en el nivel superior o en una cuenta
outcomeLo que haría crear la publicación: PUBLISH_NOW, SCHEDULED o DRAFT
scheduledAtCuándo saldría la publicación (ISO 8601). Solo se incluye cuando outcome es SCHEDULED
requiredPermissionsLos permisos que necesitaría crear la publicación, como posts.schedule
issuesProblemas que no son de una cuenta concreta, como un permiso que falta
accountsUna entrada por cuenta seleccionada, con los campos de abajo
notCheckedLo 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

CampoDescripción
platform, connectionId, accountNameLa plataforma de la cuenta, su ID de conexión y su nombre cuando se conoce
statusREADY, WARNING (se publica con una advertencia) o BLOCKED (no se publicaría)
issuesLos problemas encontrados para esta cuenta

Campos del problema

CampoDescripción
codeUn 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
severityERROR impide que salga la publicación o esa cuenta. WARNING la deja pasar
messageUna frase legible que puedes mostrar tal cual
platform, connectionIdLa 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.
Comprobar una publicación
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"]
  }'
200
{
  "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"
    }
  ]
}