> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Social-Media-Posting mit Zapier automatisieren

> Erstelle und plane Beiträge in Social media studio aus jedem Zap über die REST API und starte Zaps über signierte Webhooks, wenn Beiträge veröffentlicht werden oder fehlschlagen.

Es gibt bisher **keine native Social-media-studio-App in Zapier**. Beide lassen sich trotzdem über die integrierte App **Webhooks by Zapier** verbinden:

* **Zapier → Social media studio:** Eine Webhooks-by-Zapier-Aktion ruft die REST API auf, um einen Beitrag zu erstellen oder zu planen.
* **Social media studio → Zapier:** Ein Webhooks-by-Zapier-Trigger fängt die Ereignisse ab, die Social media studio sendet (Beitrag veröffentlicht, Beitrag fehlgeschlagen, neuer Kommentar und mehr).

> [!NOTE]
>
> Webhooks by Zapier setzt unter Umständen einen kostenpflichtigen Zapier-Tarif voraus. Prüfe deinen Zapier-Tarif, bevor du loslegst. Auf Seiten von Social media studio benötigt die REST API einen **Standard**-, **Advanced**- oder **Lifetime**-Tarif (Lite enthält sie nicht). Wie viele Webhook-Endpunkte du anlegen kannst, hängt von deinem Tarif ab; siehe [Webhooks-Übersicht](/de/webhooks/overview.md).

## Bevor du startest

**1. API-Schlüssel erstellen**

