dealsky.ioDocs
Zur App
API-Referenz

Dauerläufe

LinkedIn-Dauerläufe (Signale): Einstellungen, gefundene Personen und Kontingent lesen

#

LinkedIn-Dauerläufe auflisten

GET/v1/engage/flows
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Die Dauerläufe der Seite LinkedIn Dauerlauf, neueste zuerst, mit denselben Angaben wie die Kacheln: Status, Konto, aktive Signalquellen, Zielgruppe, Zielliste, Kampagne, Tagesziel und Kennzahlen. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Query-Parameter

  • limitintegerab 1bis 25

    Einträge pro Seite (Standard und höchstens 25, je Dauerlauf werden Kennzahlen gezählt)

  • cursorstringmax. 200 Zeichen

    Wert aus meta.next_cursor der vorigen Seite

  • statusListe aus string

    Ein oder mehrere Status, kommagetrennt

    draft active paused throttled exhausted error
  • account_idstring (uuid)

    Nur Dauerläufe dieses LinkedIn-Kontos

Felder der Antwort
  • idstring (uuid)

    ID des Dauerlaufs

  • namestring

    Name des Dauerlaufs

  • statusstring

    draft: Entwurf, läuft nicht. active: läuft. paused: pausiert. throttled: von LinkedIn gebremst. exhausted: keine neuen Quellen mehr. error: gestoppt, Grund in status_message.

    draft active paused throttled exhausted error
  • linkedin_accountobject

    LinkedIn-Konto, mit dem der Dauerlauf sucht

    Felder anzeigen
    • idstring (uuid)

      Siehe GET /v1/linkedin/accounts/{id}

    • namestring, kann null sein

      Anzeigename des Kontos, null, wenn nicht bekannt

  • source_kindsListe aus string

    Aktive Signalquellen. keyword_posts: Reaktionen auf ein Thema. keyword_authors: Verfasser zu einem Thema. profile_engagers: Reaktionen auf bestimmte Profile. company_engagers: Reaktionen auf Unternehmensseiten. relations: eigene Kontakte reaktivieren. hiring_companies: Firmen, die einstellen. icp_search: direkt nach Zielgruppe suchen. profile_followers: Follower eines Profils. job_posts: Stellenanzeigen als Signal.

    keyword_posts keyword_authors profile_engagers company_engagers relations hiring_companies icp_search profile_followers job_posts
  • icpobject

    Zielgruppe wie im Abschnitt Zielgruppe der App

    Felder anzeigen
    • modestring

      Strenge der KI-Prüfung: precision (streng), broad (großzügig), off (keine Prüfung, jeder Kontakt wird behalten)

      precision broad off
    • descriptionstring, kann null sein

      Zielgruppe in eigenen Worten (Maßstab der KI-Bewertung)

    • offerstring, kann null sein

      Eigenes Angebot, gegen das die KI die Person liest

    • titlesListe aus string

      Jobtitel der Zielgruppe

    • keywordsListe aus string

      Stichwörter im Profil der Zielperson

    • industriesListe aus string

      Branchen

    • locationsListe aus string

      Orte und Regionen

    • company_sizesListe aus string

      Firmengrößen nach Mitarbeitern: A = 1, B = 2 bis 10, C = 11 bis 50, D = 51 bis 200, E = 201 bis 500, F = 501 bis 1.000, G = 1.001 bis 5.000, H = 5.001 bis 10.000, I = mehr als 10.000

      A B C D E F G H I
    • profile_languagestring, kann null sein

      Profilsprache (de, en, fr, es, it, nl, pt, pl, tr)

    • required_keywordsListe aus string

      Pflicht-Stichwörter aus einer früheren Fassung. In der App nicht mehr einstellbar, filtern bei Altbeständen aber weiter.

    • required_keywords_modestring

      any: eines der Pflicht-Stichwörter reicht. all: alle müssen vorkommen.

      any all
    • excluded_keywordsListe aus string

      Ausschluss-Stichwörter: wer sie im Profil hat, wird aussortiert

    • include_connectionsboolean

      true: schon mit dem Konto vernetzte Personen werden übernommen. false (Standard): sie werden aussortiert.

  • target_listobject, kann null sein

    Lead-Liste, in die übernommene Kontakte kommen. null ohne Zielliste

    Felder anzeigen
    • idstring (uuid)

      ID der Zielliste

    • namestring, kann null sein

      Name der Zielliste

  • campaignobject, kann null sein

    Verknüpfte Kampagne. null, wenn übernommene Kontakte in keine Kampagne gehen

    Felder anzeigen
    • idstring (uuid)

      ID der Kampagne, in die übernommene Kontakte automatisch eingeschrieben werden

    • namestring, kann null sein

      Name der Kampagne, in die übernommene Kontakte automatisch eingeschrieben werden

  • daily_lead_targetinteger

    Angepeilte neue Kontakte pro Tag

  • statsobject

    Zähler des Dauerlaufs, wie die App sie am Dauerlauf zeigt

    Felder anzeigen
    • imported_todayinteger

      Heute übernommene Kontakte (UTC-Tag, wie das Tagesziel)

    • imported_totalinteger

      Alle je übernommenen Kontakte

    • imported_7dinteger

      Übernommen, in den letzten 7 Tagen gefunden

    • matched_7dinteger

      Passend bewertet, in den letzten 7 Tagen gefunden

    • rejected_7dinteger

      Aussortiert, in den letzten 7 Tagen gefunden

    • backloginteger

      Rückstau: passend bewertete Kontakte, die auf einen freien Platz im Tagesziel warten (ohne Zeitfenster). Ab dem Doppelten des Tagesziels sucht der Dauerlauf nichts Neues, bis der Rückstau abgebaut ist.

    • salutation_pendinginteger

      Kontakte mit unsicherer Anrede. Sie gehen erst nach einer Entscheidung in der App in Liste und Kampagne.

    • profile_checks_pendinginteger

      Personen, deren Profil noch besucht wird, um Position oder Ort zu prüfen

    • pending_companiesinteger

      Von „Firmen, die einstellen“ gefundene Firmen, deren Entscheider der nächste Lauf sucht

    • sources_activeinteger

      Aktive Signalquellen

  • next_run_atstring (date-time), kann null sein

    Nächster Lauf: früheste Fälligkeit der aktiven Quellen. Leer, wenn der Dauerlauf nicht aktiv ist.

  • last_run_atstring (date-time), kann null sein

    Letzter Lauf des Dauerlaufs, null vor dem ersten Lauf

  • search_throttled_untilstring (date-time), kann null sein

    Suche gebremst bis (LinkedIn-Grenze erreicht)

  • status_messagestring, kann null sein

    Hinweis oder Stopp-Grund, wie ihn die App am Dauerlauf zeigt

  • created_bystring (uuid), kann null sein

    Team-Mitglied, das den Dauerlauf angelegt hat (siehe /v1/team)

  • created_atstring (date-time)

    Angelegt am

  • updated_atstring (date-time)

    Zuletzt geändert am

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "8d2f4a1c-3b5e-4f6a-9c7d-1e2f3a4b5c6d",
      "name": "Geschäftsführer Logistik NRW",
      "status": "active",
      "linkedin_account": {
        "id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
        "name": "Anna Beispiel"
      },
      "source_kinds": [
        "keyword_posts",
        "icp_search"
      ],
      "icp": {
        "mode": "precision",
        "description": "Geschäftsführer und Inhaber von Speditionen mit 20 bis 500 Mitarbeitern in Nordrhein-Westfalen",
        "offer": "Wir digitalisieren die Disposition von Speditionen, ohne dass das Team neue Software lernen muss.",
        "titles": [
          "Geschäftsführer",
          "Inhaber",
          "Leiter Disposition"
        ],
        "keywords": [
          "Spedition",
          "Logistik"
        ],
        "industries": [
          "Transport und Logistik"
        ],
        "locations": [
          "Nordrhein-Westfalen, Deutschland"
        ],
        "company_sizes": [
          "C",
          "D",
          "E"
        ],
        "profile_language": "de",
        "required_keywords": [],
        "required_keywords_mode": "any",
        "excluded_keywords": [
          "Student",
          "Recruiter"
        ],
        "include_connections": false
      },
      "target_list": {
        "id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
        "name": "Dauerlauf Logistik NRW"
      },
      "campaign": {
        "id": "ca6b1f2e-3d4c-4b5a-8e9f-0a1b2c3d4e5f",
        "name": "Geschäftsführer Logistik"
      },
      "daily_lead_target": 15,
      "stats": {
        "imported_today": 6,
        "imported_total": 214,
        "imported_7d": 52,
        "matched_7d": 18,
        "rejected_7d": 140,
        "backlog": 9,
        "salutation_pending": 2,
        "profile_checks_pending": 3,
        "pending_companies": 0,
        "sources_active": 2
      },
      "next_run_at": "2026-10-18T10:40:00+00:00",
      "last_run_at": "2026-10-18T10:30:12+00:00",
      "search_throttled_until": null,
      "status_message": null,
      "created_by": "7f1e2d3c-4b5a-4968-8776-5a4b3c2d1e0f",
      "created_at": "2026-09-02T08:15:00+00:00",
      "updated_at": "2026-10-18T10:30:12+00:00"
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}
#

