API de Instagram en 2026: la Graph API tras Basic Display, precio, límites y un ejemplo en Python
Sí, Instagram tiene una API, pero solo para cuentas profesionales: la Basic Display API, que leía cuentas personales, dejó de funcionar el 4 de diciembre de 2024. Lo que queda es la Instagram Graph API, mediante Instagram Login o Facebook Login. Meta no indica ninguna tarifa. Los límites: 100 publicaciones y 4800 llamadas por impresión, ambos cada 24 horas. Comprobado el 24 de septiembre de 2026.
¿Tiene Instagram una API?
Hasta 2024 había dos. La Basic Display API, lanzada en 2019, estaba "diseñada para casos de uso de consumo de personas con cuentas personales", en palabras de la propia Meta: leía la información del perfil y del contenido. La Graph API daba servicio a las cuentas de empresa.
El 4 de septiembre de 2024, Meta anunció el fin de Basic Display: a partir del 4 de diciembre de 2024, "todas las solicitudes a la Instagram Basic Display API fallarán". El mismo post remitía a los desarrolladores a dos configuraciones: la API de Instagram con Instagram Login, recién lanzada, y la API de Instagram con Facebook Login.
Las dos son lo que hoy se llama Instagram Graph API, y ambas exigen una cuenta profesional, de empresa o de creador. Ya no existe una API oficial para cuentas personales.
Instagram Graph API: Instagram Login o Facebook Login
El inicio de sesión que elijas decide lo que puedes construir. Según la visión general de Instagram Platform de Meta, leída el 24 de septiembre de 2026:
| Instagram Login | Facebook Login | |
|---|---|---|
| Host | graph.instagram.com |
graph.facebook.com |
| Requiere una Página de Facebook | No | Sí, vinculado a la cuenta |
| Token | Token de usuario de Instagram | Token de usuario o de Página de Facebook |
| Publicación de contenido | Sí | Sí |
| Moderación de comentarios | Sí | Sí |
| La mensajería | Sí | A través de Messenger Platform |
| Estadísticas y menciones | Sí | Sí |
| Búsqueda de hashtags | No | Sí |
| Etiquetado de productos | No | Sí |
| Anuncios de colaboración | No | Sí |
| Permisos de publicación | instagram_business_basic, instagram_business_content_publish |
instagram_basic, instagram_content_publish, pages_read_engagement |
Elige Instagram Login cuando trabajes con el contenido propio de la cuenta: publicación, comentarios, DMs, estadísticas. No necesita una Página de Facebook, y es la configuración que usa PlugKit. Meta resume su límite en una frase: "Esta configuración de API no puede acceder a anuncios ni a etiquetado." Elige Facebook Login cuando necesites búsqueda de hashtags, etiquetas de productos, anuncios de colaboración o "metadatos y métricas básicos sobre otras cuentas de empresa y de creador de Instagram".
Niveles de acceso, App Review y tokens
Tu app de Meta debe ser de tipo Business. Luego hay dos niveles de acceso:
- Standard Access, la opción por defecto, "está pensado para apps que solo usarán personas con un rol en ellas, durante el desarrollo de la app o para probarla". Tus propias cuentas encajan aquí. Sin App Review.
- Advanced Access es obligatorio "si tu app da servicio a cuentas profesionales de Instagram que no son tuyas ni gestionas". Requiere App Review y Business Verification.
Un token de corta duración dura una hora; uno de larga duración dura 60 días y puedes renovarlo antes de que caduque. Para una primera prueba, el App Dashboard te genera uno: Instagram, API setup with Instagram business login y luego Generate token junto a tu cuenta.
Hay una trampa fácil de pasar por alto. GET /me?fields=user_id,username devuelve dos IDs. id es de ámbito de app; user_id es el ID de la cuenta profesional de Instagram, el que espera cada endpoint de publicación.
Precios de la API de Instagram
Meta no publica ningún precio para la API de Instagram. Ninguna de las páginas que leí el 24 de septiembre de 2026, la visión general, la publicación de contenido, los límites de uso y las estadísticas, menciona una tarifa. No pasa en todas partes: X cobra cada llamada, y PlugKit lo repercute a precio de coste, 0,005 $ por leer un post y 0,015 $ por publicar uno, según su documentación de facturación.
En Instagram, pagas con trabajo:
| Coste | Construye sobre la Graph API | Pasar por PlugKit |
|---|---|---|
| Tarifa por llamada | Meta no indica ninguna | Ninguna para Instagram; X es la única plataforma de pago por uso |
| Suscripción | 0 $ | 29 $ al mes por 5 cuentas, 97 $ por 30 |
| Cuentas de otras personas | App Review y Business Verification | Se conectan mediante el enlace OAuth de PlugKit |
| Renovación del token | Tu código, antes del día 60 | PlugKit guarda un token de larga duración |
| Cola, reintentos, webhooks | Tu código | Incluida |
Límites de uso de la API de Instagram
| Límite | Valor | Fuente de Meta |
|---|---|---|
| Llamadas a la plataforma, sin contar mensajería | 4,800 × impresiones cada 24 h | Límites de frecuencia |
| Posts publicados por API | 100 por ventana móvil de 24 h en la guía, quota_total 50 en la página de referencia |
Publicación de contenido |
| API Conversations | 2 llamadas por segundo por cuenta | Límites de uso |
| Send API | 100 llamadas por segundo para texto, enlaces, reacciones y stickers; 10 para audio o vídeo | Límites de uso |
| Respuestas privadas | 750 llamadas por hora en comentarios de posts y reels; 100 por segundo en comentarios de Live | Límites de uso |
| Contenedor sin publicar | Caduca a las 24 h | Publicación de contenido |
Aquí, impresiones significa "el número de veces que cualquier contenido de la cuenta profesional de Instagram del usuario de la app ha entrado en la pantalla de una persona en las últimas 24 horas". Una cuenta nueva con poco alcance recibe un presupuesto de llamadas pequeño. Cada respuesta lleva una cabecera X-Business-Use-Case-Usage: léela en vez de adivinar.
Las dos cuotas de publicación se contradicen. Antes de un lote grande, llama a GET /<IG_ID>/content_publishing_limit?fields=quota_usage,config y fíate de lo que devuelva para tu cuenta. Las demás redes están en mi tabla de límites de uso.
Ejemplo de la API de Instagram en Python
Este script publica una foto con Instagram Login. Necesitas Python 3, requests, un token de larga duración en IG_TOKEN y un JPEG en una URL pública, porque Meta descarga el archivo por su cuenta.
import os
import time
import requests
GRAPH = "https://graph.instagram.com/v25.0"
HEADERS = {"Authorization": f"Bearer {os.environ['IG_TOKEN']}"}
def call(method, path, params=None, body=None):
r = requests.request(method, f"{GRAPH}/{path}", headers=HEADERS,
params=params, json=body, timeout=30)
data = r.json()
if "error" in data:
raise RuntimeError(f"{r.status_code}: {data['error']['message']}")
return data
# The professional account ID is user_id, not id
ig_id = call("GET", "me", {"fields": "user_id,username"})["user_id"]
# 1. Container: a public JPEG plus the caption
container = call("POST", f"{ig_id}/media", body={
"image_url": "https://example.com/launch.jpg",
"caption": "Launch day. Link in bio.",
})["id"]
# 2. Wait for FINISHED: Meta suggests once a minute, 5 minutes max
for _ in range(5):
status = call("GET", container, {"fields": "status_code"})["status_code"]
if status == "FINISHED":
break
if status in ("ERROR", "EXPIRED"):
raise RuntimeError(f"container {container}: {status}")
time.sleep(60)
else:
raise RuntimeError("container not ready after 5 minutes")
# 3. Publish
media_id = call("POST", f"{ig_id}/media_publish",
body={"creation_id": container})["id"]
print("published", media_id)
# 4. What is left of the 24-hour quota
print(call("GET", f"{ig_id}/content_publishing_limit",
{"fields": "quota_usage,config"})["data"][0])
Ejecutado el 24 de septiembre de 2026 con un token inválido a propósito, la primera llamada detiene el script:
RuntimeError: 401: Invalid OAuth access token - Cannot parse access token
El cuerpo en bruto que hay detrás lleva "type":"OAuthException","code":190. Con un token válido en una cuenta profesional, el script imprime el ID del nuevo medio y luego tu uso de cuota.
API de Reels de Instagram
Un reel son las mismas tres llamadas con otro contenedor:
container = call("POST", f"{ig_id}/media", body={
"media_type": "REELS",
"video_url": "https://example.com/clip.mp4",
"caption": "New reel",
"share_to_feed": True,
})["id"]
Un vídeo puede tardar más en procesarse que una foto, y para eso está el bucle de consulta de 5 minutos. El contenedor también acepta cover_url, thumb_offset, audio_name, collaborators y trial_params, además de upload_type para subidas reanudables, que la guía de Meta envía a otro host, rupload.facebook.com. Las especificaciones, según la referencia de medios de Meta:
| Reel | Vídeo de story | Imagen del feed | |
|---|---|---|---|
| Formato | MP4 o MOV | MP4 o MOV | Solo JPEG |
| Duración | de 3 s a 15 min | Hasta 60 s | |
| Tamaño máximo de archivo | 300 MB | 100 MB | 8 MB |
| Códecs | H.264 o HEVC, AAC hasta 48 kHz | La misma familia que los reels | |
| Frecuencia de fotogramas | de 23 a 60 fps | ||
| Relación de aspecto | de 0.01:1 a 10:1, 9:16 recomendado | de 4:5 a 1.91:1 |
Las stories usan media_type=STORIES. Los carruseles admiten hasta 10 imágenes o vídeos como contenedores hijos, y luego un contenedor CAROUSEL que publicas.
Construye sobre la Graph API o conéctate a ella
Construye sobre ella cuando tengas una sola app, tus propias cuentas y una necesidad como la búsqueda de hashtags o los datos de otras empresas, que solo cubre Facebook Login. El Python de arriba es casi toda la parte de publicación.
Úsalo cuando Instagram sea una red entre varias, cuando un agente haga el trabajo o cuando prefieras no encargarte del refresco de tokens, las colas y App Review. PlugKit funciona con Instagram Login: su documentación cubre la publicación de imágenes, vídeos, reels con modo de prueba y stories, DMs, comentarios y estadísticas, junto a LinkedIn, X, TikTok, YouTube, Facebook, WhatsApp y Telegram. La programación está en cómo automatizar publicaciones en Instagram. Para agentes, el servidor MCP lo expone como 103 herramientas:
claude mcp add -t http plugkit https://api.plugkit.co/mcp
Cuesta 29 $ al mes por 5 cuentas conectadas, cancelas cuando quieras, con 7 días de prueba gratis. Dónde no es la respuesta: su documentación no incluye búsqueda de hashtags ni datos de otras cuentas, así que una herramienta de monitorización debería construirse sobre Facebook Login. Tienes más en la página servidor MCP de Instagram, en mi guía de APIs de redes sociales y en el hub de la API.
Preguntas frecuentes
¿La API de Instagram es gratis?
Meta no publica ningún precio: ninguna de las páginas de Instagram Platform que leí el 24 de septiembre de 2026 menciona una tarifa. Pagas de otras formas: un presupuesto de llamadas ligado a tus impresiones, App Review y Business Verification si das servicio a cuentas de otras personas, y el código que mantienes.
¿Puedo usar la API de Instagram con una cuenta personal?
No. Las dos configuraciones actuales exigen una cuenta de empresa o de creador, y la Basic Display API, la pensada para cuentas personales, dejó de responder el 4 de diciembre de 2024. Pasar a una cuenta profesional en los ajustes de la app es la única forma de entrar.
¿Qué sustituyó a la Instagram Basic Display API?
La API de Instagram con Instagram Login, lanzada en 2024 y utilizable sin Página de Facebook, y la API de Instagram con Facebook Login. Las dos solo sirven para cuentas profesionales.
¿Cuántas publicaciones puedo hacer al día con la API de Instagram?
La guía de publicación de Meta habla de 100 publicaciones por API cada 24 horas móviles, y un carrusel cuenta como una. La página de referencia del endpoint content_publishing_limit todavía dice 50. Consulta ese endpoint para tu cuenta antes de planificar el volumen.
¿Necesito App Review para la Instagram Graph API?
No para tus propias cuentas: Standard Access cubre las apps que usan personas con un rol en ellas. Advanced Access, que requiere App Review y Business Verification, pasa a ser obligatorio en cuanto tu app da servicio a cuentas profesionales que no son tuyas ni gestionas.
Un solo plug para cada plataforma que toca tu agente
29 $ al mes por 5 cuentas conectadas, cancela cuando quieras. Todas las funciones en todos los planes.
Consigue tu clave de API →