https://post.chatclean.com.br/api com uma chave de API do workspace.
1
Liste as contas sociais
Encontre o canal em que vai publicar e veja os limites dele.
2
Confira os tipos de conteúdo
Escolha um formato e preencha as configurações que a rede exige.
3
Crie o post
Um post por canal, ou uma chamada para vários canais.
4
Agende, coloque na fila ou publique
Num horário definido, na fila do canal ou agora.
1. Liste as contas sociais
List social accounts devolve os canais conectados ao workspace. Os canais são conectados e removidos no app; a API só os lê.2. Confira os tipos de conteúdo
List content types descreve cada rede: seus tipos de conteúdo, limites de texto e de hashtags, as configurações obrigatórias e a mídia que cada formato aceita.
Quando você omite
content_type, ele é escolhido como no app: no Pinterest, um vídeo vira pinterest_video_pin e várias imagens viram pinterest_carousel; no TikTok, só imagens viram tiktok_photo; as outras redes usam o formato padrão.
Configurações obrigatórias
O post leva as configurações da rede emmeta. Um rascunho pode ser salvo sem elas; agendar ou publicar exige que estejam preenchidas:
As demais configurações são opcionais: prévias de links, rótulos de conteúdo gerado por IA, privacidade e categoria no YouTube, avisos de conteúdo no Mastodon, tópicos no Threads e outras. A lista completa por rede está em
meta em Create post (veja o aviso sobre a referência no início desta página). Chaves que o PostClean não conhece são descartadas; configurações de outra rede são aceitas, mas não são usadas.
3. Crie o post
Create post cria um post em um canal: envie emplatforms uma lista com exatamente um item, com o social_account_id do canal e, ao lado dele, o content_type e o meta. Sem status, o post é salvo como rascunho.
201), com status: "draft" e o canal em platforms: cada item traz id, platform, content_type, meta, status (o andamento na rede, começando em pending) e social_account. A mídia pode vir de uma URL, de um upload anterior ou de outro post; veja Envio de mídia.
Vários canais de uma vez
Para enviar o mesmo post a vários canais, use Create posts in batch. Ele cria um post independente por destino, todos com o mesmopost_group_id, igual a selecionar vários canais no app. Cada destino pode sobrescrever o content, a media, o content_type e o meta compartilhados. Aqui o status é obrigatório.
{ "posts": [...] }, um post por destino. Um erro de validação interrompe a chamada inteira; os erros indicam o destino, por exemplo destinations.1.meta.privacy_level.
4. Agende, coloque na fila ou publique
Ostatus decide o que acontece com o post. Envie-o na criação ou depois, com Update post:
Num horário definido
Enviestatus: scheduled com scheduled_at, um instante no futuro e antes de 2038-01-19. Informe-o em UTC (Z) ou com fuso.
Na fila do canal
Quando o canal tem horários de publicação (has_posting_schedule: true), envie queue no lugar de scheduled_at:
nextpega o primeiro horário livre do canal.toppega o primeiro horário que não esteja ocupado por um post com horário definido e passa os posts da fila que estão atrás dele para o próximo horário livre.
queue_slot com um instante tirado de List free queue slots. Isso só funciona em Create post e falha com 422 quando o horário foi ocupado nesse meio-tempo. queue não pode ser combinado com scheduled_at nem com queue_slot. Quando você envia queue_slot, é ele que define o horário; não envie scheduled_at junto.
Um post na fila mantém o horário dele. Para mudar a ordem, use Reorder queue ou Move post to queue slot; para mudar os horários, Update posting schedule (ele substitui a programação inteira: envie o timezone (obrigatório) e o posting_goal e o posting_schedule atuais para mantê-los, porque os valores omitidos são apagados). Para repetir um post agendado, veja Set post recurrence.
Outra alteração na mesma fila do canal pode estar rodando quando você chamar. Nesse caso a API responde
409; repita a requisição.Agora
Enviestatus: publishing, na criação ou num rascunho ou post agendado que já existe:
status: "publishing" enquanto a rede recebe o post. Depois ele passa a published ou failed. O lado da rede fica em platforms[].status (pending, publishing, retrying, pending_review, published, failed ou rejected); platforms[].platform_url leva ao post publicado e platforms[].error_message diz o que deu errado. Consulte Get post periodicamente ou inscreva um webhook em post.published e post.failed.
Posts criados pela API são publicados direto: as chaves de API pertencem a administradores do workspace, então não há etapa de aprovação (veja Aprovações).
Respostas em fio
Posts no X, no Bluesky e no Mastodon podem levar até 24 respostas, publicadas uma embaixo da outra, abaixo do primeiro post. Envie-as emmeta.thread_replies, cada uma como { "text", "media" }:
- Uma resposta precisa de texto ou de mídia.
- O texto de cada resposta precisa caber no limite da conta: 280 no X (25000 com posts longos), 300 no Bluesky e 500 no Mastodon. No Mastodon, o aviso de conteúdo (
spoiler_text) se repete em cada resposta e entra na contagem. - A mídia de uma resposta pertence só a ela: até 4 itens, informados por
url,idouupload_token, seguindo as regras de mídia da rede. - Em Update post,
thread_repliessubstitui a lista inteira.
Limites de conteúdo
Os limites da rede são conferidos quando um post é agendado ou publicado; rascunhos podem passar deles. O teto de 25000 caracteres vale para todo post, inclusive rascunhos.- Texto por conta. O texto precisa caber no
max_content_lengthda conta, medido no texto que a rede recebe. Uma conta do X com posts longos aceita 25000 caracteres; as outras contas do X aceitam 280. Um emoji conta como um caractere. - Hashtags no Instagram. O Instagram aceita no máximo 5 hashtags por post.
- Stories não têm legenda.
instagram_storyefacebook_storynão enviam texto, então o texto deles não é publicado nem medido, e o limite de hashtags não se aplica. - Mídia. Cada tipo de conteúdo tem suas próprias regras de quantidade, tamanho, duração e proporção de mídia, listadas por List content types e na página de cada rede, por exemplo Instagram, X ou TikTok.
Edição, exclusão e erros
- Update post altera só os campos que você envia. O canal é fixo (
social_account_idé recusado); para publicar em outro lugar, crie um novo post. Envie as configurações comocontent_typeemetano nível de cima, ou emplatforms, com oiddo item deplatformsdo post. Ometaé mesclado com as configurações salvas; envienullnuma chave para apagá-la. Configurações booleanas não podem ser apagadas: envietrueoufalse. - Posts em
publishing,publishedoufailednão podem ser editados nem excluídos: a API responde422. - Delete post remove o post só do PostClean. Ele nunca apaga nada que já foi publicado numa rede.
- Os erros de validação vêm com o campo como chave:
platforms.0.meta.board_id,platforms.0.content_type,content,mediaem Create post e Update post;destinations.N.…em Create posts in batch.