dealsky.ioDocs
Zur App
API-Referenz

Auswertung

Kennzahlen und Aktivitäten

#

Kennzahlen wie die Statistik-Seite

GET/v1/analytics/overview
Scope read:analyticsRecht: Übersicht und Statistiken ansehenliest

Die Zahlen der Seite Kampagnen, Statistiken, mit denselben Formeln: Vernetzungsanfragen und Annahmequote, ausstehende Anfragen, Nachrichten und Antwortquote (Personen mit mindestens einer Nachricht, je Kampagne einmal), wer auf Antwort wartet, der Lücken-Finder (vernetzt, nie angeschrieben, in keiner laufenden Kampagne), Termine, laufende Kampagnen, Stand der Sequenzen, Landingpage-Besuche und dieselben Werte je Kampagne.

Zeitraum wie in der App als Kohorte: Ein Lead zählt, wenn seine Vernetzungsanfrage (sonst seine Vernetzung) im Zeitraum liegt; Leads ohne beides (noch in der Warteschlange) zählen immer. Tage gelten nach deutscher Zeit. Termine sind ein Stand ohne Zeitraum; Landingpage-Zahlen zählen Ereignisse im Zeitraum.

Die Statistik einer einzelnen Kampagne mit Funnel je Schritt steht unter GET /v1/campaigns/{id}/stats; sie rechnet Annahmen zusätzlich aus dem Verlauf und kann leicht abweichen. Sichtbar sind nur Zahlen der LinkedIn-Konten, auf die die Person hinter dem Key Zugriff hat. Bei großen Konten dauert die Antwort einige Sekunden.

Query-Parameter

  • fromstring (date)

    Erster Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • tostring (date)

    Letzter Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • account_idstring (uuid)

    Nur dieses LinkedIn-Konto (siehe /v1/linkedin/accounts)

  • campaign_idstring (uuid)

    Nur diese Kampagne (siehe /v1/campaigns)

