Por qué automatizar publicaciones en Instagram vía API
Si alguna vez has publicado manualmente a traves de la app de Instagram, conoces el proceso: abrir la app, elegir un archivo, escribir una descripcion, agregar hashtags, etiquetar personas, elegir una imagen de portada, y finalmente pulsar publicar. Ahora multiplica eso por cinco publicaciones al dia en multiples cuentas de clientes.
La pagina de la plataforma Instagram explica lo que Upload-Post soporta para Instagram especificamente. La version corta: puedes publicar Reels, fotos individuales y carruseles (publicaciones multi-imagen) a traves de un unico endpoint de la API de redes sociales. Sin revision de aplicacion de Facebook, sin renovacion de tokens, sin la complejidad de la Graph API.
Instagram permite hasta 50 subidas por cada 24 horas a traves de la API, lo cual es mas que suficiente para la mayoria de los casos de uso. Si necesitas publicar en plataformas adicionales simultaneamente, consulta como publicar en todas las plataformas a la vez.
Publicar un Reel de Instagram vía API
Los Reels son el formato de contenido principal en Instagram. Para publicar un video como Reel, envia una solicitud POST al endpoint de subida con media_type configurado como REELS. Tambien puedes controlar como aparece el Reel en el feed usando share_mode.
curl -X POST https://api.upload-post.com/api/upload \
-H "Autorización: Apikey tu-clave-api-aquí" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=Behind the scenes of our new product launch" \
-F "platform[]=instagram" \
-F "media_type=REELS" \
-F "share_mode=FEED_AND_REELS" \
-F "audio_name=Original Audio" \
-F "cover_url=https://example.com/cover.jpg" Esto es lo que hace cada parametro especifico de Instagram:
media_type=REELSindica a Instagram que trate esto como un Reel en lugar de un video de feed regular.share_mode=FEED_AND_REELSpublica tanto en la pestana de Reels como en el feed principal. UsaREELS_ONLYpara mantenerlo fuera de la cuadricula del feed.audio_nameestablece el nombre de la pista de audio integrada que los espectadores ven en el Reel.cover_urlproporciona una imagen de portada personalizada. Sin ella, Instagram elige un fotograma del video.
Una subida exitosa devuelve el ID del trabajo y el estado de la plataforma:
{
"success": true,
"job_id": "job_reel_abc123",
"platforms": {
"instagram": {
"status": "processing",
"user": "mybrand"
}
}
}
Tambien puedes establecer share_to_feed=true o share_to_feed=false como alternativa a share_mode. Ambos logran lo mismo. Usa thumb_offset para elegir un fotograma especifico del video como miniatura (valor en milisegundos).
Publicar fotos y carruseles
Para fotos individuales o publicaciones en carrusel (multi-imagen), usa el endpoint /api/upload_photos. Sube multiples archivos usando el parametro photos[] para crear un carrusel automaticamente.
curl -X POST https://api.upload-post.com/api/upload_photos \
-H "Autorización: Apikey tu-clave-api-aquí" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "user=mybrand" \
-F "title=Our top 3 product picks this month" \
-F "platform[]=instagram" \
-F "instagram_first_comment=#productpicks #trending #shopnow"
Cuando envias mas de un archivo en photos[], Instagram crea una publicacion en carrusel. Los usuarios deslizan entre las imagenes en el orden en que las subiste. Un solo archivo crea una publicacion de foto estandar. Instagram soporta hasta 10 imagenes por carrusel.
Puedes usar instagram_title para establecer una descripcion especifica de Instagram cuando publicas el mismo contenido en multiples plataformas a la vez. Esto es util cuando tu descripcion de Instagram necesita hashtags o menciones diferentes a las que usas en otras plataformas.
Publicar automáticamente un primer comentario
El parametro instagram_first_comment agrega automaticamente un comentario a tu publicacion justo despues de que se publique. Esta es una de las estrategias mas populares de Instagram: mantener tu descripcion limpia y mover todos tus hashtags al primer comentario.
curl -X POST https://api.upload-post.com/api/upload \
-H "Autorización: Apikey tu-clave-api-aquí" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=Quick tutorial: how to use our app" \
-F "platform[]=instagram" \
-F "media_type=REELS" \
-F "instagram_first_comment=#tutorial #howto #apptips #tech #productdemo" ¿Por que usar un primer comentario en lugar de poner hashtags en la descripcion? El algoritmo de Instagram trata los hashtags del primer comentario de la misma manera que los hashtags de la descripcion para la visibilidad, pero tu descripcion se ve mas limpia. Muchas marcas y creadores prefieren este enfoque porque mantiene la publicacion visualmente enfocada en el mensaje en lugar de un muro de hashtags.
Usar colaboradores y etiquetas de usuarios
Las publicaciones de Colaboracion de Instagram permiten que dos cuentas sean coautoras de un unico contenido. La publicacion aparece en ambos perfiles, y la interaccion (me gusta, comentarios, compartidos) se comparte. Usa el parametro collaborators para invitar colaboradores.
curl -X POST https://api.upload-post.com/api/upload \
-H "Autorización: Apikey tu-clave-api-aquí" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=Excited to announce our partnership with @partneraccount" \
-F "platform[]=instagram" \
-F "media_type=REELS" \
-F "collaborators=partneraccount,otheraccount" \
-F "user_tags=partneraccount,photographer_jane" \
-F "location_id=123456789" collaboratorsacepta una lista separada por comas de nombres de usuario de Instagram. Los usuarios invitados reciben una notificacion para aceptar la colaboracion.user_tagsetiqueta usuarios en la publicacion misma, similar a etiquetar personas en una foto a traves de la app.location_idadjunta una ubicacion a la publicacion. Puedes encontrar los IDs de ubicacion a traves de la busqueda de ubicaciones de Instagram o la API de Facebook Places.
Programar publicaciones en Instagram
Agrega scheduled_date a cualquier solicitud de subida para publicar en un momento futuro. La fecha debe estar en formato ISO-8601, y opcionalmente puedes especificar un timezone.
curl -X POST https://api.upload-post.com/api/upload \
-H "Autorización: Apikey tu-clave-api-aquí" \
-F "[email protected]" \
-F "user=mybrand" \
-F "title=Good morning! New content dropping today." \
-F "platform[]=instagram" \
-F "media_type=REELS" \
-F "scheduled_date=2025-09-15T09:00:00Z" \
-F "timezone=America/New_York"
Tambien puedes usar add_to_queue=true en lugar de una fecha especifica. El sistema de cola elige el siguiente horario disponible segun tu calendario configurado, lo cual es ideal para subir contenido en lote sin elegir horarios manualmente. Consulta la guia completa de programacion para la configuracion de la cola, edicion de publicaciones programadas y gestion de tu calendario de contenido.
Automatizar con Python
El SDK oficial de Python facilita la creacion de scripts de automatizacion. Instalalo con pip install upload-post y luego usa UploadPostClient para interactuar con la API. Para una guia completa, consulta la guia de automatizacion con Python.
Aqui tienes un script completo que publica un Reel, sube un carrusel de fotos y programa contenido para la semana:
from upload_post import UploadPostClient
from datetime import datetime, timedelta
client = UploadPostClient(api_key="your-api-key-here")
# 1. Post a Reel immediately
reel_response = client.upload_video(
video_path="/path/to/reel.mp4",
title="Nueva guía del producto",
user="mybrand",
platforms=["instagram"],
media_type="REELS",
share_mode="FEED_AND_REELS",
instagram_first_comment="#newproduct #walkthrough #tech"
)
print(f"Reel subido: {reel_response['job_id']}")
# 2. Post a carousel of photos
carousel_response = client.upload_photos(
photo_paths=[
"/path/to/photo1.jpg",
"/path/to/photo2.jpg",
"/path/to/photo3.jpg"
],
title="Tres ángulos, un producto.",
user="mybrand",
platforms=["instagram"],
collaborators="partneraccount"
)
print(f"Carrusel cargado: {carousel_response['job_id']}")
# 3. Schedule Reels for the next 7 days
videos = [
"monday.mp4", "tuesday.mp4", "wednesday.mp4",
"thursday.mp4", "friday.mp4", "saturday.mp4", "sunday.mp4"
]
for i, video in enumerate(videos):
publish_date = (datetime.now() + timedelta(days=i + 1)).replace(
hour=10, minute=0, second=0, microsecond=0
)
response = client.upload_video(
video_path=f"/path/to/{video}",
title=f"Day {i + 1} of our launch week series",
user="mybrand",
platforms=["instagram"],
media_type="REELS",
scheduled_date=publish_date.isoformat(),
timezone="Europe/Madrid"
)
print(f"Scheduled {video} for {publish_date}: {response['job_id']}")
Este script programa un Reel por dia a las 10:00 AM hora de Madrid durante una semana entera. Ajusta la hour, el timezone y las rutas de archivos para que coincidan con tu flujo de trabajo. Para escenarios de subida masiva, puedes leer las rutas de los videos desde un directorio o un archivo CSV y recorrerlos de la misma manera.
Automatización sin código: n8n y Make.com
Si prefieres flujos de trabajo visuales en lugar de escribir codigo, tanto n8n como Make.com funcionan con Upload-Post directamente.
n8n
n8n es una herramienta de automatizacion de flujos de trabajo de codigo abierto. Puedes usar el nodo HTTP Request para llamar a la API de Upload-Post. Tenemos una plantilla de n8n para Reels de Instagram lista para usar que lee archivos de video desde Google Drive, agrega descripciones desde una Google Sheet y los publica como Reels automaticamente. Explora todas las plantillas de n8n disponibles para mas configuraciones.
Make.com
Make.com (anteriormente Integromat) usa un enfoque basado en escenarios. Agrega un modulo HTTP, configuralo con el endpoint de Upload-Post y tu clave API, y conectalo a cualquier disparador: nueva fila en Google Sheets, nuevo archivo en Dropbox, un temporizador programado, etc. El resultado es el mismo que escribir codigo, pero con una interfaz de arrastrar y soltar.
Ambas herramientas soportan parametros de programacion (scheduled_date, add_to_queue), por lo que puedes construir un calendario de contenido de Instagram completo sin tocar una terminal.
Requisitos de contenido de Instagram
Upload-Post adapta automaticamente tu contenido cuando es posible (usando la API de FFmpeg integrada), pero es util saber que espera Instagram para que puedas optimizar la calidad.
| Formato | Specification | Detalles |
|---|---|---|
| Video (Reels) | Tamaño máximo de archivo | 1 GB |
| Formatos | MP4, MOV | |
| Relación de aspecto | 9:16 recomendado, 1:1 y 4:5 soportados | |
| Duración | 3 segundos a 15 minutos | |
| Resolución | 1080x1920 recomendada | |
| Foto | Tamaño máximo de archivo | 8 MB |
| Formatos | JPEG, PNG | |
| Relación de aspecto | 1:1, 4:5, 1.91:1 | |
| Dimensiones máximas | 1440x1440 (cuadrado), 1080x1350 (vertical) | |
| Carrusel | Imágenes máximas | 10 por publicacion |
| Contenido mixto | Se pueden combinar fotos y videos |
Preguntas frecuentes
¿Funciona esto con cuentas personales de Instagram?
No. La API de Instagram solo soporta cuentas Business y Creator. Las cuentas personales no pueden ser accedidas a traves de ninguna API oficial. La buena noticia es que cambiar a una cuenta Business o Creator es gratuito y toma unos 30 segundos en los ajustes de la app de Instagram. Necesitas conectarla a una Pagina de Facebook, lo cual Upload-Post gestiona durante el proceso de vinculacion de cuenta.
¿Puedo publicar Stories de Instagram via API?
La API oficial de Instagram no soporta la publicacion de Stories. Esta es una limitacion impuesta por Meta, no por Upload-Post. Las Stories solo pueden crearse a traves de la app de Instagram. Si el soporte para Stories se hace disponible a traves de la API en el futuro, Upload-Post lo agregara.
¿Las publicaciones automatizadas haran que mi cuenta sea shadowbaneada?
No. Upload-Post usa la API oficial de Content Publishing de Instagram (la misma API que usan Hootsuite, Buffer y todas las demas herramientas autorizadas). Tus publicaciones pasan por el pipeline oficial de Instagram, por lo que no hay riesgo de shadowban o penalizaciones de cuenta. Esto es fundamentalmente diferente de la automatizacion de navegador o bots no oficiales, que si violan los terminos de Instagram. Si actualmente usas una herramienta como Hootsuite o Later, Upload-Post es una alternativa orientada a desarrolladores que usa el mismo acceso oficial.
¿Hay un plan gratuito?
Si. Cada cuenta de Upload-Post incluye 10 subidas gratuitas al mes sin necesidad de tarjeta de credito. Eso es suficiente para probar la API, validar tu flujo de trabajo y confirmar que todo funciona antes de comprometerte con un plan de pago. Consulta el calendario de fechas clave para redes sociales para planificar tus primeras publicaciones alrededor de proximos eventos.