Desenvolvedores
API pública de publicação
Envie mídia, crie posts e publique no Facebook, Instagram, TikTok, LinkedIn, Threads e Pinterest, tudo vinculado a um produto por meio de uma chave de API do workspace. A forma recomendada de integrar é a Connect API, uma superfície pequena e simples em /api/connect/v1 que a maioria das ferramentas de agendamento pode usar como está.
Precisa de controle total, publicação explícita, verificação de execução de tarefas, webhooks assinados, lote, configurações por canal? A API avançada /api/public/v1 mais abaixo expõe tudo isso. Ambas compartilham a mesma autenticação, produtos e pipeline de publicação; use apenas essas rotas públicas versionadas (as rotas internas do app exigem autenticação de usuário do Firebase e não fazem parte do contrato público).
Facebook, Instagram e TikTok são manual-first via API. Esses canais usam manual_reminder por padrão: o Markaestro não chama a API da plataforma e move o post para a fila 'Para Publicar'. Passe deliveryMode: "direct_publish" para usar a API oficial. No TikTok, o padrão é a caixa de entrada, exceto quando settings.postMode é direct_post. LinkedIn, Threads e Pinterest publicam programaticamente por padrão.
Workspaces podem ter múltiplos produtos. Cada chave de API é vinculada a um produto no momento da criação, então as chamadas atingem esse produto automaticamente e solicitações para qualquer outro produto são rejeitadas.
Construindo um agente de IA?
Comece pelo guia do agente de IA. Ele traz esquemas de ferramentas prontos para copiar e colar, um resumo de prompt de sistema, as regras de nova tentativa e tratamento de erros que um agente precisa, e um guia rápido de quatro comandos. Seu agente também pode ler /llms.txt diretamente.
Especificação legível por máquina
Cada endpoint, formato de requisição e resposta e código de erro, em OpenAPI 3.1. Gerada a partir dos mesmos esquemas que a API valida, portanto não pode descrever uma API que não servimos.
/api/connect/v1 que a maioria das ferramentas de agendamento pode usar como está. Ela mapeia a convenção comum create-upload-url → PUT → post para o mesmo workspace, autenticação, produtos e pipeline de publicação da API completa abaixo. Defina a URL base do cliente como /api/connect e autentique com uma chave de API do workspace vinculada a um produto (escopos posts.read, posts.write, media.write)./api/connect/v1/social-accountsLista os destinos ligados de Facebook, Instagram, TikTok e LinkedIn como contas planas, cada uma etiquetada com o seu produto para que os clientes possam agrupar e distinguir. Cada canal tem o seu próprio caminho, sem distribuição entre canais.
/api/connect/v1/productsLista marcas (nome na API: products) com suas contas conectadas aninhadas, um seletor com marca em primeiro lugar.
/api/connect/v1/media/create-upload-urlRetorna uma URL PUT assinada, de uso único e curta duração, mais um id de mídia.
<upload_url>Envie os bytes brutos da imagem para a URL assinada. Não é necessária chave de API, a assinatura já autoriza.
/api/connect/v1/postsCria um rascunho para cada conta selecionada. Defina is_draft=false com scheduled_at para agendar a entrega; o TikTok usa o envio para a caixa de entrada do criador.
/api/connect/v1/postsLista posts do workspace com status, legenda e URLs de mídia simplificados.
# 1. List connected accounts
curl "$MARKAESTRO_URL/api/connect/v1/social-accounts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# 2. Request a signed upload url, then PUT the bytes
curl -X POST "$MARKAESTRO_URL/api/connect/v1/media/create-upload-url" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mime_type": "image/png", "size_bytes": 184320, "name": "slide-1.png" }'
curl -X PUT "<upload_url>" -H "Content-Type: image/png" --data-binary @slide-1.png
# 3. Create a draft post for one or more accounts
curl -X POST "$MARKAESTRO_URL/api/connect/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"caption": "New drop",
"media": ["ast_111", "ast_222"],
"social_accounts": ["prod_123#instagram:instagram:ig_123"]
}'Cada conta retornada por /social-accounts é rotulada com seu product, o nome no formato da API para uma marca (a mesma conta pode aparecer sob várias marcas), e seu id codifica productId#destinationId, passe-o de volta literalmente em social_accounts, e a solicitação se propaga em um post por conta. Cada chave é vinculada a uma marca, então ela só vê e publica nessa marca. Posts do Facebook, Instagram e TikTok são manual-first, criados como rascunhos e publicados nativamente pelo proprietário do workspace a partir da fila 'Para Publicar' do Markaestro, nunca via API da plataforma. LinkedIn, Threads e Pinterest publicam programaticamente após uma ação de publicação explícita. O status do post é um entre draft, processing, posted ou failed. Facebook, Instagram, LinkedIn, TikTok e Threads são cada um seu próprio destino dedicado, publicar em um nunca se propaga para outro. Acompanhe o estado de publicação através de GET /api/connect/v1/posts.
Avançado: API Pública completa
A superfície completa /api/public/v1, publicação explícita, execuções de tarefas assíncronas, webhooks assinados, criação em lote e configurações por canal. Use quando a Connect API não for suficiente.
/api/public/v1/productsLista as marcas da chave, além dos canais atualmente disponíveis para cada uma.
/api/public/v1/products/:id/destinationsLista os destinos de publicação dessa marca, incluindo Login do Instagram independente, Página do Facebook, Threads, Perfil/Página do LinkedIn e destinos do TikTok conectados.
/api/public/v1/media/upload-sessionsCria uma sessão de upload direto de 15 minutos com nome, tipo e tamanho exato.
<uploadSession.uploadUrl>Envia os bytes diretamente ao armazenamento com o Content-Type retornado, sem a chave de API.
/api/public/v1/media/upload-sessions/:id/finalizeVerifica tipo e tamanho e retorna o ativo de mídia; sessões concluídas podem ser repetidas com segurança.
/api/public/v1/mediaUpload multipart de compatibilidade. Retorna um id de ativo e a URL hospedada.
/api/public/v1/postsCria um rascunho no workspace. Facebook, Instagram e TikTok usam por padrão publicação manual (deliveryMode manual_reminder); passe deliveryMode direct_publish para optar por publicação via API.
/api/public/v1/postsLista posts, do mais recente ao mais antigo. Filtre com ?status=scheduled para ver o que está na fila, e ?productId= para limitar a uma marca. Uma chave vinculada a uma marca sempre é limitada à sua própria marca e pode omitir productId.
/api/public/v1/posts/:idRetorna o status atual do post, o modo de entrega e os resultados de publicação.
/api/public/v1/posts/:id/publishEnfileira uma execução de publicação assíncrona. Posts manuais entram na fila 'Para Publicar' do workspace para publicação nativa; LinkedIn, Threads e Pinterest publicam diretamente; posts do Meta com opção ativada publicam via API oficial, e posts do TikTok com opção ativada usam o envio para caixa de entrada.
/api/public/v1/posts/:idExclui o post do Markaestro. Usa o escopo posts.write existente. Retorna 400 VALIDATION_POST_IS_PUBLISHING enquanto uma execução de publicação está em andamento. Excluir um post publicado não retira a cópia ativa na plataforma.
/api/public/v1/job-runs/:idRetorna queued, running, succeeded ou failed.
/api/public/v1/webhook-endpointsRegistra um destino de webhook, até 25 endpoints ativos por workspace.
/api/public/v1/webhook-endpointsLista os destinos de webhook registrados para o escopo dessa chave de API.
/api/public/v1/webhook-endpoints/:idDesativa um destino de webhook.
curl "$MARKAESTRO_URL/api/public/v1/products" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"destinationId retornado quando um produto tiver vários destinos, como um Perfil do LinkedIn mais Páginas.curl "$MARKAESTRO_URL/api/public/v1/products/prod_123/destinations" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"# 1. Create a 15-minute upload session
UPLOAD=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileName":"launch-1.jpg","contentType":"image/jpeg","sizeBytes":184320}')
# 2. PUT bytes directly to uploadSession.uploadUrl with its returned headers
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @launch-1.jpg
# 3. Finalize; the response contains asset.id for mediaAssetIds
curl -X POST "$MARKAESTRO_URL/api/public/v1/media/upload-sessions/<session_id>/finalize" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY""deliveryMode": "direct_publish" para optar por publicação via API oficial nesse post.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-001" \
-d '{
"channel": "instagram",
"caption": "Launch day carousel",
"mediaAssetIds": ["ast_123", "ast_124"],
"productId": "prod_123",
"destinationId": "instagram:instagram:ig_123"
}'deliveryMode: "platform_inbox" (ou direct_publish), uma publicação explícita envia o rascunho para a caixa de entrada do criador no TikTok.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: post-tt-001" \
-d '{
"channel": "tiktok",
"caption": "Spring drop teaser",
"mediaAssetIds": ["ast_vid_123"],
"productId": "prod_123",
"destinationId": "tiktok:tiktok:tt_open_123"
}'post.action_required; LinkedIn, Threads, Pinterest e posts do Meta com opção ativada publicam diretamente; posts do TikTok com opção ativada enfileiram o envio para caixa de entrada.curl -X POST "$MARKAESTRO_URL/api/public/v1/posts/pst_123/publish" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY" \
-H "Idempotency-Key: publish-001"posts.read e posts.write.# The key is already bound to one brand
curl "$MARKAESTRO_URL/api/public/v1/posts?status=scheduled&limit=100" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"
# Cancel one
curl -X DELETE "$MARKAESTRO_URL/api/public/v1/posts/pst_123" \
-H "Authorization: Bearer $MARKAESTRO_API_KEY"{
"id": "evt_123",
"type": "post.action_required",
"createdAt": "2026-04-08T18:06:10.000Z",
"workspaceId": "ws_123",
"data": {
"postId": "pst_123",
"channel": "instagram",
"status": "platform_action_required",
"nextAction": "post_manually_from_reminder"
}
}Posts somente texto, imagem ou vídeo. Até 10 imagens ou 1 vídeo por post. Publicação manual por padrão; publicação direta com opção ativada.
Pelo menos uma imagem ou vídeo, até 10 itens. Vídeo único publica como Reel. Publicação manual por padrão; publicação direta com opção ativada.
TikTok
Pelo menos uma imagem ou vídeo. Até 35 imagens ou 1 vídeo. Publicação manual por defeito; publicações ativadas vão para a caixa de entrada do TikTok do criador, ou diretamente para o perfil com postMode direct_post do TikTok.
Texto, imagem única, vídeo único ou posts orgânicos de múltiplas imagens com até 20 imagens. Direcione para o Perfil conectado ou uma Página gerenciada.
X
Texto, até quatro imagens, um GIF ou um vídeo. Os controlos de resposta aplicam-se por publicação e a publicação é bloqueada quando o orçamento de custos do X do workspace se esgota.