Felder der Antwort
  • periodobject

    Zeitraum; ohne from und to gilt der Gesamtzeitraum

    Felder anzeigen
    • fromstring (date), kann null sein

      Erster Tag des Zeitraums (einschließlich), null ohne from

    • tostring (date), kann null sein

      Letzter Tag des Zeitraums (einschließlich), null ohne to

    • timezonestring

      Zeitzone der Tagesgrenzen, immer Europe/Berlin

  • filtersobject

    Filter, mit denen gerechnet wurde

    Felder anzeigen
    • account_idstring (uuid), kann null sein

      Angewendeter Kontofilter aus der Query, null ohne Filter

    • campaign_idstring (uuid), kann null sein

      Angewendeter Kampagnenfilter aus der Query, null ohne Filter

  • connectionsobject

    Vernetzungsanfragen im Ausschnitt

    Felder anzeigen
    • sentinteger

      Leads mit gesendeter Vernetzungsanfrage

    • acceptedinteger

      Davon vernetzt (wie die Annahmequote der App)

    • acceptance_rateintegerab 0bis 100

      Annahmequote in Prozent

    • already_connectedinteger

      Vernetzt ohne Anfrage aus der Kampagne (war schon Kontakt)

    • pendinginteger

      Ausstehende Vernetzungsanfragen

    • oldest_pending_daysinteger, kann null sein

      Alter der ältesten ausstehenden Anfrage in Tagen

  • messagesobject

    Nachrichten und Antworten im Ausschnitt

    Felder anzeigen
    • sentinteger

      Gesendete Nachrichten (Text, Sprache, Video, InMail), jede einzeln

    • messaged_peopleinteger

      Personen mit mindestens einer Nachricht, je Kampagne einmal (Nenner der Antwortquote)

    • replied_peopleinteger

      Davon mit Antwort

    • reply_rateinteger, kann null seinab 0bis 100

      Antwortquote in Prozent; null, wenn noch niemand angeschrieben wurde

    • repliesinteger

      Sequenz-Einträge mit Antwort, auch ohne Nachricht davor (Funnel-Stufe Geantwortet)

  • waiting_for_replyobject

    Angeschrieben, aber noch keine Antwort (je Person)

    Felder anzeigen
    • countintegerab 0

      Anzahl der Personen (Leads) insgesamt, auch über die Stichprobe hinaus

    • lead_idsListe aus string (uuid)

      Bis zu 50 Lead-IDs (für GET /v1/leads/{id})

  • idle_connectionsobject

    Lücken-Finder: vernetzt, nie angeschrieben und in keiner laufenden Kampagne oder Sequenz (je Person)

    Felder anzeigen
    • countintegerab 0

      Anzahl der Personen (Leads) insgesamt, auch über die Stichprobe hinaus

    • lead_idsListe aus string (uuid)

      Bis zu 50 Lead-IDs (für GET /v1/leads/{id})

  • bookingsinteger

    Leads mit Termin (Status booked oder Termin gesetzt), Stand heute, ohne Zeitraum

  • active_campaignsinteger

    Laufende Kampagnen im Ausschnitt

  • sequence_statusListe aus object

    Stand der Leads in den Sequenzen, häufigster zuerst

    Felder anzeigen
    • statusstring

      Status des Sequenz-Eintrags, z. B. waiting_for_connection, active, replied; unknown ohne Status

    • countinteger

      Anzahl der Sequenz-Einträge mit diesem Status

  • landing_pagesobject

    Je Lead einmal gezählt, Ereignisse im Zeitraum

    Felder anzeigen
    • visitsinteger

      Leads mit Seitenaufruf im Zeitraum

    • video_viewsinteger

      Leads, die das Video gestartet haben

    • cta_clicksinteger

      Leads mit Klick auf einen Button

    • bookingsinteger

      Leads mit bestätigter Buchung über die Seite

  • campaignsListe aus object

    Je Kampagne, meiste Anfragen zuerst

    Felder anzeigen
    • campaign_idstring (uuid)

      ID der Kampagne (für GET /v1/campaigns/{id})

    • namestring, kann null sein

      Name der Kampagne; null, wenn die Person hinter dem Key die Kampagne in der App nicht sieht

    • statusstring, kann null sein

      Status der Kampagne, z. B. active, paused, draft; null wie bei name

    • leadsinteger

      Sequenz-Einträge im Ausschnitt

    • connections_sentinteger

      Leads mit gesendeter Vernetzungsanfrage in dieser Kampagne

    • connections_acceptedinteger

      Davon vernetzt

    • acceptance_rateintegerab 0bis 100

      Annahmequote in Prozent

    • messages_sentinteger

      Gesendete Nachrichten (Text, Sprache, Video, InMail) in dieser Kampagne

    • repliesinteger

      Sequenz-Einträge mit Antwort in dieser Kampagne

    • reply_rateinteger, kann null seinab 0bis 100

      Antwortquote in Prozent, null ohne angeschriebene Person

  • calculated_atstring (date-time)

    Zeitpunkt der Berechnung (die Zahlen werden bei jedem Aufruf neu gerechnet)

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/analytics/overview" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/analytics/overview", {
  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/analytics/overview",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "period": {
      "from": "2026-10-01",
      "to": "2026-10-18",
      "timezone": "Europe/Berlin"
    },
    "filters": {
      "account_id": null,
      "campaign_id": null
    },
    "connections": {
      "sent": 214,
      "accepted": 81,
      "acceptance_rate": 38,
      "already_connected": 12,
      "pending": 96,
      "oldest_pending_days": 17
    },
    "messages": {
      "sent": 131,
      "messaged_people": 93,
      "replied_people": 17,
      "reply_rate": 18,
      "replies": 19
    },
    "waiting_for_reply": {
      "count": 76,
      "lead_ids": [
        "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10"
      ]
    },
    "idle_connections": {
      "count": 4,
      "lead_ids": [
        "7e3d1c2b-9a8f-4e6d-8c5b-4a3f2e1d0c9b"
      ]
    },
    "bookings": 6,
    "active_campaigns": 3,
    "sequence_status": [
      {
        "status": "waiting_for_connection",
        "count": 96
      },
      {
        "status": "active",
        "count": 58
      },
      {
        "status": "replied",
        "count": 17
      }
    ],
    "landing_pages": {
      "visits": 22,
      "video_views": 9,
      "cta_clicks": 4,
      "bookings": 2
    },
    "campaigns": [
      {
        "campaign_id": "9d2e1f3a-4b5c-4d6e-8f7a-1b2c3d4e5f60",
        "name": "Geschäftsführer Logistik",
        "status": "active",
        "leads": 180,
        "connections_sent": 150,
        "connections_accepted": 61,
        "acceptance_rate": 41,
        "messages_sent": 102,
        "replies": 14,
        "reply_rate": 19
      }
    ],
    "calculated_at": "2026-10-18T09:30:00.000Z"
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}
#

