Listen
Lead-Listen und Ordner verwalten
Listen auflisten
/v1/listsread:leadsRecht: Leads einsehenliestNeueste zuerst. name sucht als Teilstring (Groß/Klein egal).
Query-Parameter
limitintegerab 1bis 100Einträge pro Seite (Standard 25, höchstens 100)
cursorstringmax. 200 ZeichenWert aus meta.next_cursor der vorigen Seite
namestringmax. 200 ZeichenTeil des Namens (Groß/Klein egal)
campaign_idstring (uuid)Nur Listen, die an diese Kampagne gebunden sind
Felder der Antwort
idstring (uuid)ID der Liste
namestringmind. 1 Zeichenmax. 200 ZeichenName der Liste, wie er in der App steht
descriptionstring, kann null seinmax. 2000 ZeichenFreitext zur Liste, z. B. woher die Kontakte stammen. null leert sie
campaign_idstring (uuid), kann null seinKampagne, an die die Liste gebunden ist
folder_idstring (uuid), kann null seinOrdner der Liste (siehe /v1/list-folders), null = oberste Ebene
leads_countintegerLeads in der Liste ohne archivierte, von der Datenbank mitgezählt
personalized_landing_pages_countintegerLeads der Liste (ohne archivierte) mit personalisierter Landingpage
personalized_videos_countintegerLeads der Liste (ohne archivierte) mit personalisiertem Video
created_atstring (date-time)Zeitpunkt der Anlage
updated_atstring (date-time)Zeitpunkt der letzten Änderung, auch wenn sich die Lead-Zahlen geändert haben
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/lists" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/lists", {
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/lists",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": [
{
"id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand",
"campaign_id": null,
"folder_id": null,
"leads_count": 128,
"personalized_landing_pages_count": 0,
"personalized_videos_count": 0,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-18T09:12:00.000Z"
}
],
"meta": {
"request_id": "req_7f3a…",
"next_cursor": null,
"has_more": false
}
}Liste anlegen
/v1/listswrite:leadsRecht: Leads anlegen/bearbeitenschreibtLegt eine leere Liste an. Ohne folder_id steht sie auf der obersten Ebene. Mit folder_id (siehe GET /v1/list-folders) entsteht sie direkt in diesem Ordner, wie „Neue Liste“ in einem geöffneten Ordner der App; ein unbekannter oder fremder Ordner ergibt 400. Für folder_id braucht es einen API-Key, der einer Person zugeordnet ist; ohne Ordner legen auch ältere Keys ohne Person Listen an. Leads kommen danach mit list_id über POST /v1/leads oder POST /v1/leads/bulk hinein. Kostet keine Credits. Mit Test-Key wird geprüft, aber nichts angelegt (would_create).
Body
namestringPflichtmind. 1 Zeichenmax. 200 ZeichenName der Liste, wie er in der App steht
descriptionstring, kann null seinmax. 2000 ZeichenFreitext zur Liste, z. B. woher die Kontakte stammen. null leert sie
folder_idstring (uuid), kann null seinOrdner, in dem die Liste entsteht (siehe GET /v1/list-folders). Weglassen oder null = oberste Ebene
Mögliche Fehler
curl -X POST "https://api.dealsky.io/functions/v1/api/v1/lists" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand"
}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/lists", {
method: "POST",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand"
}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.dealsky.io/functions/v1/api/v1/lists",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand"
},
)
print(res.json()){
"ok": true,
"data": {
"id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand",
"campaign_id": null,
"folder_id": null,
"leads_count": 128,
"personalized_landing_pages_count": 0,
"personalized_videos_count": 0,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-18T09:12:00.000Z"
},
"meta": {
"request_id": "req_7f3a…"
}
}Eine Liste abrufen
/v1/lists/{id}read:leadsRecht: Leads einsehenliestLiefert eine Liste des eigenen Kontos mit Ordner (folder_id), gebundener Kampagne (campaign_id) und den Zählern der App für Leads, persönliche Landingpages und Videos. Die Leads selbst liefert GET /v1/leads?list_id=…. Eine unbekannte oder fremde ID ergibt 404.
Pfad-Parameter
idstring (uuid)PflichtID der Liste
Felder der Antwort
idstring (uuid)ID der Liste
namestringmind. 1 Zeichenmax. 200 ZeichenName der Liste, wie er in der App steht
descriptionstring, kann null seinmax. 2000 ZeichenFreitext zur Liste, z. B. woher die Kontakte stammen. null leert sie
campaign_idstring (uuid), kann null seinKampagne, an die die Liste gebunden ist
folder_idstring (uuid), kann null seinOrdner der Liste (siehe /v1/list-folders), null = oberste Ebene
leads_countintegerLeads in der Liste ohne archivierte, von der Datenbank mitgezählt
personalized_landing_pages_countintegerLeads der Liste (ohne archivierte) mit personalisierter Landingpage
personalized_videos_countintegerLeads der Liste (ohne archivierte) mit personalisiertem Video
created_atstring (date-time)Zeitpunkt der Anlage
updated_atstring (date-time)Zeitpunkt der letzten Änderung, auch wenn sich die Lead-Zahlen geändert haben
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/lists/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/lists/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/lists/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
"name": "Messe Köln 2026",
"description": "Kontakte vom Messestand",
"campaign_id": null,
"folder_id": null,
"leads_count": 128,
"personalized_landing_pages_count": 0,
"personalized_videos_count": 0,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-18T09:12:00.000Z"
},
"meta": {
"request_id": "req_7f3a…"
}
}Liste umbenennen, Beschreibung ändern oder in einen Ordner verschieben
/v1/lists/{id}write:leadsRecht: Leads anlegen/bearbeitenschreibtNur übergebene Felder werden geändert. folder_id verschiebt die Liste in einen Ordner (siehe GET /v1/list-folders), null holt sie auf die oberste Ebene, wie das Verschieben in der App. Leads, Kampagne und Landingpages der Liste bleiben unberührt. Zum Verschieben braucht es einen API-Key, der einer Person zugeordnet ist; Name und Beschreibung ändern auch ältere Keys ohne Person.
Pfad-Parameter
idstring (uuid)PflichtID der Liste
Body
namestringmind. 1 Zeichenmax. 200 ZeichenName der Liste, wie er in der App steht
descriptionstring, kann null seinmax. 2000 ZeichenFreitext zur Liste, z. B. woher die Kontakte stammen. null leert sie
folder_idstring (uuid), kann null seinOrdner der Liste (siehe /v1/list-folders), null = oberste Ebene
Felder der Antwort
idstring (uuid)ID der Liste
namestringmind. 1 Zeichenmax. 200 ZeichenName der Liste, wie er in der App steht
descriptionstring, kann null seinmax. 2000 ZeichenFreitext zur Liste, z. B. woher die Kontakte stammen. null leert sie
campaign_idstring (uuid), kann null seinKampagne, an die die Liste gebunden ist
folder_idstring (uuid), kann null seinOrdner der Liste (siehe /v1/list-folders), null = oberste Ebene
leads_countintegerLeads in der Liste ohne archivierte, von der Datenbank mitgezählt
personalized_landing_pages_countintegerLeads der Liste (ohne archivierte) mit personalisierter Landingpage
personalized_videos_countintegerLeads der Liste (ohne archivierte) mit personalisiertem Video
created_atstring (date-time)Zeitpunkt der Anlage
updated_atstring (date-time)Zeitpunkt der letzten Änderung, auch wenn sich die Lead-Zahlen geändert haben
Mögliche Fehler
curl -X PATCH "https://api.dealsky.io/functions/v1/api/v1/lists/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Messe Köln 2026 (nachbearbeitet)"
}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/lists/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10", {
method: "PATCH",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Messe Köln 2026 (nachbearbeitet)"
}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"PATCH",
"https://api.dealsky.io/functions/v1/api/v1/lists/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={
"name": "Messe Köln 2026 (nachbearbeitet)"
},
)
print(res.json()){
"ok": true,
"data": {
"id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f",
"name": "Messe Köln 2026 (nachbearbeitet)",
"description": "Kontakte vom Messestand",
"campaign_id": null,
"folder_id": null,
"leads_count": 128,
"personalized_landing_pages_count": 0,
"personalized_videos_count": 0,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-18T09:12:00.000Z"
},
"meta": {
"request_id": "req_7f3a…"
}
}Ordner für Listen auflisten
/v1/list-foldersread:leadsRecht: Leads einsehenliestAlle Ordner des Kontos, nach Name sortiert wie in der App. Unterordner haben parent_folder_id. Welche Listen in einem Ordner liegen, steht in folder_id der Listen (GET /v1/lists).
Query-Parameter
limitintegerab 1bis 100Einträge pro Seite (Standard 25, höchstens 100)
cursorstringmax. 200 ZeichenWert aus meta.next_cursor der vorigen Seite
Felder der Antwort
idstring (uuid)ID des Ordners
namestringmind. 1 Zeichenmax. 200 ZeichenName des Ordners
parent_folder_idstring (uuid), kann null seinÜbergeordneter Ordner, null = oberste Ebene. Wie in der App höchstens zwei Ebenen: der übergeordnete Ordner muss selbst auf oberster Ebene liegen.
created_atstring (date-time)Angelegt am
updated_atstring (date-time)Zuletzt geändert am (auch beim Umbenennen oder Verschieben)
Mögliche Fehler
curl -X GET "https://api.dealsky.io/functions/v1/api/v1/list-folders" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/list-folders", {
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/list-folders",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": [
{
"id": "7e6d5c4b-3a2f-4e1d-8c9b-8a7f6e5d4c3b",
"name": "Köln",
"parent_folder_id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-01T08:00:00.000Z"
},
{
"id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"name": "Messen 2026",
"parent_folder_id": null,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-01T08:00:00.000Z"
}
],
"meta": {
"request_id": "req_7f3a…",
"next_cursor": null,
"has_more": false
}
}Ordner anlegen
/v1/list-folderswrite:leadsRecht: Leads anlegen/bearbeitenschreibtLegt einen Ordner auf oberster Ebene oder, mit parent_folder_id, als Unterordner an. Wie in der App höchstens zwei Ebenen. Ein gleichnamiger Unterordner im selben Ordner ergibt 409. Listen kommen per PATCH /v1/lists/{id} mit folder_id hinein.
Body
namestringPflichtmind. 1 Zeichenmax. 200 ZeichenName des Ordners
parent_folder_idstring (uuid), kann null seinÜbergeordneter Ordner, null = oberste Ebene. Wie in der App höchstens zwei Ebenen: der übergeordnete Ordner muss selbst auf oberster Ebene liegen.
Mögliche Fehler
curl -X POST "https://api.dealsky.io/functions/v1/api/v1/list-folders" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Messen 2026"
}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/list-folders", {
method: "POST",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Messen 2026"
}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.dealsky.io/functions/v1/api/v1/list-folders",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={
"name": "Messen 2026"
},
)
print(res.json()){
"ok": true,
"data": {
"id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"name": "Messen 2026",
"parent_folder_id": null,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-01T08:00:00.000Z"
},
"meta": {
"request_id": "req_7f3a…"
}
}Ordner umbenennen
/v1/list-folders/{id}write:leadsRecht: Leads anlegen/bearbeitenschreibtÄndert den Namen, wie „Umbenennen“ in der App. Verschieben von Ordnern bietet die App nicht an, die API darum auch nicht. Ein gleichnamiger Unterordner im selben Ordner ergibt 409.
Pfad-Parameter
idstring (uuid)PflichtID des Ordners
Body
namestringPflichtmind. 1 Zeichenmax. 200 ZeichenName des Ordners
Felder der Antwort
idstring (uuid)ID des Ordners
namestringmind. 1 Zeichenmax. 200 ZeichenName des Ordners
parent_folder_idstring (uuid), kann null seinÜbergeordneter Ordner, null = oberste Ebene. Wie in der App höchstens zwei Ebenen: der übergeordnete Ordner muss selbst auf oberster Ebene liegen.
created_atstring (date-time)Angelegt am
updated_atstring (date-time)Zuletzt geändert am (auch beim Umbenennen oder Verschieben)
Mögliche Fehler
curl -X PATCH "https://api.dealsky.io/functions/v1/api/v1/list-folders/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Messen 2027"
}'const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/list-folders/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10", {
method: "PATCH",
headers: {
"X-API-Key": process.env.DEALSKY_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Messen 2027"
}),
});
const { ok, data, error } = await res.json();import os, requests
res = requests.request(
"PATCH",
"https://api.dealsky.io/functions/v1/api/v1/list-folders/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
json={
"name": "Messen 2027"
},
)
print(res.json()){
"ok": true,
"data": {
"id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"name": "Messen 2027",
"parent_folder_id": null,
"created_at": "2026-10-01T08:00:00.000Z",
"updated_at": "2026-10-18T09:12:00.000Z"
},
"meta": {
"request_id": "req_7f3a…"
}
}Ordner löschen (Listen bleiben erhalten)
/v1/list-folders/{id}write:leadsRecht: Leads anlegen/bearbeitenschreibtLöscht nur den Ordner, wie in der App: Listen darin und Unterordner (samt ihren Listen) bleiben erhalten und rücken auf die oberste Ebene. Leads, Kampagnen und Landingpages sind nicht betroffen. Die Antwort nennt, wie viele Listen und Unterordner verschoben wurden. Listen selbst löschen geht hierüber nicht.
Pfad-Parameter
idstring (uuid)PflichtID des Ordners
Felder der Antwort
deletedbooleanImmer true, wenn der Ordner gelöscht wurde
idstring (uuid)ID des gelöschten Ordners
lists_moved_to_topintegerListen, die im Ordner lagen und jetzt auf oberster Ebene stehen
subfolders_moved_to_topintegerUnterordner, die jetzt auf oberster Ebene stehen (ihre Listen bleiben darin)
Mögliche Fehler
curl -X DELETE "https://api.dealsky.io/functions/v1/api/v1/list-folders/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
-H "X-API-Key: $DEALSKY_API_KEY"const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/list-folders/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/list-folders/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json()){
"ok": true,
"data": {
"deleted": true,
"id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"lists_moved_to_top": 3,
"subfolders_moved_to_top": 1
},
"meta": {
"request_id": "req_7f3a…"
}
}