La API de Publicación de Contenido de TikTok publica contenido de video y foto en nombre de un creador, mediante una llamada de init, una subida o descarga de URL, y un sondeo de estado. El hecho más importante antes de empezar: hasta que tu cliente pase la auditoría de TikTok, todo lo que publiques queda restringido a visualización privada. Puedes construir y probar toda la integración y seguir sin poder hacer una sola publicación pública.
¿Qué puede publicar la API de Publicación de Contenido, y qué está bloqueado?
La API cubre la publicación directa de contenido de video y foto, más una vía de borrador que envía el contenido a la bandeja de entrada del creador para que lo termine. Los endpoints son POST /v2/post/publish/video/init/ para video, POST /v2/post/publish/content/init/ para fotos, y POST /v2/post/publish/status/fetch/ para comprobar el resultado. También está POST /v2/post/publish/creator_info/query/, que se espera que llames primero para saber qué permite la cuenta del creador.
El bloqueo es la auditoría. Las palabras textuales de TikTok: “Todo el contenido publicado por clientes sin auditar quedará restringido a modo de visualización privada”. La documentación es igual de directa en la página de referencia de publicación directa, donde los clientes sin auditar “solo pueden publicar en una cuenta privada”, con el intento bloqueado en /publish/video/init/.
| Aspecto | Lo que dice la documentación |
|---|---|
| Alcance requerido | video.publish, aprobado para tu app y autorizado por el usuario |
| Apps sin auditar | Contenido restringido a modo de visualización privada |
| Niveles de privacidad | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY |
| Fuente del medio | FILE_UPLOAD o PULL_FROM_URL |
| Descarga por URL | Requiere verificar la propiedad del prefijo o dominio de la URL |
SELF_ONLY es el valor con el que vivirás durante el desarrollo. También vale la pena señalar que el conjunto de niveles de privacidad que puede usar un creador determinado no es fijo: consultas creator_info y usas lo que devuelva, en lugar de asumir PUBLIC_TO_EVERYONE a la fuerza.
Nota: Estas cifras se verificaron con la documentación de la API de Publicación de Contenido de TikTok a fecha de septiembre de 2026. Las plataformas cambian estos datos sin previo aviso.
¿Cómo funciona la autenticación, y cuánto dura la auditoría?
OAuth estándar para obtener un token de acceso de usuario que lleve video.publish. Se acumulan dos aprobaciones una sobre otra: a tu app se le debe conceder el alcance, y el creador individual debe autorizarlo en el momento de conectar. Ninguna de las dos por sí sola es suficiente.
La auditoría es algo aparte. Ocurre después de tener una integración funcionando, porque TikTok espera que hayas probado el flujo antes de solicitarla. TikTok no indica una duración de revisión en la documentación de la API de Publicación de Contenido, así que trata el plazo como no publicado y desconocido. Planifica tu fecha de lanzamiento en torno a una aprobación que no controlas.
¿Cuál es la secuencia real de llamadas de publicación?
POST /v2/post/publish/creator_info/query/para comprobar los niveles de privacidad permitidos del creador y su configuración de interacción.POST /v2/post/publish/video/init/conpost_info(título,privacy_level, los flags de desactivación,video_cover_timestamp_ms, los interruptores de contenido comercial) ysource_info.- Si
sourceesFILE_UPLOAD, hazPUTde los bytes a laupload_urlque devuelve init, en fragmentos que coincidan con elchunk_sizey eltotal_chunk_countque declaraste. SisourceesPULL_FROM_URL, TikTok lo recupera desde tu dominio verificado en su lugar. POST /v2/post/publish/status/fetch/con elpublish_idde init, y sondea.- Trata
PUBLISH_COMPLETEcomo éxito yFAILEDcomo terminal. Nada antes de eso es una publicación efectuada.
# 1. init a direct post
curl -X POST "https://open.tiktokapis.com/v2/post/publish/video/init/" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"post_info": { "title": "Ship it.", "privacy_level": "SELF_ONLY" },
"source_info": { "source": "PULL_FROM_URL",
"video_url": "https://verified.example.com/clip.mp4" }
}'
# -> { "data": { "publish_id": "v_pub_url~..." } }
# 2. poll
curl -X POST "https://open.tiktokapis.com/v2/post/publish/status/fetch/" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "publish_id": "v_pub_url~..." }'
Los valores de estado documentados son PROCESSING_UPLOAD (ruta de subida de archivo), PROCESSING_DOWNLOAD (ruta de descarga por URL), SEND_TO_USER_INBOX (borrador entregado al creador), PUBLISH_COMPLETE y FAILED.
¿Cuáles son los límites de velocidad?
Dos cifras se declaran con claridad en la documentación de referencia, ambas por token de acceso de usuario:
- Init de publicación directa: 6 peticiones por minuto.
- Consulta de estado: 30 peticiones por minuto.
Seis inits por minuto por usuario es generoso para un programador y ajustado para una importación masiva. Treinta consultas de estado por minuto suena a mucho hasta que tienes cientos de publicaciones en curso compartiendo un mismo sondeador, momento en el que necesitas retroceso por token en lugar de un bucle global.
No pudimos confirmar una cuota diaria de publicación por usuario documentada, un tamaño máximo de archivo de video ni una duración máxima en las páginas de la API de Publicación de Contenido que revisamos. La respuesta de información del creador es la fuente prevista para el límite de duración de video por cuenta, así que léela en vez de fijar un número a mano.
Nota: Estas cifras se verificaron con la documentación de la API de Publicación de Contenido de TikTok a fecha de septiembre de 2026. Las plataformas cambian estos datos sin previo aviso.
¿Qué te va a costar realmente tres semanas?
La auditoría. Esta es la grande, y es distinta de la revisión de Instagram o LinkedIn de una forma concreta: puedes lanzar código, conectar cuentas y publicar, y aun así hacer que cada publicación sea invisible. Nada en tus registros parecerá incorrecto. No dejes que un interesado vea un PUBLISH_COMPLETE exitoso en pruebas y concluya que la función está terminada.
Verificación de dominio para PULL_FROM_URL. Dejar que TikTok recupere tus medios es mucho más simple que las subidas fragmentadas, pero requiere demostrar que eres dueño del prefijo de la URL. Si tus medios viven en un bucket con un nombre de host generado, tendrás que añadir un dominio propio a tu almacenamiento antes de poder usar la vía fácil.
Renovación de token. Los tokens de acceso de TikTok se renuevan con un token de renovación, y una conexión caducada obliga al creador a reconectar. Como con cualquier plataforma, el trabajo no es la llamada de renovación, es la máquina de estados y la notificación cuando la renovación falla.
Gestión de fallos asíncronos. Que init devuelva un publish_id no es una publicación. Tampoco lo es una subida correcta. Solo PUBLISH_COMPLETE lo es, y FAILED puede llegar minutos después por razones como una codificación no compatible. Guarda el publish_id, mantén un estado processing, y concilia. Nuestra guía de la API de programación de redes sociales cubre el modelo de estados que se necesita para esto.
Si también estás escribiendo las descripciones, el contador de caracteres de TikTok te dirá dónde se corta el título.
En resumen
- Init, subida o descarga, luego sondeo de estado.
PUBLISH_COMPLETEes el único éxito. - Los clientes sin auditar solo pueden publicar en privado. Se requiere auditoría para publicaciones públicas.
- El alcance
video.publishnecesita aprobación para tu app y consentimiento del creador. - 6 peticiones de init por minuto y 30 consultas de estado por minuto, por token de usuario.
- Los plazos de revisión y auditoría no están publicados por TikTok.
Publicar en TikTok sin pasar tú mismo por la auditoría
Una forma de evitar el coste de esta configuración es publicar a través de una API que ya haya pasado por ella. BulkPublish cubre TikTok junto con otras 14 plataformas mediante una sola API REST, así que el init, la subida, el sondeo y el reintento están de nuestro lado, y tu llamada es una única petición de creación de publicación con un ID de canal. La misma llamada apunta también a Instagram Reels y YouTube Shorts si estás republicando en varias plataformas a la vez. Los endpoints están documentados en /developers/, y el resumen de la integración REST está en /integrations/rest-api/.