Entwickler-API · v1

Dein LinkedIn-Autopilot, jetzt programmierbar.

Eine saubere REST-Schnittstelle über die gesamte Content-Pipeline: Posts erzeugen, planen, veröffentlichen, Analytics lesen, Webhooks empfangen. JSON rein, JSON raus.

Base https://app.tidefall.de/api/v1

Pro Profil isoliert

Ein API-Key gehört zu genau einem LinkedIn-Profil. Er sieht und ändert ausschließlich dessen Daten — niemals die eines anderen.

REST · JSON · versioniert

Vorhersehbare Ressourcen unter /api/v1, Cursor-Pagination, einheitliches Fehler-Envelope und Idempotency-Keys.

Async, ehrlich

Lang laufende Schritte (Bild, Publish) antworten mit 202 — du pollst den Status oder bekommst einen signierten Webhook.

Quickstart

Der erste Call in zwei Minuten.

  1. 1
    Key erstellen

    Im Dashboard unter Settings → Integrations einen API-Key erzeugen. Er wird einmalig angezeigt — sicher ablegen.

  2. 2
    Authentifizieren

    Jeden Request mit dem Header Authorization: Bearer lps_… senden.

  3. 3
    Loslegen

    Mit GET /me prüfen, mit welchem Profil dein Key verbunden ist — dann Posts, Ideen, Analytics.

request
curl https://app.tidefall.de/api/v1/me \
  -H "Authorization: Bearer lps_dein_key"
200 · response
{
  "member": {
    "id": "371707cb-…",
    "display_name": "Luca Ceglie",
    "linkedin_connected": true
  }
}
Referenz

Alle Endpoints auf einen Blick.

Gruppiert nach Ressource. Für Schemas, Beispiele und „Try it" geht es in die interaktive Referenz.

Posts

12 Endpoints

Der komplette Lebenszyklus — vom Entwurf bis zur Veröffentlichung auf LinkedIn.

  • POST /posts
  • GET /posts
  • GET /posts/{id}
  • PATCH /posts/{id}
  • DELETE /posts/{id}
  • POST /posts/{id}/regenerate
  • POST /posts/{id}/images
  • POST /posts/{id}/images/upload
  • POST /posts/{id}/select-image
  • POST /posts/{id}/schedule
  • POST /posts/{id}/publish
  • GET /posts/{id}/analytics

Ideen

7 Endpoints

Content-Ideen finden, recherchieren und in Entwürfe verwandeln.

  • GET /ideas
  • POST /ideas/generate
  • POST /ideas/research
  • POST /ideas/{id}/create-post
  • PATCH /ideas/{id}
  • POST /ideas/{id}/dismiss
  • POST /ideas/{id}/restore

Analytics & Konto

3 Endpoints

Leistung messen und prüfen, mit welchem Profil dein Key verbunden ist.

  • GET /analytics
  • GET /me
  • GET /health

Webhooks

5 Endpoints

Lass dich benachrichtigen, statt zu pollen — signiert und mit Retries.

  • GET /webhooks
  • POST /webhooks
  • GET /webhooks/{id}
  • DELETE /webhooks/{id}
  • GET /webhooks/{id}/deliveries
Async & Webhooks

Erst der Auftrag, dann das Signal.

Bild-Generierung und Veröffentlichung laufen im Hintergrund. Der Call antwortet sofort mit 202 Accepted. Du pollst danach GET /posts/{id} — oder lässt dich per Webhook benachrichtigen.

  • post.published Ein Post wurde auf LinkedIn veröffentlicht.
  • post.publish_failed Eine Veröffentlichung ist endgültig fehlgeschlagen.
  • post.images_ready Bild-Kandidaten sind fertig generiert.
  • idea.created Neue Ideen wurden erzeugt.

Jede Zustellung trägt eine HMAC-Signatur über den Rohbody — so verifizierst du, dass sie wirklich von uns stammt:

POST → dein Endpoint · Header
X-LPS-Event: post.published
X-LPS-Delivery-Id: 9f2c…
X-LPS-Signature: sha256=<hmac(secret, rawBody)>
Verifikation · Node
const sig = "sha256=" + crypto
  .createHmac("sha256", secret)
  .update(rawBody)
  .digest("hex");
// timing-safe vergleichen mit X-LPS-Signature
Fehler

Ein Fehler, ein Format.

Jeder Fehler kommt im selben Envelope — der code ist der Vertrag, die message ein Hinweis.

422 · response
{
  "error": {
    "code": "validation_error",
    "message": "Invalid request body",
    "details": { "idea": "required" }
  }
}
Rate-Limits

Pro Key, pro Endpoint-Bucket. Jede Antwort trägt X-RateLimit-Limit, -Remaining und -Reset. Bei Überschreitung: 429.

Code HTTP Wann
unauthorized 401 Key fehlt, ist ungültig oder widerrufen.
not_found 404 Objekt existiert nicht — oder gehört nicht zu deinem Profil.
validation_error 422 Body/Query ungültig (Details pro Feld).
conflict 409 Zustand passt nicht (z. B. bereits veröffentlicht).
rate_limited 429 Limit des Keys erreicht — später erneut.
internal_error 500 Unerwarteter Serverfehler.

Bereit zum Bauen?

Öffne die interaktive Referenz, probiere jeden Endpoint direkt im Browser — oder hol dir die Maschinen-Spec als OpenAPI 3.1.