Einen LinkedIn-Dauerlauf abrufen

GET/v1/engage/flows/{id}
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Wie die Detailseite eines Dauerlaufs: alle Angaben der Liste, dazu alle Signalquellen mit Einstellungen, Takt und Auffälligkeiten sowie das heutige Kontingent des LinkedIn-Kontos. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Dauerlaufs

Felder der Antwort
  • idstring (uuid)

    ID des Dauerlaufs

  • namestring

    Name des Dauerlaufs

  • statusstring

    draft: Entwurf, läuft nicht. active: läuft. paused: pausiert. throttled: von LinkedIn gebremst. exhausted: keine neuen Quellen mehr. error: gestoppt, Grund in status_message.

    draft active paused throttled exhausted error
  • linkedin_accountobject

    LinkedIn-Konto, mit dem der Dauerlauf sucht

    Felder anzeigen
    • idstring (uuid)

      Siehe GET /v1/linkedin/accounts/{id}

    • namestring, kann null sein

      Anzeigename des Kontos, null, wenn nicht bekannt

  • source_kindsListe aus string

    Aktive Signalquellen. keyword_posts: Reaktionen auf ein Thema. keyword_authors: Verfasser zu einem Thema. profile_engagers: Reaktionen auf bestimmte Profile. company_engagers: Reaktionen auf Unternehmensseiten. relations: eigene Kontakte reaktivieren. hiring_companies: Firmen, die einstellen. icp_search: direkt nach Zielgruppe suchen. profile_followers: Follower eines Profils. job_posts: Stellenanzeigen als Signal.

    keyword_posts keyword_authors profile_engagers company_engagers relations hiring_companies icp_search profile_followers job_posts
  • icpobject

    Zielgruppe wie im Abschnitt Zielgruppe der App

    Felder anzeigen
    • modestring

      Strenge der KI-Prüfung: precision (streng), broad (großzügig), off (keine Prüfung, jeder Kontakt wird behalten)

      precision broad off
    • descriptionstring, kann null sein

      Zielgruppe in eigenen Worten (Maßstab der KI-Bewertung)

    • offerstring, kann null sein

      Eigenes Angebot, gegen das die KI die Person liest

    • titlesListe aus string

      Jobtitel der Zielgruppe

    • keywordsListe aus string

      Stichwörter im Profil der Zielperson

    • industriesListe aus string

      Branchen

    • locationsListe aus string

      Orte und Regionen

    • company_sizesListe aus string

      Firmengrößen nach Mitarbeitern: A = 1, B = 2 bis 10, C = 11 bis 50, D = 51 bis 200, E = 201 bis 500, F = 501 bis 1.000, G = 1.001 bis 5.000, H = 5.001 bis 10.000, I = mehr als 10.000

      A B C D E F G H I
    • profile_languagestring, kann null sein

      Profilsprache (de, en, fr, es, it, nl, pt, pl, tr)

    • required_keywordsListe aus string

      Pflicht-Stichwörter aus einer früheren Fassung. In der App nicht mehr einstellbar, filtern bei Altbeständen aber weiter.

    • required_keywords_modestring

      any: eines der Pflicht-Stichwörter reicht. all: alle müssen vorkommen.

      any all
    • excluded_keywordsListe aus string

      Ausschluss-Stichwörter: wer sie im Profil hat, wird aussortiert

    • include_connectionsboolean

      true: schon mit dem Konto vernetzte Personen werden übernommen. false (Standard): sie werden aussortiert.

  • target_listobject, kann null sein

    Lead-Liste, in die übernommene Kontakte kommen. null ohne Zielliste

    Felder anzeigen
    • idstring (uuid)

      ID der Zielliste

    • namestring, kann null sein

      Name der Zielliste

  • campaignobject, kann null sein

    Verknüpfte Kampagne. null, wenn übernommene Kontakte in keine Kampagne gehen

    Felder anzeigen
    • idstring (uuid)

      ID der Kampagne, in die übernommene Kontakte automatisch eingeschrieben werden

    • namestring, kann null sein

      Name der Kampagne, in die übernommene Kontakte automatisch eingeschrieben werden

  • daily_lead_targetinteger

    Angepeilte neue Kontakte pro Tag

  • statsobject

    Zähler des Dauerlaufs, wie die App sie am Dauerlauf zeigt

    Felder anzeigen
    • imported_todayinteger

      Heute übernommene Kontakte (UTC-Tag, wie das Tagesziel)

    • imported_totalinteger

      Alle je übernommenen Kontakte

    • imported_7dinteger

      Übernommen, in den letzten 7 Tagen gefunden

    • matched_7dinteger

      Passend bewertet, in den letzten 7 Tagen gefunden

    • rejected_7dinteger

      Aussortiert, in den letzten 7 Tagen gefunden

    • backloginteger

      Rückstau: passend bewertete Kontakte, die auf einen freien Platz im Tagesziel warten (ohne Zeitfenster). Ab dem Doppelten des Tagesziels sucht der Dauerlauf nichts Neues, bis der Rückstau abgebaut ist.

    • salutation_pendinginteger

      Kontakte mit unsicherer Anrede. Sie gehen erst nach einer Entscheidung in der App in Liste und Kampagne.

    • profile_checks_pendinginteger

      Personen, deren Profil noch besucht wird, um Position oder Ort zu prüfen

    • pending_companiesinteger

      Von „Firmen, die einstellen“ gefundene Firmen, deren Entscheider der nächste Lauf sucht

    • sources_activeinteger

      Aktive Signalquellen

  • next_run_atstring (date-time), kann null sein

    Nächster Lauf: früheste Fälligkeit der aktiven Quellen. Leer, wenn der Dauerlauf nicht aktiv ist.

  • last_run_atstring (date-time), kann null sein

    Letzter Lauf des Dauerlaufs, null vor dem ersten Lauf

  • search_throttled_untilstring (date-time), kann null sein

    Suche gebremst bis (LinkedIn-Grenze erreicht)

  • status_messagestring, kann null sein

    Hinweis oder Stopp-Grund, wie ihn die App am Dauerlauf zeigt

  • created_bystring (uuid), kann null sein

    Team-Mitglied, das den Dauerlauf angelegt hat (siehe /v1/team)

  • created_atstring (date-time)

    Angelegt am

  • updated_atstring (date-time)

    Zuletzt geändert am

  • sourcesListe aus object

    Alle Signalquellen, auch pausierte

    Felder anzeigen
    • idstring (uuid)

      ID der Signalquelle

    • kindstring

      keyword_posts: Reaktionen auf ein Thema. keyword_authors: Verfasser zu einem Thema. profile_engagers: Reaktionen auf bestimmte Profile. company_engagers: Reaktionen auf Unternehmensseiten. relations: eigene Kontakte reaktivieren. hiring_companies: Firmen, die einstellen. icp_search: direkt nach Zielgruppe suchen. profile_followers: Follower eines Profils. job_posts: Stellenanzeigen als Signal.

      keyword_posts keyword_authors profile_engagers company_engagers relations hiring_companies icp_search profile_followers job_posts
    • statusstring

      active: läuft mit. paused: pausiert. exhausted: Schlafphase, meldet sich von selbst zurück. error: gestoppt.

      active paused exhausted error
    • configobject

      Einstellungen der Quelle wie im Assistenten der App, je Art verschieden (z. B. keywords, profiles, companies, location). Interne Laufdaten (Cursor, bekannte Beiträge) sind nicht enthalten.

    • next_run_atstring (date-time), kann null sein

      Fälligkeit. Zählt nur, solange Quelle und Dauerlauf aktiv sind.

    • last_run_atstring (date-time), kann null sein

      Letzter Lauf dieser Quelle, null vor dem ersten Lauf

    • consecutive_failuresinteger

      Fehlversuche in Folge; danach wartet die Quelle länger

    • consecutive_empty_runsinteger

      Läufe ohne Neues in Folge; danach schaut die Quelle seltener nach

    • errorstring, kann null sein

      Letzte Auffälligkeit der Quelle, wie in der App

  • quotaobject

    Heutiges LinkedIn-Kontingent des Kontos, das der Dauerlauf nutzt

    Felder anzeigen
    • account_idstring (uuid)

      LinkedIn-Konto. Das Kontingent gilt je Konto, alle Dauerläufe des Kontos teilen es.

    • datestring (date)

      Tag der Zähler (UTC)

    • readsobject

      Lese-Abrufe bei LinkedIn (Reaktionen und Kommentare)

      Felder anzeigen
      • usedinteger

        heute verbraucht, alle Wege zusammen

      • limitinteger

        Tagesgrenze

      • background_usedinteger

        davon durch Dauerläufe im Hintergrund

      • background_limitinteger

        Grenze für Dauerläufe im Hintergrund, innerhalb der Tagesgrenze

    • search_readsobject

      Suchtreffer, geteilt mit der LinkedIn-Suche der App

      Felder anzeigen
      • usedinteger

        heute verbraucht, alle Wege zusammen

      • limitinteger

        Tagesgrenze

      • background_usedinteger

        davon durch Dauerläufe im Hintergrund

      • background_limitinteger

        Grenze für Dauerläufe im Hintergrund, innerhalb der Tagesgrenze

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING404 NOT_FOUND429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "id": "8d2f4a1c-3b5e-4f6a-9c7d-1e2f3a4b5c6d",
    "name": "Geschäftsführer Logistik NRW",
    "status": "active",
    "linkedin_account": {
      "id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
      "name": "Anna Beispiel"
    },
    "source_kinds": [
      "keyword_posts",
      "icp_search"
    ],
    "icp": {
      "mode": "precision",
      "description": "Geschäftsführer und Inhaber von Speditionen mit 20 bis 500 Mitarbeitern in Nordrhein-Westfalen",
      "offer": "Wir digitalisieren die Disposition von Speditionen, ohne dass das Team neue Software lernen muss.",
      "titles": [
        "Geschäftsführer",
        "Inhaber",
        "Leiter Disposition"
      ],
      "keywords": [
        "Spedition",
        "Logistik"
      ],
      "industries": [
        "Transport und Logistik"
      ],
      "locations": [
        "Nordrhein-Westfalen, Deutschland"
      ],
      "company_sizes": [
        "C",
        "D",
        "E"
      ],
      "profile_language": "de",
      "required_keywords": [],
      "required_keywords_mode": "any",
      "excluded_keywords": [
        "Student",
        "Recruiter"
      ],
      "include_connections": false
    },
    "target_list": {
      "id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
      "name": "Dauerlauf Logistik NRW"
    },
    "campaign": {
      "id": "ca6b1f2e-3d4c-4b5a-8e9f-0a1b2c3d4e5f",
      "name": "Geschäftsführer Logistik"
    },
    "daily_lead_target": 15,
    "stats": {
      "imported_today": 6,
      "imported_total": 214,
      "imported_7d": 52,
      "matched_7d": 18,
      "rejected_7d": 140,
      "backlog": 9,
      "salutation_pending": 2,
      "profile_checks_pending": 3,
      "pending_companies": 0,
      "sources_active": 2
    },
    "next_run_at": "2026-10-18T10:40:00+00:00",
    "last_run_at": "2026-10-18T10:30:12+00:00",
    "search_throttled_until": null,
    "status_message": null,
    "created_by": "7f1e2d3c-4b5a-4968-8776-5a4b3c2d1e0f",
    "created_at": "2026-09-02T08:15:00+00:00",
    "updated_at": "2026-10-18T10:30:12+00:00",
    "sources": [
      {
        "id": "5a6b7c8d-9e0f-4a1b-8c2d-3e4f5a6b7c8d",
        "kind": "keyword_posts",
        "status": "active",
        "config": {
          "keywords": [
            "Disposition",
            "Spedition digitalisieren"
          ],
          "sort_by": "date",
          "include_reactions": true,
          "include_comments": true,
          "max_posts_per_run": 2
        },
        "next_run_at": "2026-10-18T10:40:00+00:00",
        "last_run_at": "2026-10-18T10:30:12+00:00",
        "consecutive_failures": 0,
        "consecutive_empty_runs": 1,
        "error": null
      }
    ],
    "quota": {
      "account_id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
      "date": "2026-10-18",
      "reads": {
        "used": 23,
        "limit": 80,
        "background_used": 17,
        "background_limit": 40
      },
      "search_reads": {
        "used": 310,
        "limit": 900,
        "background_used": 120,
        "background_limit": 250
      }
    }
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}
#

