Solução prática - Como criar publicação via API
Publique ou agende uma publicação em várias plataformas com uma única chamada de API, incluindo conteúdo e mídia.
https://post.adaptlypost.com/post/api/v1/social-postsCrie uma nova publicacao nas redes sociais. As publicacoes podem ser publicadas imediatamente, agendadas para mais tarde ou guardadas como rascunho.
posts.draft basta quando saveAsDraft é true. Um scheduledAt futuro exige posts.schedule. Sem scheduledAt, ou com um horário já passado, a publicação sai agora e exige posts.publish. Uma chave de Colaborador, portanto, só consegue salvar rascunhos.
Parametros do Corpo
| Parametro | Tipo | Descricao |
|---|---|---|
platformsOBRIGATORIO | PlatformType[] | Plataformas alvo (ex.: TWITTER, LINKEDIN, INSTAGRAM). Cada uma também precisa dos seus IDs de conexão. TELEGRAM não pode ser usado pela API: publicações no Telegram só podem ser criadas no app |
contentTypeOBRIGATORIO | ContentType | TEXT, IMAGE, VIDEO, CAROUSEL ou DOCUMENT. DOCUMENT é só para o LinkedIn: exatamente um ficheiro PDF, PPT, PPTX, DOC ou DOCX em mediaUrls, apresentado como documento deslizável |
text | string | Conteudo de texto da publicacao. No LinkedIn, mencione uma página de empresa com @[Nome da página](urn:li:organization:<id>), escrevendo o nome exatamente como o LinkedIn o mostra. O LinkedIn só permite mencionar páginas de empresa, não pessoas |
platformTexts | PlatformText[] | Textos personalizados por plataforma |
mediaUrls | string[] | URLs dos ficheiros de media enviados |
mediaAltTexts | string[] | Texto alternativo de cada imagem, na mesma ordem que mediaUrls. Máximo de 1000 caracteres cada; use uma string vazia para ignorar uma imagem. Enviado para X, Bluesky, Mastodon, LinkedIn, Facebook, Instagram e Threads. O Pinterest usa o primeiro, cortado a 500 caracteres. TikTok, YouTube, o Perfil da Empresa no Google e vídeos ignoram-no. |
thumbnailUrl | string | URL da miniatura para publicacoes de video |
thumbnailTimestampMs | number | Quadro do vídeo a usar como miniatura, em milissegundos desde o início |
platformThumbnails | PlatformThumbnail[] | Uma miniatura diferente para uma plataforma de uma publicação de vídeo, como { platform, thumbnailUrl?, thumbnailTimestampMs? }. YOUTUBE, FACEBOOK e LINKEDIN aceitam uma imagem, INSTAGRAM e PINTEREST uma imagem ou um quadro, TIKTOK só um quadro. Plataformas sem entrada usam thumbnailUrl e thumbnailTimestampMs |
platformAspectRatios | PlatformAspectRatio[] | Ajusta todas as imagens de uma publicação IMAGE ou CAROUSEL a um formato em uma plataforma, como { platform, aspectRatio, fit? }. Uma entrada por plataforma. aspectRatio é SQUARE (1:1), PORTRAIT (4:5), VERTICAL (9:16) ou LANDSCAPE (1.91:1): INSTAGRAM aceita SQUARE, PORTRAIT ou LANDSCAPE, TIKTOK os quatro. fit é CROP (padrão, corta a partir do centro) ou PAD (mantém a imagem inteira e preenche o resto com uma cópia desfocada). Outras plataformas, publicações de vídeo, stories do Instagram e uma segunda entrada para a mesma plataforma retornam um 400. Plataformas sem entrada mantêm as imagens como você enviou |
firstComments | PlatformFirstComment[] | Um comentário publicado abaixo da publicação pela mesma conta, como { platform, text }. Uma entrada por plataforma. LINKEDIN aceita até 1250 caracteres, TWITTER 280, THREADS 500, BLUESKY 300, MASTODON 500 e YOUTUBE 10000 (não em vídeos privados ou feitos para crianças). Outras plataformas retornam um 400 |
scheduledAt | string | Data em ISO 8601 para agendamento. Omita para publicar imediatamente. |
timezoneOBRIGATORIO | string | Fuso horario IANA (ex.: America/New_York) |
saveAsDraft | boolean | Guardar como rascunho em vez de publicar |
recurrence | Recurrence | Repete a publicação em uma agenda. Exige um scheduledAt futuro. Veja Publicações recorrentes abaixo |
twitterConnectionIds | string[] | IDs de ligacao da conta Twitter |
twitterKeepLinks | boolean | Mantém clicáveis os links do texto do X. Por padrão, cada link no texto do X é quebrado (example.com vira example. com), porque o X cobra mais de 10 vezes mais por um post com link. Só contas com lifetime deal da AppSumo podem ativar isso: um link mantido custa 20 créditos em vez de 2, também num primeiro comentário no X, e sem créditos suficientes o post no X falha. true retorna 400 em qualquer outro plano. Ignorado quando o texto do X não tem link |
linkedinConnectionIds | string[] | IDs de ligacao da conta LinkedIn |
instagramConnectionIds | string[] | IDs de ligacao da conta Instagram |
tiktokConnectionIds | string[] | IDs de ligacao da conta TikTok |
youtubeConnectionIds | string[] | IDs de ligacao do canal YouTube |
pinterestConnectionIds | string[] | IDs de conexão da conta do Pinterest |
blueskyConnectionIds | string[] | IDs de conexão da conta do Bluesky |
mastodonConnectionIds | string[] | IDs de conexão da conta do Mastodon |
googleBusinessConnectionIds | string[] | IDs de conexão dos locais do Perfil da Empresa no Google |
googleBusinessConfigs | GoogleBusinessConfig[] | Configurações de post do Perfil da Empresa no Google por local: tipo de post (novidade, evento ou oferta), botão, datas do evento e detalhes da oferta. Consulte Configuracoes de Plataforma para o esquema |
threadsConnectionIds | string[] | IDs de conexão da conta do Threads |
pageIds | string[] | Páginas do Facebook onde publicar. Aceita o id da conta ou o pageId de /social-accounts |
pinterestConfigs | PinterestConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
tiktokConfigs | TikTokConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
instagramConfigs | InstagramConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
facebookConfigs | FacebookConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
youtubeConfigs | YouTubeConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
linkedinConfigs | LinkedInConfig[] | Configurações desta plataforma, um objeto por conta, cada um com o connectionId a que se aplica (pageId no Facebook). Consulte Configuracoes de Plataforma |
Texto Especifico por Plataforma
Utilize platformTexts para personalizar o conteudo por plataforma enquanto partilha a mesma publicacao.
Uma conta por plataforma
Apenas uma conta por plataforma e permitida por publicacao. Por exemplo, nao pode incluir dois IDs de conexao do Twitter na mesma solicitacao. Esta restricao e aplicada para cumprir os Termos de Servico das plataformas. Violar esta regra retornara um erro 400.Publicações recorrentes
Adicione um objeto recurrence para repetir a publicação. A publicação em scheduledAt é a primeira da série e define o horário, no timezone que você enviar. Só a próxima publicação da série existe. O AdaptlyPost a cria cerca de 24 horas antes de ela sair.
Objeto recurrence
| Parametro | Tipo | Descricao |
|---|---|---|
frequencyOBRIGATORIO | RecurrenceFrequency | DAILY, WEEKLY, MONTHLY ou YEARLY. YEARLY publica todo ano na mesma data; uma série iniciada em 29 de fevereiro publica em 28 de fevereiro nos outros anos |
interval | number | Repetir a cada N dias, semanas, meses ou anos (1-30, padrão: 1) |
weekdays | Weekday[] | Só WEEKLY. Os dias de publicação, de MONDAY a SUNDAY. O dia da semana de scheduledAt sempre é incluído |
endsOn | string | Último dia em que uma publicação pode sair, no formato YYYY-MM-DD. Deve ser no dia da primeira publicação ou depois. Não pode ser combinado com maxOccurrences |
maxOccurrences | number | Número total de publicações da série (2-365). Não pode ser combinado com endsOn. Sem nenhum dos dois, a série se repete até você pausá-la ou excluí-la |
Regras das publicações recorrentes
Uma publicação recorrente não pode usar saveAsDraft: true nem incluir uma conta do TikTok. Qualquer um dos dois retorna 400. Datas perdidas enquanto a série está pausada são puladas, nunca publicadas com atraso. X e LinkedIn rejeitam texto igual ao de uma publicação anterior, então adicione spintax como {Hi|Hello} para que cada publicação seja diferente.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
}