API de upload para o TikTok Agende vídeos e posts de fotos

Envie e agende vídeos e carrosséis de fotos do TikTok a partir do seu código ou do seu agente de IA, com o nível de privacidade e as configurações de comentário, dueto e stitch que o TikTok exige em cada post.

URL base https://api.so-me.studio/v1 · Autenticação X-API-Key · socialMedia: TIKTOK

O que você pode publicar em TikTok

Envie um destes valores em postType. Todo post precisa de texto, e fotos ou vídeos são anexados por fileId a partir da sua biblioteca de mídia.

VIDEO

Um vídeo.

IMAGE

Uma foto, publicada como post de foto do TikTok.

MULTIPLE_IMAGES

Um carrossel de fotos deslizável.

Agende um post em TikTok

Envie a mídia e depois crie o post. Omita scheduledAt para publicar na hora.

  1. Leia as configurações do criador

    O TikTok decide quais níveis de privacidade cada criador pode usar. Leia-os primeiro e depois deixe o usuário escolher um.

    Leia as configurações do criador
    curl https://api.so-me.studio/v1/accounts/<account-uuid>/tiktok/creator-info \
      -H "X-API-Key: $SOME_API_KEY"
    
    # → { "privacyLevelOptions": ["PUBLIC_TO_EVERYONE", "SELF_ONLY", …],
    #     "commentDisabled": false, "duetDisabled": false, … }
  2. Reserve uma URL de upload

    POST /v1/media/presign-upload adiciona o arquivo à sua biblioteca de mídia e devolve um fileId e um uploadUrl pré-assinado.

    Reserve uma URL de upload
    curl -X POST https://api.so-me.studio/v1/media/presign-upload \
      -H "X-API-Key: $SOME_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"files":[{"filename":"editing-tips.mp4","mimetype":"video/mp4","size":31457280}]}'
    
    # → [{ "fileId": "…", "uploadUrl": "https://…", "fileSrc": "…", "s3Key": "…" }]
  3. Envie o arquivo

    Faça um PUT dos bytes em uploadUrl com exatamente o Content-Type que você declarou. A URL é válida por uma hora.

    Envie o arquivo
    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --upload-file ./editing-tips.mp4
  4. Crie o post

    POST /v1/posts com o fileId. A resposta é o post com status SCHEDULED, e ele é publicado em scheduledAt por uma fila que tenta de novo em caso de falha.

    Crie o post
    curl -X POST https://api.so-me.studio/v1/posts \
      -H "X-API-Key: $SOME_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "socialMedia": "TIKTOK",
        "postType": "VIDEO",
        "text": "3 truques de edição em 30 segundos #dicasdeedição",
        "fileIds": ["<fileId>"],
        "scheduledAt": "2026-11-05T18:00:00Z",
        "tiktok": {
          "privacyLevel": "PUBLIC_TO_EVERYONE",
          "allowComments": true,
          "allowDuet": false,
          "allowStitch": true
        }
      }'

accountId é opcional quando o workspace tem uma conta de TikTok. Caso contrário, passe um id de GET /v1/accounts.

Os arquivos anexados com fileIds são verificados contra os limites de TikTok abaixo antes de qualquer coisa entrar na fila. Um arquivo que viola uma regra retorna 400 com um relatório por arquivo.

Opções de TikTok

Os campos que mudam a forma como um post é publicado em TikTok.

CampoO que faz
tiktok.privacyLevelObrigatório. PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR ou SELF_ONLY, limitado aos níveis listados nas informações do criador. Um post sem ele retorna 400 TIKTOK_PRIVACY_LEVEL_REQUIRED.
tiktok.allowCommentsSe os espectadores podem comentar; true por padrão. É desativado, com um aviso, quando o criador desativou os comentários.
tiktok.allowDuet · tiktok.allowStitchSe os espectadores podem fazer dueto ou stitch do vídeo; true por padrão. Somente para vídeo.
tiktok.brandContentToggle · tiktok.brandOrganicToggleIndicadores de divulgação: brandContentToggle marca uma parceria paga, brandOrganicToggle marca a promoção do seu próprio negócio. Ambos são false por padrão.
GET /v1/accounts/:id/tiktok/creator-infoRetorna os níveis de privacidade permitidos, as configurações de comentário, dueto e stitch do criador e o vídeo mais longo que ele pode publicar. Fica em cache por dez minutos.

Limites de mídia de TikTok

O Social media studio verifica cada arquivo contra estes limites antes de publicar. São os limites que configuramos, não uma promessa de TikTok: GET /v1/media/rules devolve a tabela atual, e POST /v1/media/validate verifica um arquivo sem publicá-lo.

Tipo de post VIDEO