Öffne in Social media studio **Einstellungen → API** ([app.so-me.studio/settings?tab=api](https://app.so-me.studio/settings?tab=api)) und erstelle einen Schlüssel. Er beginnt mit `sk_live_` und wird nur einmal angezeigt. Siehe [Authentifizierung](/de/authentication.md).

**2. Konto-IDs ermitteln (optional)**

Wenn du mehr als ein Konto derselben Plattform verbunden hast, muss jeder Beitrag angeben, welches verwendet werden soll. Liste deine Konten einmal auf und notiere dir die `id` jedes Kontos:

```bash theme={null}
curl https://api.so-me.studio/v1/accounts \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
```

Bei genau einem Konto pro Plattform kannst du `accountId` weglassen.

## Einen Beitrag aus einem Zap erstellen oder planen

Füge einen Aktionsschritt hinzu: **Webhooks by Zapier → POST**.

| Feld | Wert |
| - | - |
| URL | `https://api.so-me.studio/v1/posts` |
| Payload Type | `json` |
| Data | Eine Zeile pro Body-Feld (Tabelle unten), aus vorherigen Schritten zugeordnet |
| Headers | `X-API-Key` → dein `sk_live_...`-Schlüssel |

Zapier baut das JSON für dich und maskiert es, daher ist Text mit Anführungszeichen oder Zeilenumbrüchen unproblematisch.

| Body-Feld | Erforderlich | Wert |
| - | - | - |
| `text` | Ja | Der Beitragstext. |
| `socialMedia` | Ja | Eine Plattform pro Anfrage: `TWITTER`, `LINKEDIN`, `LINKEDIN_PAGE`, `FACEBOOK`, `INSTAGRAM`, `THREADS`, `TIKTOK`, `YOUTUBE`, `PINTEREST`, `BLUESKY`, `MASTODON`, `REDDIT`, `GOOGLE_MY_BUSINESS`, `WORDPRESS`, `DEV_TO`, `DRIBBBLE`, `DISCORD` oder `SLACK`. Auf `WHATSAPP` und `TELEGRAM` kann nicht veröffentlicht werden. |
| `postType` | Ja | `TEXT`, `IMAGE`, `MULTIPLE_IMAGES`, `VIDEO`, `CAROUSEL`, `REEL` oder `STORY`. |
| `scheduledAt` | Nein | Zeitangabe nach ISO 8601, zum Beispiel `2026-11-02T09:00:00Z`. Lässt du sie weg, wird sofort veröffentlicht. Der Zapier-Schritt **Formatter → Date / Time → Format** kann ein Datum in dieses Format umwandeln. |
| `accountId` | Bei Bedarf | Die Konto-`id` aus `GET /v1/accounts`. Erforderlich, wenn auf dieser Plattform mehr als ein Konto verbunden ist; andernfalls antwortet die API mit `400` und der Liste zur Auswahl. |
| `firstComment` | Nein | Ein Kommentar, der direkt nach der Veröffentlichung unter den Beitrag gepostet wird (Facebook, Instagram, X, LinkedIn, LinkedIn Page, Threads, YouTube). |
| `fileIds` | Nein | IDs von Mediathek-Dateien, die angehängt werden sollen, als Liste. Lade Medien zuerst in Social media studio hoch oder lies den [Schnellstart](/de/quickstart.md#upload-media) für vorsignierte Uploads. |

Um auf mehreren Plattformen zu veröffentlichen, füge pro Plattform einen POST-Schritt hinzu.

Die entsprechende Anfrage zum Testen außerhalb von Zapier:

```bash theme={null}
curl -X POST https://api.so-me.studio/v1/posts \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "New on the blog: how we plan a month of posts in an afternoon",
    "socialMedia": "LINKEDIN",
    "postType": "TEXT",
    "scheduledAt": "2026-11-02T09:00:00Z"
  }'
```

Ein erfolgreicher Aufruf liefert `201` mit dem Beitrag zurück, einschließlich seiner `id` und `postStatus: "SCHEDULED"`. Ordne die `id` späteren Schritten zu, wenn du den Beitrag aktualisieren oder löschen willst.

> **Verschachtelte Felder: TikTok-Optionen und Threads**
>
> TikTok-Beiträge brauchen `tiktok.privacyLevel`, und Threads nutzen ein `threadParts`-Array. Die POST-Aktion sendet flache Schlüssel-Wert-Daten, verwende dafür daher **Webhooks by Zapier → Custom Request** mit der Methode `POST`, derselben URL und denselben Headern plus `Content-Type: application/json`, und gib den JSON-Body unter **Data** ein:
>
> ```json theme={null}
> {
>   "text": "First post of the thread",
>   "socialMedia": "TWITTER",
>   "postType": "TEXT",
>   "threadParts": [{ "text": "Second post" }, { "text": "Third post" }]
> }
> ```
>
> Custom Request sendet den Body so, wie du ihn eingibst, und maskiert zugeordnete Werte nicht. Ein zugeordnetes Feld mit einem doppelten Anführungszeichen oder einem Zeilenumbruch erzeugt ungültiges JSON, das die API mit `400` ablehnt.

> **Fehler**
>
> | Status | Bedeutung |
> | - | - |
> | `400` | Ein Feld ist ungültig, oder `accountId` fehlt, obwohl mehrere Konten auf dieser Plattform verbunden sind. Die Meldung benennt das Problem. |
> | `401` | Der API-Schlüssel fehlt, ist falsch oder wurde widerrufen. |
> | `403` | Dein Tarif enthält die REST API nicht, oder ein Tariflimit wurde erreicht. |
> | `429` | Rate Limit erreicht. Das Limit gilt pro Workspace und hängt von deinem Tarif ab. |

## Einen Zap durch ein Ereignis aus Social media studio starten

**1. Trigger in Zapier erstellen**

Wähle **Webhooks by Zapier → Catch Hook** als Trigger und kopiere die Webhook-URL, die Zapier dir gibt.

**2. Diese URL in Social media studio abonnieren**

Öffne **Einstellungen → Webhooks** ([app.so-me.studio/settings?tab=webhooks](https://app.so-me.studio/settings?tab=webhooks)), füge einen Endpunkt mit der Zapier-URL hinzu und wähle die Ereignisse aus. Oder lege ihn über die API an:

```bash theme={null}
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
    "categories": ["post"],
    "events": ["post.published", "post.failed"],
    "description": "Zapier"
  }'
```

Die Antwort enthält das Signatur-`secret` des Abonnements.

**3. Testereignis senden**

Klicke unter Einstellungen → Webhooks beim Abonnement auf **Testereignis senden** und anschließend in Zapier auf **Test trigger**, damit Zapier die Felder kennenlernt.

Jede Zustellung ist ein JSON-`POST` mit diesem Umschlag:

```json theme={null}
{
  "event": "post.published",
  "category": "post",
  "timestamp": "2026-11-02T09:00:04.000Z",
  "data": { "postId": "6f1c2a9e-...", "platform": "LINKEDIN" }
}
```

In Zapier erscheinen die Felder als `Event`, `Data Post Id`, `Data Platform` und so weiter. Der Block `data` enthält IDs statt des vollständigen Inhalts; für einen Beitrag rufst du `GET https://api.so-me.studio/v1/posts/{postId}` mit einem **Webhooks by Zapier → GET**-Schritt auf, um seinen Text, den Live-Link (`shareUrl`) oder den `failureReason` zu lesen.

Nützliche Ereignisse für Zaps sind unter anderem `post.published`, `post.failed`, `post.scheduled`, `inbox.message_received`, `inbox.comment_received`, `social.account_disconnected` und `quota.limit_reached`. Die vollständige Liste findest du in der [Webhooks-Übersicht](/de/webhooks/overview.md), Beispiel-Payloads im [Payload-Format](/de/webhooks/payloads.md).

> [!WARNING]
>
> Jede Zustellung trägt einen `X-Webhook-Signature`-Header: ein hexadezimaler HMAC-SHA256 des rohen Bodys, mit dem Secret des Abonnements als Schlüssel. Catch Hook prüft ihn nicht, behandle die Zapier-URL daher wie ein Geheimnis. Zum Verifizieren nutzt du **Catch Raw Hook** (reicht den unverarbeiteten Body und die Header weiter) und einen **Code by Zapier**-Schritt, der den HMAC des rohen Bodys berechnet und mit dem Header vergleicht. Details: [Signaturprüfung](/de/webhooks/payloads.md#signature-verification).

Social media studio wartet 10 Sekunden auf eine Antwort und wiederholt eine fehlgeschlagene Zustellung bis zu 4-mal. Ein Abonnement, das 10-mal in Folge fehlschlägt, wird deaktiviert; aktiviere es unter Einstellungen → Webhooks wieder.

## Weitere Tools

* [n8n](/de/integrations/n8n.md) hat einen Community-Node und fertige Workflow-Vorlagen.
* [Make](/de/integrations/make.md) funktioniert wie Zapier, mit seinen HTTP- und Webhooks-Modulen.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.