dealsky.ioDocs
Zur App
API-Referenz

Einstellungen

Firmenprofil, eigene Domains und Buchungslinks

#

Eigene Domains auflisten

GET/v1/domains
Scope read:accountRecht: Outreach Plattformliest

Die eigenen Domains für Landingpages, wie sie in der App unter Einrichtung, Domain stehen, älteste zuerst. Ist eine Domain aktiv, bauen dealsky und diese API die Links der persönlichen Landingpages darauf auf (https://{hostname}/{slug}), sonst auf {workspace}.dealsky.app.

status: verifying heißt, der A-Record fehlt noch (Ziel steht in dns_target). ssl_pending: DNS stimmt, das Zertifikat wird eingerichtet. active: in Betrieb. error: Einrichtung gescheitert, Grund in error_message.

Anlegen, prüfen und entfernen geht nur in der App.

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 eigenen Domain

  • hostnamestring

    Domain, z. B. angebot.beispiel.de

  • statusstring

    verifying: der A-Record fehlt noch. ssl_pending: DNS stimmt, das Zertifikat wird eingerichtet. active: in Betrieb. error: Einrichtung gescheitert, Grund in error_message. Weitere Werte sind möglich

  • ssl_activeboolean

    HTTPS-Zertifikat eingerichtet

  • dns_targetstring, kann null sein

    IP-Adresse, auf die der A-Record der Domain zeigen muss

  • error_messagestring, kann null sein

    Grund bei status error, sonst null

  • activated_atstring (date-time), kann null sein

    Wann die Domain zuletzt als aktiv gemeldet wurde (DNS geprüft, SSL eingerichtet). null, solange sie nie aktiv war

  • created_atstring (date-time), kann null sein

    Zeitpunkt, an dem die Domain in dealsky angelegt wurde

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/domains" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/domains", {
  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/domains",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "8c9d0e1f-2a3b-4c4d-8e5f-6a7b8c9d0e1f",
      "hostname": "angebot.beispiel.de",
      "status": "active",
      "ssl_active": true,
      "dns_target": "203.0.113.24",
      "error_message": null,
      "activated_at": "2026-09-03T11:20:00.000Z",
      "created_at": "2026-09-03T10:05:00.000Z"
    },
    {
      "id": "9d0e1f2a-3b4c-4d5e-9f6a-7b8c9d0e1f2a",
      "hostname": "termin.beispiel.de",
      "status": "verifying",
      "ssl_active": false,
      "dns_target": "203.0.113.24",
      "error_message": null,
      "activated_at": null,
      "created_at": "2026-10-17T15:42:00.000Z"
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}
#

Firmenprofil und Firmenwissen

GET/v1/company-profile
Scope read:accountRecht: Inhaber oder Adminliest

Was der Kunde in dealsky über seine Firma hinterlegt hat und was die KI-Texte der App nutzen: Firmendaten (Einrichtung, Unternehmen) und das Firmenwissen mit Marke, Angebot und Zielgruppe, Ansprache und Tonalität sowie weiteren Notizen (z. B. Schreibstil). Kostet nichts.

Die festen Felder entsprechen den Reitern Brand, Produkt & ICP und Guidelines des Firmenwissens; nicht gepflegte Felder sind null bzw. eine leere Liste. Notizen mit linkedin_account_id gelten nur für dieses LinkedIn-Konto und gehen dort dem allgemeinen Eintrag gleichen Namens vor. Höchstens die 300 zuletzt geänderten Einträge, wie in der App.

Wie die Einstellungsseiten in der App nur für Inhaber und Admins. Ändern geht nur in der App.

Felder der Antwort
  • companyobject

    Firmendaten wie unter Einrichtung, Unternehmen

    Felder anzeigen
    • namestring

      Firmenname des Kontos

    • website_urlstring, kann null sein

      Website aus Einrichtung, Unternehmen

    • logo_urlstring, kann null sein

      Logo aus Einrichtung, Unternehmen (nur http(s)-Adressen)

  • brandobject

    Marke wie im Reiter Brand des Firmenwissens. Nicht gepflegt: null bzw. leere Liste

    Felder anzeigen
    • namestring, kann null sein

      Markenname (Firmenwissen firmenname)

    • descriptionstring, kann null sein

      Beschreibung (Firmenwissen brand_description, früher description)

    • websitestring, kann null sein

      URL (Firmenwissen website)

    • industrystring, kann null sein

      Branche (Firmenwissen branche)

    • languagesListe aus string

      Sprache(n) (Firmenwissen brand_languages). Liste, in der App als Komma-Liste gepflegt

    • competitorsListe aus string

      Wettbewerber (Firmenwissen brand_competitors). Liste, in der App als Komma-Liste gepflegt

    • colorsListe aus string

      Farben (Firmenwissen brand_colors). Hex-Farben wie #FF6B00

    • logo_urlstring, kann null sein

      Logo (Firmenwissen brand_logo, früher logo). Nur http(s)-Adressen

  • productobject

    Angebot und Zielgruppe wie im Reiter Produkt & ICP

    Felder anzeigen
    • offerstring, kann null sein

      Angebot (Firmenwissen hauptangebot, früher offering, angebot_website)

    • target_audiencestring, kann null sein

      ICP / Zielgruppe (Firmenwissen zielgruppe, früher audience)

    • unique_selling_pointstring, kann null sein

      USP / Alleinstellung (Firmenwissen unique_mechanism)

    • pain_pointsstring, kann null sein

      Schmerzpunkte (Firmenwissen pain, früher emotional_pain)

  • guidelinesobject

    Ansprache und Tonalität wie im Reiter Guidelines

    Felder anzeigen
    • salutationstring, kann null sein

      Ansprache (Firmenwissen ansprache)

    • tonestring, kann null sein

      Tonalität & Do/Don’ts (Firmenwissen guidelines)

  • notesListe aus object

    Weitere Notizen, neueste zuerst, z. B. Schreibstil, Ist-Zustand, Fallstudie. Leere Einträge und technische Zwischenstände fehlen

    Felder anzeigen
    • keystring

      Schlüssel im Firmenwissen. Beginnt mit acct:<Konto>: bei Einträgen für ein LinkedIn-Konto

    • labelstring

      Name, wie ihn die App unter „Weitere Notizen“ zeigt

    • categorystring, kann null sein

      Kategorie, z. B. stil, angebot, sonstiges

    • contentstring

      Inhalt

    • linkedin_account_idstring, kann null sein

      Gilt nur für dieses LinkedIn-Konto (ID wie in /v1/linkedin/accounts) und geht dort dem allgemeinen Eintrag mit gleichem Namen vor. null: gilt für die ganze Firma

    • updated_atstring (date-time), kann null sein

      Zeitpunkt der letzten Änderung des Eintrags

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/company-profile" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/company-profile", {
  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/company-profile",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "company": {
      "name": "Beispiel GmbH",
      "website_url": "https://beispiel.de",
      "logo_url": "https://imagedelivery.net/beispiel/tenants/logo/public"
    },
    "brand": {
      "name": "Beispiel",
      "description": "Wir bringen mittelständischen Maschinenbauern planbar neue Anfragen über LinkedIn.",
      "website": "https://beispiel.de",
      "industry": "B2B-Dienstleistung",
      "languages": [
        "Deutsch"
      ],
      "competitors": [
        "Agentur Muster",
        "Vertriebsprofis AG"
      ],
      "colors": [
        "#FF6B00",
        "#1A1A1A"
      ],
      "logo_url": "https://imagedelivery.net/beispiel/tenants/logo/public"
    },
    "product": {
      "offer": "LinkedIn-Akquise als Komplettpaket: Zielgruppe, Ansprache und Termine in den Kalender des Vertriebs.",
      "target_audience": "Geschäftsführer und Vertriebsleiter im Maschinenbau, 20 bis 500 Mitarbeitende, DACH",
      "unique_selling_point": "Persönliche Videos je Lead statt Massennachrichten",
      "pain_points": "Neukunden kommen nur über Empfehlungen, der Vertrieb hat keine planbaren Termine"
    },
    "guidelines": {
      "salutation": "Sie-Form",
      "tone": "Sachlich und kurz. Keine Emojis, keine Superlative, kein Fachchinesisch."
    },
    "notes": [
      {
        "key": "writing_style",
        "label": "Schreibstil",
        "category": "stil",
        "content": "Kurze Sätze, direkte Frage am Ende, per Sie.",
        "linkedin_account_id": null,
        "updated_at": "2026-10-12T09:00:00.000Z"
      },
      {
        "key": "acct:7c8d9e0f-1a2b-4c3d-8e4f-5a6b7c8d9e0f:writing_style",
        "label": "Schreibstil",
        "category": "stil",
        "content": "Locker, per Du, mit kurzem Bezug auf den letzten Beitrag.",
        "linkedin_account_id": "7c8d9e0f-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
        "updated_at": "2026-10-12T09:00:00.000Z"
      },
      {
        "key": "before_state",
        "label": "Ist-Zustand",
        "category": "zielgruppe",
        "content": "Akquise läuft nur über Messen und Empfehlungen.",
        "linkedin_account_id": null,
        "updated_at": "2026-09-30T16:20:00.000Z"
      }
    ]
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}