Formatos
MP4, MOV, WebM
Tamanho máximo do arquivo
350 MB
Arquivos por post
1
Duração máxima
10 min
Dimensões
360–4096 px
Codecs de vídeo
H.264, H.265, VP8, VP9
Taxa de quadros
≤ 60 fps

Tipo de post IMAGE

Formatos
JPEG, PNG, WebP
Tamanho máximo do arquivo
20 MB
Arquivos por post
1
Dimensões
≥ 360 px

Tipo de post MULTIPLE_IMAGES

Formatos
JPEG, PNG, WebP
Tamanho máximo do arquivo
20 MB cada
Arquivos por post
2–20 por requisição
Dimensões
≥ 360 px

Saiba quando está no ar

A publicação é assíncrona. Assine post.published e post.failed, ou consulte GET /v1/posts/:id até que postStatus seja POSTED ou FAILED.

Assine uma vez
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
  -H "X-API-Key: $SOME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/social",
    "categories": ["post"],
    "events": ["post.published", "post.failed"]
  }'

# The response includes the secret that signs every delivery.
Como é cada entrega
POST /hooks/social
X-Webhook-Event: post.published
X-Webhook-Signature: <hex HMAC-SHA256 of the raw body>

{
  "event": "post.published",
  "category": "post",
  "timestamp": "2026-11-03T15:00:07.412Z",
  "data": { "postId": "…", "platform": "TIKTOK" }
}

Toda entrega é assinada com HMAC-SHA256 em X-Webhook-Signature. post.failed é disparado após a última nova tentativa; corrija a causa e chame POST /v1/posts/:id/retry. Um primeiro comentário é reportado por conta própria, com post.first_comment_posted ou post.first_comment_failed.

Criando um agente de IA?

A mesma chave de API aciona um servidor MCP com mais de 200 ferramentas e uma CLI, para que um agente possa publicar em TikTok sem chamadas HTTP escritas à mão.

Servidor MCP

Adicione o servidor ao Claude, ao Cursor ou a qualquer cliente MCP com a sua chave de API. OAuth também funciona. Para TikTok, o agente chama estas ferramentas com os mesmos campos da requisição REST:

  • get_tiktok_creator_info
  • presign_media_upload
  • create_post
mcp.json
{
  "mcpServers": {
    "so-me-studio": {
      "url": "https://api.so-me.studio/mcp",
      "headers": { "X-API-Key": "sk_live_…" }
    }
  }
}

CLI

Instale com npm i -g @social-media-scheduler/cli. Ela envia os arquivos locais por você e imprime JSON, então um script ou um job de CI pode agendar um post em TikTok com um único comando.

so-me
so-me posts:create --platform TIKTOK --post-type VIDEO \
  -m ./editing-tips.mp4 \
  -c "3 truques de edição em 30 segundos #dicasdeedição" \
  -s 2026-11-05T18:00:00Z \
  --tiktok-privacy PUBLIC_TO_EVERYONE --no-tiktok-allow-duet

O acesso à API, à CLI e ao MCP está incluído em todos os planos pagos: Lite, Creator, Standard, Advanced e Lifetime. Veja os planos e limites

Continue lendo

Guias de outras plataformas

A Content Posting API do TikTok recusa um post sem ele, e só os níveis permitidos para aquele criador são válidos. Leia-os na rota de informações do criador, deixe o usuário escolher e envie tiktok.privacyLevel.

Sim. Envie postType MULTIPLE_IMAGES com duas ou mais fotos, ou IMAGE para uma só. Fotos maiores que 1080p são redimensionadas e salvas como JPEG na hora da publicação, então originais grandes não são problema.

Depois que o TikTok processa o post e o torna público. O TikTok publica de forma assíncrona, então o post primeiro traz o id de publicação do TikTok e o link final é preenchido depois.

Não. Você conecta a conta de TikTok uma única vez no painel do Social media studio, pelo login de TikTok. Os tokens ficam armazenados criptografados e são renovados do nosso lado, e o seu código envia apenas a sua chave de API do Social media studio no cabeçalho X-API-Key.

Não. Ele retorna assim que o post entra na fila. A publicação roda em um worker que tenta de novo em caso de falha, então escute post.published e post.failed, ou consulte GET /v1/posts/:id.

A API REST, a CLI e o servidor MCP estão incluídos em todos os planos pagos: Lite, Creator, Standard, Advanced e Lifetime. Lite, Creator, Standard e Advanced começam com um teste de 7 dias (cartão obrigatório), e o Lifetime é um pagamento único.

Agende uma vez.
Publique em todo lugar.

Pare de malabarismo com abas, escreva, adapte e publique em 20 plataformas a partir de um único calendário.

API de upload do TikTok: agende vídeos e posts de fotos