API de subida de TikTok Programa vídeos y posts de fotos

Sube y programa vídeos y carruseles de fotos de TikTok desde tu código o tu agente de IA, con el nivel de privacidad y los ajustes de comentarios, dúo y stitch que TikTok exige en cada post.

URL base https://api.so-me.studio/v1 · Autenticación X-API-Key · socialMedia: TIKTOK

Qué puedes publicar en TikTok

Envía uno de estos valores como postType. Todo post necesita texto, y las fotos o los vídeos se adjuntan por fileId desde tu biblioteca de medios.

VIDEO

Un vídeo.

IMAGE

Una foto, publicada como post de fotos de TikTok.

MULTIPLE_IMAGES

Un carrusel de fotos deslizable.

Programa un post en TikTok

Sube los medios y luego crea el post. Omite scheduledAt para publicar de inmediato.

  1. Lee los ajustes del creador

    TikTok decide qué niveles de privacidad puede usar cada creador. Léelos primero y luego deja que el usuario elija uno.

    Lee los ajustes del creador
    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. Reserva una URL de subida

    POST /v1/media/presign-upload añade el archivo a tu biblioteca de medios y devuelve un fileId y una uploadUrl prefirmada.

    Reserva una URL de subida
    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. Sube el archivo

    Haz un PUT de los bytes a uploadUrl con exactamente el Content-Type que declaraste. La URL es válida durante una hora.

    Sube el archivo
    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --upload-file ./editing-tips.mp4
  4. Crea el post

    POST /v1/posts con el fileId. La respuesta es el post con estado SCHEDULED, y se publica a la hora indicada en scheduledAt a través de una cola que reintenta si hay un fallo.

    Crea el 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 trucos de edición en 30 segundos #consejosdeedicion",
        "fileIds": ["<fileId>"],
        "scheduledAt": "2026-11-05T18:00:00Z",
        "tiktok": {
          "privacyLevel": "PUBLIC_TO_EVERYONE",
          "allowComments": true,
          "allowDuet": false,
          "allowStitch": true
        }
      }'

accountId es opcional cuando el espacio de trabajo tiene una sola cuenta de TikTok. En caso contrario, pasa un id de GET /v1/accounts.

Los archivos adjuntos con fileIds se comprueban contra los límites de TikTok indicados abajo antes de poner nada en cola. Si un archivo incumple una regla, se devuelve un 400 con un informe por archivo.

Opciones de TikTok

Los campos que cambian cómo se publica un post en TikTok.

CampoQué hace
tiktok.privacyLevelObligatorio. PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR o SELF_ONLY, limitado a los niveles que indica la información del creador. Un post sin él devuelve 400 TIKTOK_PRIVACY_LEVEL_REQUIRED.
tiktok.allowCommentsSi los espectadores pueden comentar; true por defecto. Se desactiva, con un aviso, cuando el creador ha desactivado los comentarios.
tiktok.allowDuet · tiktok.allowStitchSi los espectadores pueden hacer dúo o stitch con el vídeo; true por defecto. Solo para vídeo.
tiktok.brandContentToggle · tiktok.brandOrganicToggleIndicadores de divulgación: brandContentToggle marca una colaboración de pago y brandOrganicToggle marca la promoción de tu propio negocio. Ambos son false por defecto.
GET /v1/accounts/:id/tiktok/creator-infoDevuelve los niveles de privacidad permitidos, los ajustes de comentarios, dúo y stitch del creador y el vídeo más largo que puede publicar. Se guarda en caché durante diez minutos.

Límites de medios de TikTok

Social media studio comprueba cada archivo contra estos límites antes de publicar. Son los límites que tenemos configurados, no una promesa de TikTok: GET /v1/media/rules devuelve la tabla vigente y POST /v1/media/validate comprueba un archivo sin publicarlo.

Tipo de post VIDEO

