Per API auf Instagram posten Reels, Karussells und Stories

Plane Instagram-Fotos, -Karussells, -Reels und -Stories aus deinem Backend oder von deinem KI-Agenten. Lade die Medien hoch, sende ein POST /v1/posts und erhalte einen signierten Webhook, sobald der Beitrag live ist.

Base-URL https://api.so-me.studio/v1 · Auth X-API-Key · socialMedia: INSTAGRAM

Was du auf Instagram veröffentlichen kannst

Sende einen dieser Werte als postType. Jeder Beitrag braucht Text, und Fotos oder Videos werden per fileId aus deiner Medienbibliothek angehängt.

IMAGE

Ein einzelnes Foto im Feed.

CAROUSEL

2 bis 10 Fotos in einem Beitrag zum Durchwischen. MULTIPLE_IMAGES wird ebenfalls akzeptiert.

REEL

Ein Video, veröffentlicht als Reel.

VIDEO

Ein Video, das Instagram ebenfalls als Reel veröffentlicht. Die Größenregeln sind lockerer als bei REEL.

STORY

Ein Foto oder Video als Story. Instagram zeigt bei Stories keine Caption an.

Einen Instagram-Beitrag planen

Lade die Medien hoch und erstelle dann den Beitrag. Lass scheduledAt weg, um sofort zu veröffentlichen.

  1. Upload-URL reservieren

    POST /v1/media/presign-upload legt die Datei in deiner Medienbibliothek an und liefert eine fileId und eine Presigned-URL namens uploadUrl.

    Upload-URL reservieren
    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":"launch-reel.mp4","mimetype":"video/mp4","size":48211904}]}'
    
    # → [{ "fileId": "…", "uploadUrl": "https://…", "fileSrc": "…", "s3Key": "…" }]
  2. Datei hochladen

    Sende die Bytes per PUT an uploadUrl, mit genau dem Content-Type, den du angegeben hast. Die URL ist eine Stunde lang gültig.

    Datei hochladen
    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --upload-file ./launch-reel.mp4
  3. Beitrag erstellen

    POST /v1/posts mit der fileId. Die Antwort ist der Beitrag mit dem Status SCHEDULED, und er wird zum Zeitpunkt scheduledAt über eine Queue veröffentlicht, die bei Fehlern erneut versucht.

    Beitrag erstellen
    curl -X POST https://api.so-me.studio/v1/posts \
      -H "X-API-Key: $SOME_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "socialMedia": "INSTAGRAM",
        "postType": "REEL",
        "text": "Hinter den Kulissen der Launch-Woche",
        "fileIds": ["<fileId>"],
        "scheduledAt": "2026-11-03T15:00:00Z",
        "firstComment": "#launchwoche #buildinpublic"
      }'

accountId ist optional, wenn der Workspace ein Instagram-Konto hat. Andernfalls übergib eine ID aus GET /v1/accounts.

Mit fileIds angehängte Dateien werden gegen die Instagram-Limits unten geprüft, bevor etwas in die Queue kommt. Verstößt eine Datei gegen eine Regel, kommt 400 mit einem Bericht pro Datei zurück.

Instagram-Optionen

Die Felder, die ändern, wie ein Beitrag auf Instagram veröffentlicht wird.

FeldWas es bewirkt
firstCommentEin Kommentar, der direkt nach der Veröffentlichung unter dem Beitrag gepostet wird, bis zu 2.200 Zeichen. Praktisch für Hashtags oder einen Link.
metaData.taggedPeopleEin Array öffentlicher Instagram-Benutzernamen, die auf Fotos, Karussell-Fotos und Reels markiert werden. Das Markieren erfolgt nach Möglichkeit: Ein falscher Benutzername blockiert den Beitrag nie.
accountIdDas Instagram-Konto, von dem aus gepostet wird, wie in GET /v1/accounts aufgelistet. Optional, wenn der Workspace nur eines hat.

Instagram-Medienlimits

Social media studio prüft jede Datei vor der Veröffentlichung gegen diese Limits. Es sind unsere konfigurierten Limits, keine Zusage von Instagram: GET /v1/media/rules liefert die aktuelle Tabelle, und POST /v1/media/validate prüft eine Datei, ohne sie zu posten.

Beitragstyp IMAGE

Formate
JPEG, PNG, WebP
Max. Dateigröße
8 MB
Dateien pro Beitrag
1
Abmessungen
≥ 320 px breit
Seitenverhältnis
4:5 bis 1.91:1

Beitragstyp CAROUSEL

Formate
JPEG, PNG, WebP
Max. Dateigröße
je 8 MB
Dateien pro Beitrag
2–10
Abmessungen
≥ 320 px breit
Seitenverhältnis
4:5 bis 1.91:1

Beitragstyp REEL