Werte je Tag

GET/v1/analytics/daily
Scope read:analyticsRecht: Übersicht und Statistiken ansehenliest

Je Kalendertag (deutsche Zeit): gesendete Vernetzungsanfragen, neue Kontakte, gesendete Nachrichten und eingegangene Antworten. Neue Kontakte sind die Werte der Karten Vernetzungs-Wachstum und Neue Kontakte pro Tag der App, gezählt aus den Kampagnen (Kontakte außerhalb von Kampagnen liest die App live bei LinkedIn, die gibt es hier nicht). Ohne Angabe die letzten 30 Tage bis heute, höchstens 92 Tage. Jeder Wert zählt an dem Tag, an dem es passiert ist, nicht als Kohorte. Sichtbar sind nur Zahlen der LinkedIn-Konten, auf die die Person hinter dem Key Zugriff hat.

Query-Parameter

  • fromstring (date)

    Erster Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • tostring (date)

    Letzter Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • account_idstring (uuid)

    Nur dieses LinkedIn-Konto (siehe /v1/linkedin/accounts)

  • campaign_idstring (uuid)

    Nur diese Kampagne (siehe /v1/campaigns)

Felder der Antwort
  • timezonestring

    Zeitzone der Tagesgrenzen, immer Europe/Berlin

  • fromstring (date)

    Erster Tag (einschließlich); ohne Angabe 29 Tage vor to

  • tostring (date)

    Letzter Tag (einschließlich); ohne Angabe heute

  • filtersobject

    Filter, mit denen gerechnet wurde

    Felder anzeigen
    • account_idstring (uuid), kann null sein

      Angewendeter Kontofilter aus der Query, null ohne Filter

    • campaign_idstring (uuid), kann null sein

      Angewendeter Kampagnenfilter aus der Query, null ohne Filter

  • daysListe aus object

    Jeder Tag des Zeitraums, auch ohne Werte

    Felder anzeigen
    • datestring (date)

      Kalendertag (JJJJ-MM-TT, deutsche Zeit)

    • connections_sentinteger

      Leads, an die an diesem Tag eine Vernetzungsanfrage ging

    • new_connectionsinteger

      Neu vernetzte Sequenz-Einträge (Karte „Neue Kontakte / Tag“)

    • messages_sentinteger

      Gesendete Nachrichten (Text, Sprache, Video, InMail)

    • repliesinteger

      Eingegangene Antworten (erste Antwort je Sequenz-Eintrag)

  • totalsobject

    Summe der Tage

    Felder anzeigen
    • connections_sentinteger

      Summe der Vernetzungsanfragen aller Tage

    • new_connectionsinteger

      Summe der neuen Kontakte aller Tage

    • messages_sentinteger

      Summe der gesendeten Nachrichten aller Tage

    • repliesinteger

      Summe der Antworten aller Tage

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/analytics/daily" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/analytics/daily", {
  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/analytics/daily",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "timezone": "Europe/Berlin",
    "from": "2026-10-12",
    "to": "2026-10-14",
    "filters": {
      "account_id": "4c1d2e3f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
      "campaign_id": null
    },
    "days": [
      {
        "date": "2026-10-12",
        "connections_sent": 0,
        "new_connections": 2,
        "messages_sent": 0,
        "replies": 0
      },
      {
        "date": "2026-10-13",
        "connections_sent": 18,
        "new_connections": 5,
        "messages_sent": 9,
        "replies": 2
      },
      {
        "date": "2026-10-14",
        "connections_sent": 20,
        "new_connections": 7,
        "messages_sent": 11,
        "replies": 1
      }
    ],
    "totals": {
      "connections_sent": 38,
      "new_connections": 14,
      "messages_sent": 20,
      "replies": 3
    }
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}
#