Formatos
MP4, MOV, WebM
Tamaño máximo del archivo
350 MB
Archivos por post
1
Duración máxima
10 min
Dimensiones
360–4096 px
Códecs de vídeo
H.264, H.265, VP8, VP9
Velocidad de fotogramas
≤ 60 fps

Tipo de post IMAGE

Formatos
JPEG, PNG, WebP
Tamaño máximo del archivo
20 MB
Archivos por post
1
Dimensiones
≥ 360 px

Tipo de post MULTIPLE_IMAGES

Formatos
JPEG, PNG, WebP
Tamaño máximo del archivo
20 MB cada uno
Archivos por post
2–20 por solicitud
Dimensiones
≥ 360 px

Entérate cuando se publique

La publicación es asíncrona. Suscríbete a post.published y post.failed, o consulta GET /v1/posts/:id de forma periódica hasta que postStatus sea POSTED o FAILED.

Suscríbete una 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.
Cómo es 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" }
}

Cada entrega va firmada con HMAC-SHA256 en X-Webhook-Signature. post.failed se dispara tras el último reintento; corrige la causa y llama a POST /v1/posts/:id/retry. Un primer comentario informa por su cuenta con post.first_comment_posted o post.first_comment_failed.

¿Estás creando un agente de IA?

La misma clave de API sirve para un servidor MCP con más de 200 herramientas y para una CLI, así que un agente puede publicar en TikTok sin llamadas HTTP escritas a mano.

Servidor MCP

Añade el servidor a Claude, Cursor o cualquier cliente MCP con tu clave de API. OAuth también funciona. Para TikTok, el agente llama a estas herramientas con los mismos campos que la petición 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

Instálala con npm i -g @social-media-scheduler/cli. Sube los archivos locales por ti e imprime JSON, así que un script o una tarea de CI pueden programar un post en TikTok con un solo comando.

so-me
so-me posts:create --platform TIKTOK --post-type VIDEO \
  -m ./editing-tips.mp4 \
  -c "3 trucos de edición en 30 segundos #consejosdeedicion" \
  -s 2026-11-05T18:00:00Z \
  --tiktok-privacy PUBLIC_TO_EVERYONE --no-tiktok-allow-duet

El acceso a la API, la CLI y MCP está incluido en todos los planes de pago: Lite, Creator, Standard, Advanced y Lifetime. Ver planes y límites

Sigue leyendo

Guías de otras plataformas

La TikTok Content Posting API rechaza un post sin él, y solo son válidos los niveles permitidos para ese creador. Léelos desde la ruta creator-info, deja que el usuario elija y envía tiktok.privacyLevel.

Sí. Envía postType MULTIPLE_IMAGES con dos o más fotos, o IMAGE para una sola. Las fotos de más de 1080p se redimensionan y se guardan como JPEG en el momento de publicar, así que no hay problema con los originales grandes.

Cuando TikTok ha procesado el post y lo ha hecho público. TikTok publica de forma asíncrona, así que el post lleva primero el id de publicación de TikTok y el enlace final se rellena después.

No. Conectas la cuenta de TikTok una sola vez en el panel de Social media studio mediante el inicio de sesión de TikTok. Sus tokens se guardan cifrados y los renovamos nosotros, y tu código solo envía tu clave de API de Social media studio en la cabecera X-API-Key.

No. Responde en cuanto el post queda en cola. La publicación se ejecuta en un worker que reintenta si falla, así que escucha post.published y post.failed, o consulta GET /v1/posts/:id de forma periódica.

La REST API, la CLI y el servidor MCP están incluidos en todos los planes de pago: Lite, Creator, Standard, Advanced y Lifetime. Lite, Creator, Standard y Advanced empiezan con una prueba de 7 días (se requiere tarjeta) y Lifetime es un pago único.

Programa una vez.
Publica en todas partes.

Deja de hacer malabares con pestañas: redacta, adapta y publica en 20 plataformas desde un único calendario.

API de subida de TikTok: programa vídeos y fotos