Treffer eines LinkedIn-Dauerlaufs auflisten

GET/v1/engage/flows/{id}/hits
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Die Personen, die der Dauerlauf gefunden hat, neueste zuerst, wie die Reiter Leads und Aussortiert der Detailseite. Filter decision wie die Auswahl in der App (z. B. imported für Leads, rejected für Aussortiert). Angaben zur Person nur so weit, wie die App sie zeigt: Name, Headline, Firma, Profil-Link, Profilbild und verknüpfter Lead. Interne LinkedIn-Kennungen der Person, KI-Punktwert und erkannte Absicht gibt die API nicht heraus. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Dauerlaufs

Query-Parameter

  • limitintegerab 1bis 100

    Einträge pro Seite (Standard 25, höchstens 100)

  • cursorstringmax. 200 Zeichen

    Wert aus meta.next_cursor der vorigen Seite

  • decisionListe aus string

    Eine oder mehrere Entscheidungen, kommagetrennt

    pending matched rejected duplicate excluded blocked_topic imported needs_salutation connected
Felder der Antwort
  • idstring (uuid)

    ID des Treffers

  • decisionstring

    imported: übernommen (Reiter Leads). matched: passend, wartet auf einen Platz im Tagesziel. needs_salutation: Anrede unsicher, wartet auf Entscheidung. rejected: von der KI aussortiert. duplicate: schon als Lead vorhanden. excluded: Ausschlussliste oder von Hand ausgeschlossen. blocked_topic: Thema gesperrt. connected: schon mit dem Konto vernetzt. pending: noch nicht bewertet.

    pending matched rejected duplicate excluded blocked_topic imported needs_salutation connected
  • reasonstring, kann null sein

    Begründung der KI-Bewertung im Wortlaut, wie in der Spalte „Begründung im Wortlaut“

  • manual_decisionstring, kann null sein

    Von Hand korrigiert: promoted = trotz Aussortierung übernommen, excluded = von Hand ausgeschlossen. Leer: die KI hat entschieden.

    promoted excluded
  • manual_atstring (date-time), kann null sein

    Zeitpunkt der Korrektur von Hand, null ohne manual_decision

  • source_kindstring, kann null sein

    Signalquelle, die die Person gefunden hat. Leer bei Altzeilen ohne Quellenbezug.

    keyword_posts keyword_authors profile_engagers company_engagers relations hiring_companies icp_search profile_followers job_posts
  • created_atstring (date-time)

    Gefunden am

  • decided_atstring (date-time), kann null sein

    Zeitpunkt der Entscheidung, bei imported der Übernahme

  • personobject

    Angaben zur Person, so weit die App sie in der Trefferliste zeigt

    Felder anzeigen
    • namestring, kann null sein

      Name der Person, null, wenn nicht bekannt

    • headlinestring, kann null sein

      LinkedIn-Headline

    • companystring, kann null sein

      Firma der Person, null, wenn nicht bekannt

    • profile_urlstring, kann null sein

      LinkedIn-Profil

    • avatar_urlstring, kann null sein

      Profilbild aus dem Profil-Cache, leer wenn keins vorliegt

    • lead_idstring (uuid), kann null sein

      Lead, sobald die Person übernommen wurde oder schon Lead war (siehe GET /v1/leads/{id})

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING404 NOT_FOUND429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/hits" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/hits", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/hits",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
      "decision": "imported",
      "reason": "Geschäftsführer einer Spedition mit 80 Mitarbeitern, passt zur Zielgruppe.",
      "manual_decision": null,
      "manual_at": null,
      "source_kind": "keyword_posts",
      "created_at": "2026-10-18T09:12:40+00:00",
      "decided_at": "2026-10-18T09:20:03+00:00",
      "person": {
        "name": "Jonas Beispiel",
        "headline": "Geschäftsführer bei Beispiel Logistik GmbH",
        "company": "Beispiel Logistik GmbH",
        "profile_url": "https://www.linkedin.com/in/jonas-beispiel",
        "avatar_url": "https://imagedelivery.net/beispiel/linkedin-avatar-jonas/public",
        "lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10"
      }
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}
#

