Landingpages
Vorlagen, persönliche Landingpages je Lead und ihre Links
Landingpage-Vorlagen auflisten
/v1/landing-page-templatesread:assetsRecht: Outreach PlattformliestDie Vorlagen, die in dealsky unter Assets, Landingpages stehen und in Kampagnen wählbar sind (status active), neueste zuerst. Ohne den Aufbau der Seite; den liefert der Abruf einer einzelnen Vorlage.
Query-Parameter
limitintegerab 1bis 100Einträge pro Seite (Standard 25, höchstens 100)
cursorstringmax. 200 ZeichenWert aus meta.next_cursor der vorigen Seite
qstringmax. 200 ZeichenSuche im Namen (Teilstring, Groß/Klein egal)
Felder der Antwort
idstring (uuid)ID der Vorlage (template_id bei den persönlichen Seiten)
namestringName der Vorlage wie in der App
descriptionstring, kann null seinBeschreibung der Vorlage, null wenn keine hinterlegt ist
statusstring, kann null seinactive = in Kampagnen und im Impact Studio wählbar
thumbnail_urlstring, kann null seinVorschaubild der Vorlage
preview_urlstringVorschau mit Beispiel-Lead in dealsky (braucht eine Anmeldung in dealsky). Vorlagen selbst haben keine öffentliche Adresse.
created_atstring (date-time)Anlagezeitpunkt der Vorlage (ISO 8601, UTC)
updated_atstring (date-time), kann null seinLetzte Änderung der Vorlage (ISO 8601, UTC)
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/landing-page-templates" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-page-templates", {
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/landing-page-templates",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": [
{
"id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Outreach Geschäftsführer",
"description": null,
"status": "active",
"thumbnail_url": "https://imagedelivery.net/k3Xr9aQ/system/lp-template-variant1/public",
"preview_url": "https://app.dealsky.io/preview/demo-landing/7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"created_at": "2026-09-02T10:15:00.000Z",
"updated_at": "2026-10-14T16:40:00.000Z"
}
],
"meta": {
"request_id": "req_7f3a…",
"next_cursor": null,
"has_more": false
}
}Eine Landingpage-Vorlage abrufen
/v1/landing-page-templates/{id}read:assetsRecht: Outreach PlattformliestMit dem Aufbau der Seite (Abschnitte, Blocktypen, Buchungs- und Danke-Seite, Art des Videos) und der Zahl der daraus erzeugten persönlichen Seiten. Texte, Farben und Stile aus dem Editor gibt die API nicht heraus. Gelöschte Vorlagen antworten 404.
Pfad-Parameter
idstring (uuid)PflichtID der Vorlage
Felder der Antwort
idstring (uuid)ID der Vorlage (template_id bei den persönlichen Seiten)
namestringName der Vorlage wie in der App
descriptionstring, kann null seinBeschreibung der Vorlage, null wenn keine hinterlegt ist
statusstring, kann null seinactive = in Kampagnen und im Impact Studio wählbar
thumbnail_urlstring, kann null seinVorschaubild der Vorlage
preview_urlstringVorschau mit Beispiel-Lead in dealsky (braucht eine Anmeldung in dealsky). Vorlagen selbst haben keine öffentliche Adresse.
created_atstring (date-time)Anlagezeitpunkt der Vorlage (ISO 8601, UTC)
updated_atstring (date-time), kann null seinLetzte Änderung der Vorlage (ISO 8601, UTC)
structureobjectAufbau der Vorlage ohne Editor-Daten (Texte, Farben, Stile): Abschnitte, Blöcke, Video-Art, SEO-Angaben
Felder anzeigen
layoutstring, kann null seinGrundaufbau: variant1 oder variant2
sectionsListe aus string, kann null seinSichtbare Abschnitte unter dem Kopfbereich mit Video in ihrer Reihenfolge, z. B. comparison, cta, approach, faq, finalCta. null = Standardreihenfolge der Vorlage
hidden_sectionsListe aus stringAusgeblendete Abschnitte
blocksListe aus objectZusätzliche Blöcke auf der Hauptseite je Typ
Felder anzeigen
typestringBlocktyp, z. B. text, image, explainer_video, video_personalized, calendar_embed, testimonial
countintegerAnzahl Blöcke dieses Typs
booking_page_blocksListe aus stringBlocktypen der Buchungsseite. Leer, wenn ein externer CTA-Link aktiv ist.
thank_you_page_blocksListe aus stringBlocktypen der Danke-Seite. Leer, wenn ein externer CTA-Link aktiv ist.
hero_video_typestring, kann null seinpersonalized = je Lead ein eigenes Video, static = dasselbe Video für alle
external_cta_urlstring, kann null seinZiel der Buttons, wenn sie auf eine externe Seite statt auf die Buchungsseite führen
seo_titlestring, kann null seinTitel für Suchmaschinen und Link-Vorschau, Platzhalter wie {{first_name}} werden je Lead ersetzt
seo_descriptionstring, kann null seinBeschreibung für Suchmaschinen und Link-Vorschau, null wenn keine hinterlegt ist
landing_pages_countintegerPersönliche Landingpages, die aus dieser Vorlage erzeugt wurden
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/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/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Outreach Geschäftsführer",
"description": null,
"status": "active",
"thumbnail_url": "https://imagedelivery.net/k3Xr9aQ/system/lp-template-variant1/public",
"preview_url": "https://app.dealsky.io/preview/demo-landing/7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"created_at": "2026-09-02T10:15:00.000Z",
"updated_at": "2026-10-14T16:40:00.000Z",
"structure": {
"layout": "variant1",
"sections": [
"comparison",
"cta",
"approach",
"finalCta"
],
"hidden_sections": [
"faq"
],
"blocks": [
{
"type": "text",
"count": 2
},
{
"type": "testimonial",
"count": 1
}
],
"booking_page_blocks": [
"heading",
"calendar_embed"
],
"thank_you_page_blocks": [
"heading",
"text"
],
"hero_video_type": "personalized",
"external_cta_url": null,
"seo_title": "Ein Video für {{first_name}}",
"seo_description": "Eine persönliche Nachricht von Beispiel GmbH"
},
"landing_pages_count": 42
},
"meta": {
"request_id": "req_7f3a…"
}
}Landingpage-Vorlage umbenennen, SEO-Titel und -Beschreibung ändern
/v1/landing-page-templates/{id}write:assetsRecht: Outreach PlattformschreibtÄndert, was die App im Landingpage-Editor außerhalb der Blöcke ändert: den Namen und den SEO-Titel und die SEO-Beschreibung (Bereich SEO im Design). Texte, Blöcke, Design, Video und Kalender ändert die API nicht; dafür gibt es den Editor in dealsky. Aktivieren und Deaktivieren gibt es in der App nicht, darum auch nicht hier (Löschen: DELETE). Nur übergebene Felder werden geändert; Werte, die schon so gespeichert sind, schreiben nichts.
Wirkung: Der Name ist nur Anzeige. Ein neuer SEO-Titel gilt für Seiten, die ab jetzt aus der Vorlage erzeugt werden, auch in laufenden Kampagnen. Bereits erzeugte persönliche Seiten behalten ihren Titel, weil die Vorlage beim Erzeugen kopiert wird. Den Abgleich mit vorhandenen Seiten bietet die App nur an, wenn der Titel im Editor geändert wird.
Gleichzeitige Bearbeitung: Der Editor der App speichert immer die ganze Seite. Ist die Vorlage gerade in dealsky geöffnet, überschreibt das nächste Speichern dort diese Änderung. Beim SEO-Titel und der SEO-Beschreibung schreibt die API die Seite nur, wenn sie sich seit dem Lesen nicht geändert hat, sonst antwortet sie 409 mit details.reason = concurrent_update; dann einfach erneut senden.
Die Antwort hat das Format von GET /v1/landing-page-templates/{id}. Gelöschte oder fremde Vorlagen antworten 404. Fehlt der Vorlage das Design (nie im Editor gespeichert), lässt sich der SEO-Titel nicht setzen: 422 mit details.reason = invalid_template.
Pfad-Parameter
idstring (uuid)PflichtID der Vorlage
Body
namestringmind. 1 Zeichenmax. 200 ZeichenName der Vorlage, wie unter Assets, Landingpages angezeigt, muss nicht eindeutig sein
seo_titlestringmax. 300 ZeichenSeitentitel für Suchmaschinen und Link-Vorschau (structure.seo_title). Platzhalter wie {{first_name}} werden je Lead ersetzt
seo_descriptionstringmax. 1000 ZeichenBeschreibung für Suchmaschinen und Link-Vorschau (structure.seo_description), ebenfalls mit Platzhaltern
Felder der Antwort
idstring (uuid)ID der Vorlage (template_id bei den persönlichen Seiten)
namestringName der Vorlage wie in der App
descriptionstring, kann null seinBeschreibung der Vorlage, null wenn keine hinterlegt ist
statusstring, kann null seinactive = in Kampagnen und im Impact Studio wählbar
thumbnail_urlstring, kann null seinVorschaubild der Vorlage
preview_urlstringVorschau mit Beispiel-Lead in dealsky (braucht eine Anmeldung in dealsky). Vorlagen selbst haben keine öffentliche Adresse.
created_atstring (date-time)Anlagezeitpunkt der Vorlage (ISO 8601, UTC)
updated_atstring (date-time), kann null seinLetzte Änderung der Vorlage (ISO 8601, UTC)
structureobjectAufbau der Vorlage ohne Editor-Daten (Texte, Farben, Stile): Abschnitte, Blöcke, Video-Art, SEO-Angaben
Felder anzeigen
layoutstring, kann null seinGrundaufbau: variant1 oder variant2
sectionsListe aus string, kann null seinSichtbare Abschnitte unter dem Kopfbereich mit Video in ihrer Reihenfolge, z. B. comparison, cta, approach, faq, finalCta. null = Standardreihenfolge der Vorlage
hidden_sectionsListe aus stringAusgeblendete Abschnitte
blocksListe aus objectZusätzliche Blöcke auf der Hauptseite je Typ
Felder anzeigen
typestringBlocktyp, z. B. text, image, explainer_video, video_personalized, calendar_embed, testimonial
countintegerAnzahl Blöcke dieses Typs
booking_page_blocksListe aus stringBlocktypen der Buchungsseite. Leer, wenn ein externer CTA-Link aktiv ist.
thank_you_page_blocksListe aus stringBlocktypen der Danke-Seite. Leer, wenn ein externer CTA-Link aktiv ist.
hero_video_typestring, kann null seinpersonalized = je Lead ein eigenes Video, static = dasselbe Video für alle
external_cta_urlstring, kann null seinZiel der Buttons, wenn sie auf eine externe Seite statt auf die Buchungsseite führen
seo_titlestring, kann null seinTitel für Suchmaschinen und Link-Vorschau, Platzhalter wie {{first_name}} werden je Lead ersetzt
seo_descriptionstring, kann null seinBeschreibung für Suchmaschinen und Link-Vorschau, null wenn keine hinterlegt ist
landing_pages_countintegerPersönliche Landingpages, die aus dieser Vorlage erzeugt wurden
Mögliche Fehler
curl -X PATCH "https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Outreach Geschäftsführer Herbst"
}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10", {
method: "PATCH",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Outreach Geschäftsführer Herbst"
}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"PATCH",
"https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={
"name": "Outreach Geschäftsführer Herbst"
},
)
print(res.json()){
"ok": true,
"data": {
"id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Outreach Geschäftsführer Herbst",
"description": null,
"status": "active",
"thumbnail_url": "https://imagedelivery.net/k3Xr9aQ/system/lp-template-variant1/public",
"preview_url": "https://app.dealsky.io/preview/demo-landing/7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"created_at": "2026-09-02T10:15:00.000Z",
"updated_at": "2026-10-18T09:40:00.000Z",
"structure": {
"layout": "variant1",
"sections": [
"comparison",
"cta",
"approach",
"finalCta"
],
"hidden_sections": [
"faq"
],
"blocks": [
{
"type": "text",
"count": 2
},
{
"type": "testimonial",
"count": 1
}
],
"booking_page_blocks": [
"heading",
"calendar_embed"
],
"thank_you_page_blocks": [
"heading",
"text"
],
"hero_video_type": "personalized",
"external_cta_url": null,
"seo_title": "Ein Video für {{first_name}}",
"seo_description": "Eine persönliche Nachricht von Beispiel GmbH"
},
"landing_pages_count": 42
},
"meta": {
"request_id": "req_7f3a…"
}
}Landingpage-Vorlage löschen
/v1/landing-page-templates/{id}write:assetsRecht: Outreach PlattformschreibtLöscht die Vorlage wie „Löschen“ unter Assets, Landingpages: Sie verschwindet aus der Liste und aus der Auswahl in Kampagnen und ist in dealsky nicht wiederherstellbar. Bereits erzeugte persönliche Seiten bleiben unverändert online (landing_pages_count in der Antwort), Bilder und Videos bleiben erhalten.
Schutz laufender Arbeit: Anders als die App löscht die API keine Vorlage, die noch genutzt wird, und antwortet dann 409 mit details.reason = template_in_use und details.used_by. Genutzt heißt: eine Kampagne im Status draft, active oder paused mit dieser Vorlage, eine nicht abgeschlossene Briefkampagne, ein laufender Landingpage-Lauf für eine Liste oder eine laufende Postfach-Sequenz bzw. wartende Video-Nachricht mit dieser Vorlage. error.details.used_by nennt je Fund type (campaign, letter_campaign, landing_page_job, inbox_sequence, inbox_video_send), id, name (Kampagnenname, sonst null), status und je nach Art campaign_id, list_id oder lead_id. Der Test-Key prüft dasselbe.
Die Antwort hat das Format von GET /v1/landing-page-templates/{id} mit status: deleted; ein späterer Abruf antwortet 404. Gelöschte oder fremde Vorlagen antworten 404.
Pfad-Parameter
idstring (uuid)PflichtID der Vorlage
Felder der Antwort
idstring (uuid)ID der Vorlage (template_id bei den persönlichen Seiten)
namestringName der Vorlage wie in der App
descriptionstring, kann null seinBeschreibung der Vorlage, null wenn keine hinterlegt ist
statusstring, kann null seinactive = in Kampagnen und im Impact Studio wählbar
thumbnail_urlstring, kann null seinVorschaubild der Vorlage
preview_urlstringVorschau mit Beispiel-Lead in dealsky (braucht eine Anmeldung in dealsky). Vorlagen selbst haben keine öffentliche Adresse.
created_atstring (date-time)Anlagezeitpunkt der Vorlage (ISO 8601, UTC)
updated_atstring (date-time), kann null seinLetzte Änderung der Vorlage (ISO 8601, UTC)
structureobjectAufbau der Vorlage ohne Editor-Daten (Texte, Farben, Stile): Abschnitte, Blöcke, Video-Art, SEO-Angaben
Felder anzeigen
layoutstring, kann null seinGrundaufbau: variant1 oder variant2
sectionsListe aus string, kann null seinSichtbare Abschnitte unter dem Kopfbereich mit Video in ihrer Reihenfolge, z. B. comparison, cta, approach, faq, finalCta. null = Standardreihenfolge der Vorlage
hidden_sectionsListe aus stringAusgeblendete Abschnitte
blocksListe aus objectZusätzliche Blöcke auf der Hauptseite je Typ
Felder anzeigen
typestringBlocktyp, z. B. text, image, explainer_video, video_personalized, calendar_embed, testimonial
countintegerAnzahl Blöcke dieses Typs
booking_page_blocksListe aus stringBlocktypen der Buchungsseite. Leer, wenn ein externer CTA-Link aktiv ist.
thank_you_page_blocksListe aus stringBlocktypen der Danke-Seite. Leer, wenn ein externer CTA-Link aktiv ist.
hero_video_typestring, kann null seinpersonalized = je Lead ein eigenes Video, static = dasselbe Video für alle
external_cta_urlstring, kann null seinZiel der Buttons, wenn sie auf eine externe Seite statt auf die Buchungsseite führen
seo_titlestring, kann null seinTitel für Suchmaschinen und Link-Vorschau, Platzhalter wie {{first_name}} werden je Lead ersetzt
seo_descriptionstring, kann null seinBeschreibung für Suchmaschinen und Link-Vorschau, null wenn keine hinterlegt ist
landing_pages_countintegerPersönliche Landingpages, die aus dieser Vorlage erzeugt wurden
Mögliche Fehler
curl -X DELETE "https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10", {
method: "DELETE",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
},
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"DELETE",
"https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Outreach Geschäftsführer",
"description": null,
"status": "deleted",
"thumbnail_url": "https://imagedelivery.net/k3Xr9aQ/system/lp-template-variant1/public",
"preview_url": "https://app.dealsky.io/preview/demo-landing/7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"created_at": "2026-09-02T10:15:00.000Z",
"updated_at": "2026-10-18T09:50:00.000Z",
"structure": {
"layout": "variant1",
"sections": [
"comparison",
"cta",
"approach",
"finalCta"
],
"hidden_sections": [
"faq"
],
"blocks": [
{
"type": "text",
"count": 2
},
{
"type": "testimonial",
"count": 1
}
],
"booking_page_blocks": [
"heading",
"calendar_embed"
],
"thank_you_page_blocks": [
"heading",
"text"
],
"hero_video_type": "personalized",
"external_cta_url": null,
"seo_title": "Ein Video für {{first_name}}",
"seo_description": "Eine persönliche Nachricht von Beispiel GmbH"
},
"landing_pages_count": 42
},
"meta": {
"request_id": "req_7f3a…"
}
}Persönliche Landingpages auflisten
/v1/landing-pagesread:assetsRecht: Outreach PlattformliestDie persönlichen Seiten je Lead, wie im Impact Studio unter Inhalte, neueste zuerst, jeweils mit öffentlichem Link. Kennzahlen stehen beim Abruf einer einzelnen Seite. Für alle Seiten einer Liste oder Kampagne eignet sich GET /v1/leads?list_id=… bzw. ?campaign_id=…: jeder Lead trägt seinen Link in landing_page_url.
Query-Parameter
limitintegerab 1bis 100Einträge pro Seite (Standard 25, höchstens 100)
cursorstringmax. 200 ZeichenWert aus meta.next_cursor der vorigen Seite
lead_idstring (uuid)Nur Seiten dieses Leads (ein Lead kann mehrere haben, wenn neu erzeugt wurde)
template_idstring (uuid)Nur Seiten aus dieser Vorlage
statusstringmax. 50 ZeichenNur Seiten mit diesem Status, z. B. active
created_afterstring (date-time)Nur Seiten, die seitdem erzeugt wurden (für Abgleiche)
Felder der Antwort
idstring (uuid)ID der persönlichen Landingpage
lead_idstring (uuid), kann null seinLead, dem die Seite gehört, null bei Seiten ohne Lead
template_idstring (uuid), kann null seinVorlage, aus der die Seite erzeugt wurde
slugstringLetzter Teil der Adresse. Format nach Einstellung unter Rechtliches (anonym, Vorname, Vor- und Nachname, Firma)
urlstring, kann null seinÖffentliche Adresse: eigene Domain, wenn eine aktiv ist, sonst {workspace}.dealsky.app. null, wenn keine Domain eingerichtet ist
lead_namestring, kann null seinName des Leads, wie er beim Erzeugen auf die Seite geschrieben wurde
company_namestring, kann null seinFirma des Leads, wie sie beim Erzeugen auf die Seite geschrieben wurde
statusstring, kann null seinStatus der Seite, z. B. active. Gelöschte Seiten liefert die API nicht
expires_atstring (date-time), kann null seinDanach wird die Seite automatisch gelöscht. null = ohne Ablauf
video_urlstring, kann null seinVideo oben auf der Seite (bei personalisierten Vorlagen das Video des Leads)
video_poster_urlstring, kann null seinVorschaubild zum Video oben auf der Seite, null ohne Vorschaubild
created_atstring (date-time)Erzeugt am (ISO 8601, UTC); ab hier zählen die Kennzahlen
updated_atstring (date-time), kann null seinLetzte Änderung der Seite (ISO 8601, UTC)
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/landing-pages" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-pages", {
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/landing-pages",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": [
{
"id": "3e8f1a2b-5c6d-4e7f-8a9b-0c1d2e3f4a5b",
"lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
"template_id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"slug": "max-mustermann",
"url": "https://beispiel.dealsky.app/max-mustermann",
"lead_name": "Max Mustermann",
"company_name": "Beispiel GmbH",
"status": "active",
"expires_at": null,
"video_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.mp4",
"video_poster_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.jpg",
"created_at": "2026-10-14T09:00:00.000Z",
"updated_at": "2026-10-14T09:00:00.000Z"
}
],
"meta": {
"request_id": "req_7f3a…",
"next_cursor": null,
"has_more": false
}
}Eine persönliche Landingpage abrufen
/v1/landing-pages/{id}read:assetsRecht: Outreach PlattformliestMit öffentlichem Link, Domain und Kennzahlen (Aufrufe, Video, Klicks, Buchungen). Gezählt wird ab dem Erzeugen dieser Seite.
Pfad-Parameter
idstring (uuid)PflichtID der persönlichen Landingpage
Felder der Antwort
idstring (uuid)ID der persönlichen Landingpage
lead_idstring (uuid), kann null seinLead, dem die Seite gehört, null bei Seiten ohne Lead
template_idstring (uuid), kann null seinVorlage, aus der die Seite erzeugt wurde
slugstringLetzter Teil der Adresse. Format nach Einstellung unter Rechtliches (anonym, Vorname, Vor- und Nachname, Firma)
urlstring, kann null seinÖffentliche Adresse: eigene Domain, wenn eine aktiv ist, sonst {workspace}.dealsky.app. null, wenn keine Domain eingerichtet ist
lead_namestring, kann null seinName des Leads, wie er beim Erzeugen auf die Seite geschrieben wurde
company_namestring, kann null seinFirma des Leads, wie sie beim Erzeugen auf die Seite geschrieben wurde
statusstring, kann null seinStatus der Seite, z. B. active. Gelöschte Seiten liefert die API nicht
expires_atstring (date-time), kann null seinDanach wird die Seite automatisch gelöscht. null = ohne Ablauf
video_urlstring, kann null seinVideo oben auf der Seite (bei personalisierten Vorlagen das Video des Leads)
video_poster_urlstring, kann null seinVorschaubild zum Video oben auf der Seite, null ohne Vorschaubild
created_atstring (date-time)Erzeugt am (ISO 8601, UTC); ab hier zählen die Kennzahlen
updated_atstring (date-time), kann null seinLetzte Änderung der Seite (ISO 8601, UTC)
domainstring, kann null seinDomain der Adresse
domain_sourcestring, kann null seincustom_domain = eigene Domain, workspace_subdomain = {workspace}.dealsky.app
custom_domainworkspace_subdomainstatsobjectKennzahlen seit dem Erzeugen der Seite. Ist das Tracking in den Einstellungen aus, wird nichts gezählt.
Felder anzeigen
visitsintegerSeitenaufrufe (ohne erkannte Bots und Link-Vorschauen)
unique_visitorsinteger, kann null seinVerschiedene Leads mit mindestens einem Aufruf, gezählt wie in der Kampagnen-Statistik der App. Eine persönliche Seite gehört genau einem Lead, darum 0 oder 1. dealsky speichert keine Besucherkennung, mehrere Geräte desselben Leads zählen also als ein Besucher. null bei Seiten ohne Lead.
video_viewsintegerVideo gestartet (Hauptvideo der Seite)
cta_clicksintegerKlicks auf die Buttons der Seite (Kopf, Mitte, Ende, Erklärvideo)
booking_page_opensintegerBuchungsseite geöffnet
bookingsintegerTermine über die Seite gebucht
first_visit_atstring (date-time), kann null seinErster Seitenaufruf (ISO 8601, UTC), null ohne Aufruf
last_visit_atstring (date-time), kann null seinLetzter Seitenaufruf (ISO 8601, UTC), null ohne Aufruf
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/landing-pages/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-pages/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/landing-pages/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"id": "3e8f1a2b-5c6d-4e7f-8a9b-0c1d2e3f4a5b",
"lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
"template_id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"slug": "max-mustermann",
"url": "https://beispiel.dealsky.app/max-mustermann",
"lead_name": "Max Mustermann",
"company_name": "Beispiel GmbH",
"status": "active",
"expires_at": null,
"video_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.mp4",
"video_poster_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.jpg",
"created_at": "2026-10-14T09:00:00.000Z",
"updated_at": "2026-10-14T09:00:00.000Z",
"domain": "beispiel.dealsky.app",
"domain_source": "workspace_subdomain",
"stats": {
"visits": 4,
"unique_visitors": 1,
"video_views": 2,
"cta_clicks": 1,
"booking_page_opens": 1,
"bookings": 1,
"first_visit_at": "2026-10-15T08:31:12.000Z",
"last_visit_at": "2026-10-17T19:04:55.000Z"
}
},
"meta": {
"request_id": "req_7f3a…"
}
}Link der Landingpage eines Leads
/v1/leads/{id}/landing-pageread:assetsRecht: Outreach PlattformliestDer aktuelle öffentliche Link der neuesten Landingpage des Leads, gebildet wie in der App (eigene Domain, wenn eine aktiv ist, sonst {workspace}.dealsky.app/{slug}), dazu QR-Code, Video und Kennzahlen. Hat der Lead keine Seite (nie erzeugt, gelöscht oder abgelaufen), antwortet die API 404 mit error.details.reason = no_landing_page, auch wenn in landing_page_url des Leads noch eine alte Adresse steht.
Pfad-Parameter
idstring (uuid)PflichtID des Leads
Felder der Antwort
lead_idstring (uuid)ID des Leads
landing_page_idstring (uuid)ID der neuesten persönlichen Landingpage des Leads (wie GET /v1/landing-pages/{id})
urlstring, kann null seinAktueller öffentlicher Link, gebildet wie in der App: eigene Domain, wenn eine aktiv ist, sonst {workspace}.dealsky.app/{slug}
domainstring, kann null seinDomain der Adresse, null wenn keine Domain eingerichtet ist
domain_sourcestring, kann null seincustom_domain = eigene Domain, workspace_subdomain = {workspace}.dealsky.app, null ohne Domain
custom_domainworkspace_subdomainslugstringLetzter Teil der Adresse der Seite
template_idstring (uuid), kann null seinVorlage, aus der die Seite erzeugt wurde
qr_code_urlstring, kann null seinQR-Code-Bild (PNG) zur Landingpage des Leads, entsteht beim Erzeugen für Briefe
video_urlstring, kann null seinPersönliches Video des Leads (Impact Studio)
video_thumbnail_urlstring, kann null seinVorschaubild zum persönlichen Video des Leads, null ohne Video
page_video_urlstring, kann null seinVideo oben auf der Seite (bei personalisierten Vorlagen dasselbe wie video_url, sonst das Video der Vorlage)
expires_atstring (date-time), kann null seinDanach wird die Seite automatisch gelöscht. null = ohne Ablauf
created_atstring (date-time)Erzeugt am (ISO 8601, UTC)
statsobjectKennzahlen seit dem Erzeugen der Seite. Ist das Tracking in den Einstellungen aus, wird nichts gezählt.
Felder anzeigen
visitsintegerSeitenaufrufe (ohne erkannte Bots und Link-Vorschauen)
unique_visitorsinteger, kann null seinVerschiedene Leads mit mindestens einem Aufruf, gezählt wie in der Kampagnen-Statistik der App. Eine persönliche Seite gehört genau einem Lead, darum 0 oder 1. dealsky speichert keine Besucherkennung, mehrere Geräte desselben Leads zählen also als ein Besucher. null bei Seiten ohne Lead.
video_viewsintegerVideo gestartet (Hauptvideo der Seite)
cta_clicksintegerKlicks auf die Buttons der Seite (Kopf, Mitte, Ende, Erklärvideo)
booking_page_opensintegerBuchungsseite geöffnet
bookingsintegerTermine über die Seite gebucht
first_visit_atstring (date-time), kann null seinErster Seitenaufruf (ISO 8601, UTC), null ohne Aufruf
last_visit_atstring (date-time), kann null seinLetzter Seitenaufruf (ISO 8601, UTC), null ohne Aufruf
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/leads/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/landing-page" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/leads/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/landing-page", {
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/leads/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/landing-page",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
"landing_page_id": "3e8f1a2b-5c6d-4e7f-8a9b-0c1d2e3f4a5b",
"url": "https://angebot.beispiel.de/max-mustermann",
"domain": "angebot.beispiel.de",
"domain_source": "custom_domain",
"slug": "max-mustermann",
"template_id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"qr_code_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/qr-codes/Max-Mustermann.png",
"video_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.mp4",
"video_thumbnail_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.jpg",
"page_video_url": "https://cdn.dealskycloud.com/tenants/9d2c4b1a-0e3f-4a5b-8c7d-6e5f4a3b2c1d/videos/personalized/max-mustermann.mp4",
"expires_at": null,
"created_at": "2026-10-14T09:00:00.000Z",
"stats": {
"visits": 4,
"unique_visitors": 1,
"video_views": 2,
"cta_clicks": 1,
"booking_page_opens": 1,
"bookings": 1,
"first_visit_at": "2026-10-15T08:31:12.000Z",
"last_visit_at": "2026-10-17T19:04:55.000Z"
}
},
"meta": {
"request_id": "req_7f3a…"
}
}Landingpage-Vorlage duplizieren
/v1/landing-page-templates/{id}/duplicatewrite:assetsRecht: Outreach PlattformschreibtLegt eine Kopie einer aktiven Vorlage an, wie „Duplizieren“ unter Assets, Landingpages: dieselbe Seite (Texte, Design, Blöcke, Buchungs- und Danke-Seite, Kalender, Rechtliches), Name mit dem Zusatz (Kopie), sofort aktiv und in Kampagnen wählbar. Wie in der App ohne Vorschaubild (thumbnail_url ist null, bis die Kopie im Editor gespeichert wird). Persönliche Seiten der Vorlage werden nicht kopiert. Kostet nichts.
Die Antwort hat das Format von GET /v1/landing-page-templates/{id}. Gelöschte oder fremde Vorlagen antworten 404, nicht aktive 422 mit details.reason = template_inactive.
Pfad-Parameter
idstring (uuid)PflichtID der Vorlage
Body
namestringmind. 1 Zeichenmax. 200 ZeichenName der Kopie. Ohne Angabe wie in der App: Name der Vorlage mit dem Zusatz (Kopie)
Mögliche Fehler
curl -X POST "https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/duplicate" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/duplicate", {
method: "POST",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.dealsky.io/functions/v1/api/v1/landing-page-templates/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/duplicate",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={},
)
print(res.json()){
"ok": true,
"data": {
"id": "8d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
"name": "Outreach Geschäftsführer (Kopie)",
"description": null,
"status": "active",
"thumbnail_url": null,
"preview_url": "https://app.dealsky.io/preview/demo-landing/8d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
"created_at": "2026-10-18T09:30:00.000Z",
"updated_at": "2026-10-18T09:30:00.000Z",
"structure": {
"layout": "variant1",
"sections": [
"comparison",
"cta",
"approach",
"finalCta"
],
"hidden_sections": [
"faq"
],
"blocks": [
{
"type": "text",
"count": 2
},
{
"type": "testimonial",
"count": 1
}
],
"booking_page_blocks": [
"heading",
"calendar_embed"
],
"thank_you_page_blocks": [
"heading",
"text"
],
"hero_video_type": "personalized",
"external_cta_url": null,
"seo_title": "Ein Video für {{first_name}}",
"seo_description": "Eine persönliche Nachricht von Beispiel GmbH"
},
"landing_pages_count": 0
},
"meta": {
"request_id": "req_7f3a…"
}
}