Guide · Les API réseaux sociaux pour les développeurs

API Instagram en 2026 : l'API Graph après Basic Display, prix, limites et exemple Python

Par Antoine Blanco··8 min de lecture

Oui, Instagram a une API, mais seulement pour les comptes professionnels : la Basic Display API, qui lisait les comptes personnels, a cessé de fonctionner le 4 décembre 2024. Il reste l'Instagram Graph API, via Instagram Login ou Facebook Login. Meta n'annonce aucun tarif. Les limites : 100 posts publiés et 4 800 appels par impression, les deux sur 24 heures. Vérifié le 24 septembre 2026.

Instagram a-t-il une API ?

Jusqu'en 2024, il y en avait deux. La Basic Display API, lancée en 2019, était « conçue pour les usages grand public de particuliers ayant un compte personnel », selon les mots de Meta : elle lisait les infos de profil et les médias. La Graph API servait les comptes business.

Le 4 septembre 2024, Meta a annoncé la fin de Basic Display : à partir du 4 décembre 2024, « toutes les requêtes à l'Instagram Basic Display API échoueront ». Le même article orientait les développeurs vers deux configurations : l'API Instagram avec Instagram Login, qui venait de sortir, et l'API Instagram avec Facebook Login.

Les deux correspondent à ce qu'on appelle aujourd'hui l'Instagram Graph API, et les deux exigent un compte professionnel, entreprise ou créateur. Il n'existe plus d'API officielle pour les comptes personnels.

Instagram Graph API : Instagram Login ou Facebook Login

Le choix de la connexion détermine ce que tu peux construire. D'après la vue d'ensemble de l'Instagram Platform de Meta, lue le 24 septembre 2026 :

Instagram Login Facebook Login
Hôte graph.instagram.com graph.facebook.com
Page Facebook obligatoire Non Oui, lié au compte
Token Jeton utilisateur Instagram Jeton Facebook User ou Page
Publication de contenu Oui Oui
Modération des commentaires Oui Oui
La messagerie Oui Via la Messenger Platform
Statistiques et mentions Oui Oui
Recherche par hashtag Non Oui
Identification de produits Non Oui
Publicités en partenariat Non Oui
Autorisations de publication instagram_business_basic, instagram_business_content_publish instagram_basic, instagram_content_publish, pages_read_engagement

Prends Instagram Login quand tu travailles sur le contenu du compte lui-même : publication, commentaires, DM, statistiques. Il n'a besoin d'aucune Page Facebook, et c'est la configuration qu'utilise PlugKit. Meta résume sa limite en une ligne : « Cette configuration de l'API ne donne accès ni aux publicités ni à l'identification. » Prends Facebook Login quand tu as besoin de la recherche par hashtag, de l'identification de produits, des publicités en partenariat ou des « métadonnées et statistiques de base sur d'autres comptes Instagram Business et Creator ».

Niveaux d'accès, App Review et jetons

Ton app Meta doit être de type Business. Ensuite, deux niveaux d'accès :

Un jeton courte durée tient une heure ; un jeton longue durée tient 60 jours et peut être renouvelé avant son expiration. Pour un premier test, l'App Dashboard en génère un : Instagram, API setup with Instagram business login, puis Generate token à côté de ton compte.

Un piège passe facilement inaperçu. GET /me?fields=user_id,username renvoie deux ID. id est propre à l'app ; user_id est l'ID du compte professionnel Instagram, celui qu'attendent tous les endpoints de publication.

Tarifs de l'API Instagram

Meta n'affiche aucun prix pour l'API Instagram. Aucune des pages que j'ai lues le 24 septembre 2026 (la vue d'ensemble, la publication de contenu, la limitation du débit et les statistiques) ne parle de frais. Ce n'est pas vrai partout : X facture chaque appel, et PlugKit le répercute à prix coûtant, 0,005 $ pour lire un post et 0,015 $ pour en publier un, d'après sa documentation de facturation.

Sur Instagram, tu paies plutôt en travail :

Coût Construire sur la Graph API Passer par PlugKit
Frais par appel Aucun indiqué par Meta Aucun pour Instagram ; X est la seule plateforme facturée à l'appel
Abonnement 0 $ 29 $ par mois pour 5 comptes, 97 $ pour 30
Comptes des autres App Review et Business Verification Ils se connectent via le lien OAuth de PlugKit
Renouvellement du token Ton code, avant le 60e jour PlugKit stocke un jeton longue durée
File d'attente, nouvelles tentatives, webhooks Ton code Inclus

Limites de débit de l'API Instagram

Limite Valeur Source Meta
Appels à la plateforme, hors messagerie 4 800 × impressions par 24 h Limites de débit
Posts publiés via l'API 100 par période glissante de 24 h dans le guide, quota_total à 50 sur la page de référence Publication de contenu
API Conversations 2 appels par seconde et par compte Limitation du débit
Send API 100 appels par seconde pour le texte, les liens, les réactions et les stickers ; 10 pour l'audio ou la vidéo Limitation du débit
Réponses privées 750 appels par heure sur les commentaires de posts et de reels ; 100 par seconde sur les commentaires en Live Limitation du débit
Conteneur non publié Expire au bout de 24 h Publication de contenu

Ici, les impressions désignent « le nombre de fois où un contenu du compte professionnel Instagram de l'utilisateur de l'app est apparu sur l'écran d'une personne au cours des dernières 24 heures ». Un nouveau compte avec peu de portée obtient un petit budget d'appels. Chaque réponse contient un en-tête X-Business-Use-Case-Usage : lis-le au lieu de deviner.