Heutiges Kontingent eines LinkedIn-Dauerlaufs

GET/v1/engage/flows/{id}/quota
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Wie der Kasten Heutiges Kontingent im Reiter Aktivität: Lese-Abrufe und Suchtreffer des LinkedIn-Kontos am heutigen Tag (UTC), jeweils gesamt und der Anteil der Dauerläufe, gegen die Tagesgrenzen. Das Kontingent gilt je Konto, alle Dauerläufe des Kontos und die LinkedIn-Suche teilen es. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Dauerlaufs

Felder der Antwort
  • account_idstring (uuid)

    LinkedIn-Konto. Das Kontingent gilt je Konto, alle Dauerläufe des Kontos teilen es.

  • datestring (date)

    Tag der Zähler (UTC)

  • readsobject

    Lese-Abrufe bei LinkedIn (Reaktionen und Kommentare)

    Felder anzeigen
    • usedinteger

      heute verbraucht, alle Wege zusammen

    • limitinteger

      Tagesgrenze

    • background_usedinteger

      davon durch Dauerläufe im Hintergrund

    • background_limitinteger

      Grenze für Dauerläufe im Hintergrund, innerhalb der Tagesgrenze

  • search_readsobject

    Suchtreffer, geteilt mit der LinkedIn-Suche der App

    Felder anzeigen
    • usedinteger

      heute verbraucht, alle Wege zusammen

    • limitinteger

      Tagesgrenze

    • background_usedinteger

      davon durch Dauerläufe im Hintergrund

    • background_limitinteger

      Grenze für Dauerläufe im Hintergrund, innerhalb der Tagesgrenze

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING404 NOT_FOUND429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/quota" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/quota", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/quota",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "account_id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
    "date": "2026-10-18",
    "reads": {
      "used": 23,
      "limit": 80,
      "background_used": 17,
      "background_limit": 40
    },
    "search_reads": {
      "used": 310,
      "limit": 900,
      "background_used": 120,
      "background_limit": 250
    }
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}
#