Formate
MP4, MOV
Max. Dateigröße
300 MB
Dateien pro Beitrag
1
Max. Dauer
15 min
Abmessungen
≥ 540 × 960 px, ≤ 1920 px breit
Video-Codecs
H.264, H.265
Bildrate
≤ 60 fps

Beitragstyp VIDEO

Formate
MP4, MOV
Max. Dateigröße
300 MB
Dateien pro Beitrag
1
Max. Dauer
15 min
Abmessungen
320–1920 px breit
Video-Codecs
H.264, H.265
Bildrate
≤ 60 fps

Beitragstyp STORY

Formate
JPEG, PNG, MP4, MOV
Max. Dateigröße
100 MB
Dateien pro Beitrag
1
Max. Dauer
60 s
Abmessungen
≥ 320 px breit
Seitenverhältnis
1:2 bis 1.91:1

Erfahre, wann es live ist

Die Veröffentlichung läuft asynchron. Abonniere post.published und post.failed oder frage GET /v1/posts/:id ab, bis postStatus POSTED oder FAILED ist.

Einmal abonnieren
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.
So sieht jede Zustellung aus
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": "INSTAGRAM" }
}

Jede Zustellung wird mit HMAC-SHA256 in X-Webhook-Signature signiert. post.failed wird nach dem letzten Retry ausgelöst; behebe die Ursache und rufe POST /v1/posts/:id/retry auf. Ein erster Kommentar meldet sich separat mit post.first_comment_posted oder post.first_comment_failed.

Baust du einen KI-Agenten?

Derselbe API-Key steuert einen MCP-Server mit 200+ Tools und eine CLI, sodass ein Agent auf Instagram posten kann, ohne selbst geschriebene HTTP-Aufrufe.

MCP-Server

Füge den Server mit deinem API-Key zu Claude, Cursor oder einem beliebigen MCP-Client hinzu. OAuth funktioniert ebenfalls. Für Instagram ruft der Agent diese Tools mit denselben Feldern wie die REST-Anfrage auf:

  • presign_media_upload
  • validate_post_media
  • create_post
mcp.json
{
  "mcpServers": {
    "so-me-studio": {
      "url": "https://api.so-me.studio/mcp",
      "headers": { "X-API-Key": "sk_live_…" }
    }
  }
}

CLI

Installiere sie mit npm i -g @social-media-scheduler/cli. Sie lädt lokale Dateien für dich hoch und gibt JSON aus, sodass ein Skript oder ein CI-Job einen Instagram-Beitrag mit einem Befehl planen kann.

so-me
so-me posts:create --platform INSTAGRAM --post-type REEL \
  -m ./launch-reel.mp4 \
  -c "Hinter den Kulissen der Launch-Woche" \
  -s 2026-11-03T15:00:00Z \
  --first-comment "#launchwoche #buildinpublic"

API-, CLI- und MCP-Zugriff ist in jedem kostenpflichtigen Tarif enthalten: Lite, Creator, Standard, Advanced und Lifetime. Tarife und Limits ansehen

Weiterlesen

Weitere Plattform-Anleitungen

Ein professionelles Instagram-Konto, Business oder Creator. Instagram erlaubt Apps nicht, auf privaten Konten zu veröffentlichen. Du verbindest das Konto einmal im Dashboard von Social media studio.

Nein. Instagram braucht bei jedem Beitrag ein Foto oder Video, daher schlägt ein reiner Text-Post fehl. Hänge Medien mit fileIds an, und die Medienprüfung läuft, bevor der Beitrag in die Queue kommt.

Ja. Sende postType STORY mit einem Foto oder Video und einem scheduledAt-Zeitpunkt. Die API verlangt weiterhin Text, aber Instagram zeigt bei Stories keine Captions an.

Nein. Du verbindest das Instagram-Konto einmal im Dashboard von Social media studio über die Instagram-Anmeldung. Die Tokens werden bei uns verschlüsselt gespeichert und aktualisiert, und dein Code sendet nur deinen API-Key von Social media studio im Header X-API-Key.

Nein. Der Aufruf kehrt zurück, sobald der Beitrag in der Queue ist. Die Veröffentlichung läuft in einem Worker, der bei Fehlern erneut versucht, also lausche auf post.published und post.failed oder frage GET /v1/posts/:id ab.

Die REST-API, die CLI und der MCP-Server sind in jedem kostenpflichtigen Tarif enthalten: Lite, Creator, Standard, Advanced und Lifetime. Lite, Creator, Standard und Advanced beginnen mit einem 7-Tage-Test (Karte erforderlich), und Lifetime ist eine Einmalzahlung.

Einmal planen.
Überall posten.

Schluss mit dem Tab-Chaos, entwirf, passe an und veröffentliche auf 20 Plattformen aus einem einzigen Kalender.

Per API auf Instagram posten: Reels, Karussells & Stories