Aktivitäten-Feed

GET/v1/analytics/activity
Scope read:analyticsRecht: Übersicht und Statistiken ansehenliest

Neueste zuerst, wie die Aktivitäten der App: Ereignisse aus dem Verlauf der Leads (LinkedIn-Anfragen, Annahmen, Nachrichten, Antworten, Notizen, Statuswechsel) und aus dem Tracking (Landingpage, Video, Buttons, Buchungen, E-Mail). types filtert auf bestimmte Arten. Mit account_id oder campaign_id nur Ereignisse von Leads, die über dieses Konto bzw. in dieser Kampagne laufen. Inhalte von Nachrichten und Notizen stehen nicht im Feed (wie in der App); den Verlauf eines Leads liefert GET /v1/leads/{id}/activities. Wer nicht Inhaber oder Admin ist, sieht nur Ereignisse von Leads auf eigenen LinkedIn-Konten.

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

  • fromstring (date)

    Erster Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • tostring (date)

    Letzter Tag (JJJJ-MM-TT, deutsche Zeit), einschließlich

  • account_idstring (uuid)

    Nur dieses LinkedIn-Konto (siehe /v1/linkedin/accounts)

  • campaign_idstring (uuid)

    Nur diese Kampagne (siehe /v1/campaigns)

  • typesListe aus stringmax. 50 Einträge

    Eine oder mehrere Arten, kommagetrennt, z. B. linkedin_reply_received,booking_confirmed

Felder der Antwort
  • idstring

    Eindeutig im Feed; act-… aus dem Lead-Verlauf, evt-… aus dem Tracking

  • sourcestring

    activity = Verlauf des Leads (LinkedIn, Notizen, Status), tracking = Landingpage und E-Mail

    activity tracking
  • typestring

    Art, z. B. linkedin_connection_sent, linkedin_connection_accepted, linkedin_message_sent, linkedin_reply_received, pageview, video_start, cta_clicked, booking_confirmed

  • occurred_atstring (date-time)

    Zeitpunkt des Ereignisses

  • lead_idstring (uuid), kann null sein

    Lead des Ereignisses (für GET /v1/leads/{id}), null ohne Lead-Bezug

  • lead_namestring, kann null sein

    Name des Leads, null, wenn unbekannt

  • companystring, kann null sein

    Firma des Leads, null, wenn unbekannt

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/analytics/activity" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/analytics/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/analytics/activity",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "act-0f1e2d3c-4b5a-4968-8776-655443322110",
      "source": "activity",
      "type": "linkedin_reply_received",
      "occurred_at": "2026-10-18T08:41:12.000Z",
      "lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
      "lead_name": "Max Mustermann",
      "company": "Beispiel GmbH"
    },
    {
      "id": "evt-1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "source": "tracking",
      "type": "pageview",
      "occurred_at": "2026-10-18T07:55:03.000Z",
      "lead_id": "6c1d2f8b-4a2e-4b63-8d2f-9b8e3c7a5f21",
      "lead_name": "Erika Beispiel",
      "company": "Muster AG"
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}