Lauf-Protokoll eines LinkedIn-Dauerlaufs

GET/v1/engage/flows/{id}/activity
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Wie das Lauf-Protokoll im Reiter Aktivität der Detailseite: eine Zeile je Lauf und Signalquelle, neueste zuerst, ausdrücklich auch Läufe ohne Treffer. Je Lauf: geprüfte Personen, in die Zielliste übernommen, an die Kampagne übergeben, Anrede offen, wartend auf einen Platz im Tagesziel, aussortiert, dazu der Hinweis des Laufs im Klartext und ein Fehler, falls einer auftrat. Mitglieder sehen wie in der App nur Läufe auf ihren zugewiesenen LinkedIn-Konten; Läufe aus der Zeit vor einem Kontowechsel können deshalb fehlen. Die Personen eines Laufs stehen unter GET /v1/engage/flows/{id}/hits. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Dauerlaufs

Query-Parameter

  • limitintegerab 1bis 100

    Einträge pro Seite (Standard 25, höchstens 100)

  • cursorstringmax. 200 Zeichen

    Wert aus meta.next_cursor der vorigen Seite

Felder der Antwort
  • idstring (uuid)

    ID des Laufs

  • started_atstring (date-time)

    Zeitpunkt des Laufs

  • source_kindstring

    Signalquelle, die gelaufen ist. keyword_posts: Reaktionen auf ein Thema. keyword_authors: Verfasser zu einem Thema. profile_engagers: Reaktionen auf bestimmte Profile. company_engagers: Reaktionen auf Unternehmensseiten. relations: eigene Kontakte reaktivieren. hiring_companies: Firmen, die einstellen. icp_search: direkt nach Zielgruppe suchen. profile_followers: Follower eines Profils. job_posts: Stellenanzeigen als Signal.

    keyword_posts keyword_authors profile_engagers company_engagers relations hiring_companies icp_search profile_followers job_posts
  • linkedin_accountobject, kann null sein

    LinkedIn-Konto, mit dem der Lauf gesucht hat. Leer bei Altzeilen ohne Konto.

    Felder anzeigen
    • idstring (uuid)

      ID des LinkedIn-Kontos (siehe GET /v1/linkedin/accounts/{id})

    • namestring, kann null sein

      Anzeigename des Kontos, null, wenn nicht bekannt

  • checkedinteger

    Geprüfte Personen

  • importedinteger

    In die Zielliste übernommen

  • enrolledinteger

    An die Kampagne übergeben (0, wenn keine Kampagne verknüpft ist)

  • needs_salutationinteger

    Anrede unsicher, wartet auf eine Entscheidung in der App

  • matchedinteger

    Passend, wartet auf einen freien Platz im Tagesziel

  • rejectedinteger

    Aussortiert

  • notestring, kann null sein

    Hinweis des Laufs im Klartext, wie in der App (mehrere Hinweise mit · getrennt). Bei einem Lauf ohne Treffer die einzige Auskunft, z. B. gefundene Firmen, deren Entscheider der nächste Lauf sucht.

  • errorstring, kann null sein

    Fehler des Laufs, wie ihn die App zeigt

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING404 NOT_FOUND429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/activity" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/activity", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/activity",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "3e4f5a6b-7c8d-4e9f-8a0b-1c2d3e4f5a6b",
      "started_at": "2026-10-18T10:30:12+00:00",
      "source_kind": "keyword_posts",
      "linkedin_account": {
        "id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
        "name": "Anna Beispiel"
      },
      "checked": 14,
      "imported": 2,
      "enrolled": 2,
      "needs_salutation": 0,
      "matched": 1,
      "rejected": 11,
      "note": "2 Beiträge gelesen, 14 Reaktionen geprüft. · 2 Leads an die Kampagne „Geschäftsführer Logistik“ übergeben.",
      "error": null
    },
    {
      "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
      "started_at": "2026-10-18T08:50:03+00:00",
      "source_kind": "hiring_companies",
      "linkedin_account": {
        "id": "4c8e2a1b-7d3f-4e5a-9b6c-1d2e3f4a5b6c",
        "name": "Anna Beispiel"
      },
      "checked": 0,
      "imported": 0,
      "enrolled": 0,
      "needs_salutation": 0,
      "matched": 0,
      "rejected": 0,
      "note": "10 Firmen gefunden, die einstellen. Die Entscheider sucht der nächste Lauf.",
      "error": null
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}
#

