Verificar uma Publicação Antes de Criá-la
Faça um teste de uma publicação: envie o mesmo corpo de Criar Publicação e receba cada problema que a impediria, por conta, sem criar nada.
https://post.adaptlypost.com/post/api/v1/social-posts/validateExecuta todas as verificações de Criar Publicação sem criar nada. Envie o mesmo corpo e veja o que a publicação faria e cada problema que a impediria.
posts.draft basta para executar a verificação, faça a publicação o que fizer. requiredPermissions na resposta indica o que criar a publicação exigiria, e uma chave sem uma delas recebe um problema PERMISSION_DENIED.
Corpo da requisição
O mesmo corpo de Criar Publicação, campo a campo. Nada é criado, nenhuma mídia é enviada e nada é salvo. Um corpo bem formado sempre responde 200 com um relatório, mesmo quando a publicação seria recusada. Só um corpo malformado responde 400.
Problemas encontrados antes de publicar
Além de todas as verificações de Criar Publicação, o relatório cobre problemas que de outra forma só apareceriam na hora de publicar: os limites de criador do TikTok, o limite diário de envios do YouTube para canais sem envio reserva, o acesso expirado ao Instagram e ao Threads, servidores Mastodon que aceitam menos anexos, pastas do Pinterest que não existem e os créditos do X nos planos vitalícios.Campos da resposta
| Campo | Descrição |
|---|---|
valid | false quando algum problema tem severidade ERROR, no nível superior ou em uma conta |
outcome | O que criar a publicação faria: PUBLISH_NOW, SCHEDULED ou DRAFT |
scheduledAt | Quando a publicação sairia (ISO 8601). Só aparece quando outcome é SCHEDULED |
requiredPermissions | As permissões que criar a publicação exigiria, como posts.schedule |
issues | Problemas que não são de uma conta específica, como uma permissão que falta |
accounts | Uma entrada por conta selecionada, com os campos abaixo |
notChecked | O que só a plataforma pode decidir na hora de publicar, como { code, message }. code é PLATFORM_PROCESSING, DUPLICATE_CONTENT, PLATFORM_RATE_LIMITS, LIVE_ACCOUNT_ACCESS ou VIDEO_DURATION |
Campos da conta
| Campo | Descrição |
|---|---|
platform, connectionId, accountName | A plataforma da conta, o ID de conexão e o nome, quando conhecido |
status | READY, WARNING (sai com uma ressalva) ou BLOCKED (não sairia) |
issues | Os problemas encontrados para esta conta |
Campos do problema
| Campo | Descrição |
|---|---|
code | Um motivo estável como TEXT_TOO_LONG, ACCOUNT_DISCONNECTED, TIKTOK_POSTING_BLOCKED ou YOUTUBE_UPLOAD_QUOTA_EXHAUSTED. Novos códigos podem surgir, então mostre message para um código que você não conhece |
severity | ERROR impede a publicação, ou aquela conta, de sair. WARNING deixa passar |
message | Uma frase legível que você pode mostrar como está |
platform, connectionId | A plataforma e a conta a que o problema se refere, quando se refere a uma |
valid: true não é uma garantia
Uma plataforma ainda pode recusar uma mídia ao processá-la, recusar uma publicação duplicada ou atingir um limite de frequência na hora de publicar. notChecked lista esses casos. Você nunca precisa executar a verificação antes de Criar Publicação, que refaz as mesmas verificações.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"
}
]
}