Les deux quotas de posts se contredisent. Avant un gros lot, appelle GET /<IG_ID>/content_publishing_limit?fields=quota_usage,config et fie-toi à ce qu'il renvoie pour ton compte. Les autres réseaux sont dans mon tableau des limites de débit.

Exemple Python pour l'API Instagram

Ce script publie une photo avec Instagram Login. Il te faut Python 3, requests, un token longue durée dans IG_TOKEN et un JPEG sur une URL publique, car Meta va chercher le fichier lui-même.

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])

Lancé le 24 septembre 2026 avec un jeton volontairement invalide, le script s'arrête dès le premier appel :

RuntimeError: 401: Invalid OAuth access token - Cannot parse access token

Le corps brut derrière contient "type":"OAuthException","code":190. Avec un token valide sur un compte professionnel, le script affiche l'ID du nouveau média, puis ta consommation de quota.

API Instagram Reels

Un reel, ce sont les trois mêmes appels avec un autre conteneur :

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"]

Une vidéo peut prendre plus de temps à traiter qu'une photo : c'est à ça que sert la boucle d'interrogation de 5 minutes. Le conteneur accepte aussi cover_url, thumb_offset, audio_name, collaborators et trial_params, ainsi que upload_type pour les uploads avec reprise, que le guide de Meta envoie vers un autre hôte, rupload.facebook.com. Les specs, d'après la référence media de Meta :

Reel Vidéo de story Image du feed
Format MP4 ou MOV MP4 ou MOV JPEG uniquement
Durée 3 s à 15 min Jusqu'à 60 s
Taille maximale du fichier 300 Mo 100 Mo 8 Mo
Codecs H.264 ou HEVC, AAC jusqu'à 48 kHz Même famille que les reels
Fréquence d'images 23 à 60 fps
Ratio 0,01:1 à 10:1, 9:16 recommandé 4:5 à 1,91:1

Les stories utilisent media_type=STORIES. Les carrousels acceptent jusqu'à 10 images ou vidéos sous forme de conteneurs enfants, puis un conteneur CAROUSEL que tu publies.

Construire sur la Graph API, ou s'y brancher

Construis dessus si tu as une seule app, tes propres comptes, et un besoin comme la recherche par hashtag ou les données sur d'autres entreprises, que seul Facebook Login couvre. Le Python ci-dessus couvre l'essentiel de la partie publication.

Branche-toi dessus quand Instagram est un réseau parmi d'autres, quand un agent fait le travail, ou quand tu préfères ne pas gérer toi-même le renouvellement des jetons, les files d'attente et l'App Review. PlugKit tourne sur Instagram Login : sa documentation couvre la publication d'images, de vidéos, de reels avec le mode essai et de stories, les DM, les commentaires et les statistiques, à côté de LinkedIn, X, TikTok, YouTube, Facebook, WhatsApp et Telegram. La programmation est traitée dans comment automatiser ses posts Instagram. Pour les agents, le serveur MCP l'expose sous forme de 103 outils :

claude mcp add -t http plugkit https://api.plugkit.co/mcp

C'est 29 $ par mois pour 5 comptes connectés, sans engagement, avec 7 jours d'essai gratuit. Là où ce n'est pas la bonne réponse : sa documentation ne mentionne ni recherche par hashtag ni données sur d'autres comptes, donc un outil de veille doit partir sur Facebook Login. Plus de détails sur la page serveur MCP Instagram, dans mon guide des API de réseaux sociaux et sur le hub API.

FAQ

L'API Instagram est-elle gratuite ?

Meta n'affiche aucun prix : aucune des pages de l'Instagram Platform que j'ai lues le 24 septembre 2026 ne parle de frais. Tu paies autrement : un budget d'appels lié à tes impressions, l'App Review et la Business Verification si tu gères les comptes d'autres personnes, et le code que tu maintiens.

Puis-je utiliser l'API Instagram avec un compte personnel ?

Non. Les deux configurations actuelles exigent un compte professionnel ou créateur, et la Basic Display API, celle prévue pour les comptes personnels, ne répond plus depuis le 4 décembre 2024. Passer en compte professionnel dans les réglages de l'app est le seul moyen d'y accéder.

Qu'est-ce qui a remplacé l'Instagram Basic Display API ?

L'API Instagram avec Instagram Login, lancée en 2024 et utilisable sans Page Facebook, et l'API Instagram avec Facebook Login. Les deux ne servent que les comptes professionnels.

Combien de posts puis-je publier par jour avec l'API Instagram ?

Le guide de publication de Meta indique 100 posts publiés via l'API sur 24 heures glissantes, un carrousel comptant pour un. La page de référence de l'endpoint content_publishing_limit indique encore 50. Interroge cet endpoint pour ton compte avant de prévoir ton volume.

Faut-il passer l'App Review pour l'Instagram Graph API ?

Pas pour tes propres comptes : le Standard Access couvre les apps utilisées par des personnes qui y ont un rôle. L'Advanced Access, qui demande l'App Review et la Business Verification, devient obligatoire dès que ton app sert des comptes professionnels que tu ne possèdes pas ou ne gères pas.

AB
Antoine BlancoFondateur de PlugKit. Gère ses propres comptes Instagram, YouTube et X via l'API et le serveur MCP décrits ici.

Un plug pour chaque plateforme que ton agent touche

29 $ par mois pour 5 comptes connectés, résiliable à tout moment. Toutes les fonctionnalités dans tous les forfaits.

Récupère ta clé API →
Français ▾