Offene Profilprüfungen eines LinkedIn-Dauerlaufs

GET/v1/engage/flows/{id}/profile-checks
Scope read:campaignsRecht: Dauerlauf: Übersicht und Statistikenliest

Wie der Reiter Überprüfen der Detailseite: Personen, deren LinkedIn-Profil der Dauerlauf noch besucht, um Position und Standort zu prüfen, weil die KI sie ohne den Besuch nicht sicher einordnen kann. Bis dahin kommen sie weder in die Zielliste noch in eine Kampagne. Der Besuch ist für die Person sichtbar und läuft gedrosselt: nur bei aktivem Dauerlauf, in den Suchzeiten des Kontos, mit Abstand zwischen den Besuchen und mit eigener Tagesgrenze je Konto innerhalb des Limits für Profilbesuche, das sich Prüfungen und Kampagnen teilen. Reihenfolge wie die Warteschlange: beste KI-Bewertung zuerst, dann älteste. Ist das Profil geprüft, entscheidet der nächste Lauf, die Person verschwindet aus dieser Liste und steht mit ihrer Entscheidung unter GET /v1/engage/flows/{id}/hits. Die Gesamtzahl steht in stats.profile_checks_pending des Dauerlaufs. Angaben zur Person nur Name und Headline, wie in der App. Sichtbar wie in der App unter LinkedIn Dauerlauf: Inhaber und Admins sehen alle Dauerläufe, Mitglieder nur die auf ihren zugewiesenen LinkedIn-Konten. Ein Dauerlauf auf einem anderen Konto ergibt 404. Liest nur gespeicherte Daten: kein Aufruf bei LinkedIn, es wird kein Kontingent verbraucht.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Dauerlaufs

