---
sidebar:
  order: 1
title: "HTTP-API"
description: "Authentifiziere dich, finde Tools und bestätige Änderungen über die bestehende HTTP-API."
---

Sende Produktanfragen an deinen vertrauenswürdigen Influence-Origin, etwa `https://influence.so`. Die Dokumentationsdomain nimmt keine Produkt-API-Anfragen an. Verwende die folgenden Pfade exakt und ohne Abfrageparameter.

## Erstelle einen API-Schlüssel mit passenden Berechtigungen

Öffne in den [Influence-Einstellungen](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer) Apps und Automatisierungen → API-Schlüssel. Wähle die benötigten Berechtigungen und ein Ablaufdatum. Speichere den einmalig angezeigten Schlüssel als `PUBLISH_API_TOKEN` in deinem Geheimnisspeicher. Sende ihn in `Authorization: Bearer …`, niemals in einer URL, im Anfrageinhalt oder im Chat. Widerrufe ihn, wenn du ihn nicht mehr brauchst.

## Finde Tools und lies Daten

Setze `PUBLISH_API_URL` auf den vertrauenswürdigen Origin. Die Beispiele setzen voraus, dass der Prozess bereits `PUBLISH_API_TOKEN` erhält. `accountList` benötigt `integrations:read`; verwende die Paginierungsfelder für weitere Seiten.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## Anfragepfade

| Methode | Pfad | Zweck |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Listet die mit diesem Zugang verfügbaren Tools. |
| `POST` | `/api/v1/tools/{tool}/call` | Ruft ein lesendes Tool auf. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Bereitet eine konkrete Änderung vor, ohne sie auszuführen. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Bestätigt die vorbereitete Änderung. |
| `POST` | `/api/v1/media/import` | Bestätigt einen vorbereiteten kleinen binären Bild-Upload. |

JSON-Toolanfragen verwenden `Content-Type: application/json` und einen Inhalt nur mit `input`: `{"input":{…}}`. Das Eingabeschema jedes Tools findest du im aktuellen Katalog.

## Bereite Änderungen vor und bestätige sie

1. Sende die exakten fachlichen Eingaben an `/prepare`. Eine erfolgreiche Antwort enthält `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` und optional `summary`.
2. Sende vor Ablauf dieselben Eingaben an `/confirm`. Übergebe den erhaltenen Bestätigungswert in `X-Publish-Confirmation` und einen neuen, vom Client erzeugten Schlüssel in `Idempotency-Key`.
3. Bewahre Eingaben, Bestätigungswert und Schlüssel gemeinsam auf. Nach einer unterbrochenen oder unklaren Bestätigung verwendest du alle drei für dieselbe Anfrage erneut. Bereite keinen Ersatzvorgang vor, um ein unklares Ergebnis zu klären.

Ein Idempotenzschlüssel enthält 16–200 Zeichen aus `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` und `-`. Bestätigungswerte sind undurchsichtige Geheimnisse. Ein an `/call` oder `/prepare` gesendeter Schlüssel reserviert keine bestätigte Änderung.

Die Bestätigung einer Anfrage ist von der Veröffentlichungsfreigabe getrennt. Erstelle und zeige für Veröffentlichungen oder Terminänderungen die vollständige aktuelle Prüfung. Textbeiträge benötigen danach eine neue Zustimmung. Bilder und Videos muss die Person in einer unterstützten Prüfoberfläche oder nach Anmeldung in Influence visuell freigeben. Eine vorbereitete Prüfung veröffentlicht nichts. Lies vor weiteren Aktionen das gespeicherte Ergebnis; `needs_review` verlangt die Klärung des bisherigen Vorgangs, keinen erneuten Versand.

## Behandle Fehler und unklare Ergebnisse

Prüfe HTTP-Status und Antwortinhalt. Erfolg liefert `{"ok":true,"toolName":"…","output":{…}}`. Toolfehler liefern `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}`, auch mit HTTP 200. Transportfehler verwenden `{"error":{"code":"…","message":"…","retryable":false}}` ohne `ok` oder `toolName`.

401 verlangt Authentifizierung: Prüfe Ablauf und Widerruf. Eine fehlende Berechtigung braucht die passende Freigabe, keine wiederholten Anfragen. 503 bedeutet, dass die API in dieser Umgebung nicht verfügbar ist. Beachte Fehler und Wiederholungshinweise. Ein Timeout beweist nicht, dass eine Änderung fehlgeschlagen ist: Bewahre ihre Bestätigungsdaten auf und lies vor erneutem Senden den aktuellen Status. Angenommen, geplant und veröffentlicht sind unterschiedliche Ergebnisse.

## Lade Medien hoch

Nutze für lokale Dateien bevorzugt `uploadMedia` im SDK oder `media:upload` in der CLI. Beide verwenden dieselben mehrteiligen Upload-Tools und behalten einen stabilen `clientKey` für Wiederholungen. Nur ein fertiges Ergebnis mit `assetId` lässt sich anhängen. Für autorisierte HTTPS-Dateireferenzen dient `mediaImport`; ein lokaler Dateipfad ist keine Download-URL.

`POST /api/v1/media/import` unterstützt den bestehenden Transport kleiner Bilder: Bereite `mediaImport` mit dem exakten Upload-Deskriptor vor und sende dieselben Bytes als `application/octet-stream`. Übergebe `X-Publish-Confirmation`, `Idempotency-Key` und `X-Publish-Upload` mit dem URI-kodierten JSON-Deskriptor. Größe und SHA-256 müssen zu den Bytes passen. Die Grenze liegt bei 3 MiB; für größere unterstützte Dateien dient die Upload-Hilfsfunktion. Ein Upload erteilt niemals eine Veröffentlichungsfreigabe.

[API-Referenz öffnen](/de/api-reference) oder [OpenAPI-Spezifikation herunterladen](/specs/influence.openapi.json).