Query-Parameter

  • limitintegerab 1bis 100

    Einträge pro Seite (Standard 25, höchstens 100)

  • cursorstringmax. 200 Zeichen

    Wert aus meta.next_cursor der vorigen Seite

Felder der Antwort
  • idstring (uuid)

    ID der Prüfung

  • created_atstring (date-time)

    Zur Prüfung vorgemerkt am

  • personobject

    Angaben zur Person, so weit die App sie im Reiter Überprüfen zeigt

    Felder anzeigen
    • namestring, kann null sein

      Name der Person, null, wenn nicht bekannt

    • headlinestring, kann null sein

      LinkedIn-Headline. Leer, wenn LinkedIn keine geliefert hat (dann klärt erst der Profilbesuch die Rolle).

Mögliche Fehler

400 VALIDATION_ERROR401 INVALID_API_KEY402 PLAN_REQUIRED403 SCOPE_MISSING404 NOT_FOUND429 RATE_LIMITED
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/profile-checks" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/profile-checks", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.DEALSKY_API_KEY,
  },
});
const { ok, data, error } = await res.json();
import os, requests

res = requests.request(
    "GET",
    "https://api.dealsky.io/functions/v1/api/v1/engage/flows/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/profile-checks",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "7d6c5b4a-3f2e-4d1c-9b0a-8f7e6d5c4b3a",
      "created_at": "2026-10-18T09:12:40+00:00",
      "person": {
        "name": "Sabine Muster",
        "headline": "Leitung Disposition und Fuhrpark"
      }
    },
    {
      "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
      "created_at": "2026-10-18T09:12:40+00:00",
      "person": {
        "name": "Thomas Beispiel",
        "headline": null
      }
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}