dealsky.ioDocs
Zur App
API-Referenz

Jobs

Stand von Hintergrund-Aufträgen (Erzeugen, Löschen, Umwandeln)

#

Hintergrund-Aufträge auflisten

GET/v1/jobs
Scope read:assetsRecht: Outreach Plattformliest

Alle Aufträge des Kontos, neueste zuerst, über alle Arten gemischt. Mehrere Filter werden mit UND verknüpft. lead_id findet die Video-Aufträge, die diesen Lead verarbeiten (auch Aufträge für eine ganze Liste, höchstens die 100 neuesten); Landingpages und Löschungen laufen je Liste, dafür list_id nutzen. Seitenweise über meta.next_cursor: Der Cursor merkt sich Zeitpunkt und ID des letzten Eintrags, darum gibt es beim Blättern keine Doppelten und keine Lücken, auch wenn inzwischen neue Aufträge dazukommen.

| kind | Auftrag | progress |
|---|---|---|
| landing_page | Persönliche Landingpages für eine Liste | erzeugte Seiten von allen, wie im Impact Studio; null bei failed und cancelled |
| video | Personalisierte Videos für einen Lead oder eine Liste | fertige plus fehlgeschlagene Videos von allen, wie im Fortschrittsfenster der App |
| list_deletion | Liste samt aller Leads löschen | gelöschte Leads von allen; null bei failed |
| video_conversion | Aufnahme schneiden und in MP4 wandeln, Sprachaufnahmen in M4A | null solange es läuft, 100 wenn fertig (die App zeigt hier auch keinen Prozentwert) |
| salutation | Anreden-Erkennung (Herr/Frau) für eine Liste oder ausgewählte Leads | geprüfte Leads von allen wie im Fortschrittsfenster der App, 100 sobald die Vorschläge bereitstehen; null bei failed und cancelled |

So bilden sich die Statuswerte der App auf die fünf der API ab:

| status | landing_page | video | list_deletion | video_conversion | salutation |
|---|---|---|---|---|---|
| queued | pending | kommt nicht vor | pending | queued | queued |
| running | generating | running | processing | processing | processing |
| succeeded | completed, completed_with_errors | completed, completed_with_errors | completed, completed_with_errors | done | review_ready, applying, completed |
| failed | failed | failed | failed | error | failed |
| cancelled | stopped | kommt nicht vor | kommt nicht vor | kommt nicht vor | cancelled |

error ist immer ein lesbarer Text, nie eine technische Meldung. Bei succeeded mit einzelnen Fehlschlägen (z. B. 3 von 120 Landingpages) steht die Zahl in result.failed und die Erklärung in error. Abfragen kostet keine Credits.

salutation: succeeded heißt, die Erkennung ist fertig und die Vorschläge stehen bereit. An den Leads stehen die Anreden erst, wenn jemand sie in der App bestätigt (result.applied wird true). Vorschläge, die 7 Tage niemand bestätigt, verwirft dealsky; der Auftrag steht dann auf cancelled.

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

  • kindListe aus string

    Eine oder mehrere Arten, kommagetrennt

    landing_page video list_deletion video_conversion salutation
  • statusListe aus string

    Ein oder mehrere Status, kommagetrennt, z. B. queued,running für alles, was noch läuft

    queued running succeeded failed cancelled
  • lead_idstring (uuid)

    Nur Video-Aufträge, die diesen Lead verarbeiten

  • list_idstring (uuid)

    Nur Aufträge zu dieser Liste

  • created_afterstring (date-time)

    Nur Aufträge, die seitdem gestartet wurden

Felder der Antwort
  • idstring (uuid)

    ID des Auftrags (bei startenden Endpunkten als job_id in der Antwort)

  • kindstring

    Art des Auftrags (Tabelle oben)

    landing_page video list_deletion video_conversion salutation
  • statusstring

    queued wartet, running läuft, succeeded ist durch (einzelne Fehlschläge stehen in result.failed), failed ist gescheitert, cancelled wurde gestoppt

    queued running succeeded failed cancelled
  • progressinteger, kann null seinab 0bis 100

    Fortschritt in Prozent wie in der App, je Art berechnet (Tabelle oben). null, wo die App keinen Wert zeigt

  • namestring, kann null sein

    Anzeigename wie in der App: Vorlage (landing_page), Liste (list_deletion, salutation), Aufnahme (video_conversion)

  • created_atstring (date-time)

    Anlagezeitpunkt des Auftrags (ISO 8601, UTC)

  • updated_atstring (date-time), kann null sein

    Letzte Änderung am Auftrag (ISO 8601, UTC), ohne eigenen Wert der Anlagezeitpunkt. Bei video_conversion der Abschluss

  • finished_atstring (date-time), kann null sein

    Zeitpunkt des Abschlusses, null solange der Auftrag läuft

  • errorstring, kann null sein

    Lesbare Erklärung bei failed oder bei Teil-Fehlschlägen, nie eine technische Meldung

  • resultobject

    Ergebnis je Art; Felder, die für die Art nicht gelten, sind null

    Felder anzeigen
    • totalinteger, kann null sein

      Einheiten im Auftrag: Landingpages, Videos bzw. Leads der Liste (salutation: geprüfte Leads ohne Anrede)

    • succeededinteger, kann null sein

      davon fertig (list_deletion: gelöscht, salutation: Anrede erkannt, in der App „Vorschläge“)

    • failedinteger, kann null sein

      davon fehlgeschlagen (salutation: keine sichere Anrede, in der App „manuell prüfen“)

    • template_idstring (uuid), kann null sein

      landing_page: verwendete Vorlage (GET /v1/landing-page-templates/{id})

    • video_urlstring, kann null sein

      video: fertiges Video, nur bei einem Auftrag für genau einen Lead (bei Listen steht es je Lead in personalized_video_url). video_conversion: das fertige MP4

    • thumbnail_urlstring, kann null sein

      Vorschaubild zu video_url

    • audio_urlstring, kann null sein

      video_conversion einer Sprachaufnahme: die fertige M4A-Datei

    • asset_idstring (uuid), kann null sein

      video_conversion: das angelegte Medium in der Mediathek

    • media_typestring, kann null sein

      video_conversion: Video oder Sprachaufnahme

      video audio
    • appliedboolean, kann null sein

      salutation: true, wenn die erkannten Anreden an den Leads stehen; false, solange die Vorschläge auf Bestätigung in der App warten

  • lead_idstring (uuid), kann null sein

    video: der Lead, wenn der Auftrag genau einem Lead gilt

  • list_idstring (uuid), kann null sein

    Liste des Auftrags. Bei list_deletion nach dem Löschen null

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/jobs" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/jobs", {
  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/jobs",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": [
    {
      "id": "8d2e4f6a-1b3c-4d5e-8f7a-9b0c1d2e3f4a",
      "kind": "landing_page",
      "status": "running",
      "progress": 42,
      "name": "Outreach Geschäftsführer",
      "created_at": "2026-10-18T10:02:11.004Z",
      "updated_at": "2026-10-18T10:05:37.881Z",
      "finished_at": null,
      "error": null,
      "result": {
        "total": 120,
        "succeeded": 50,
        "failed": 1,
        "template_id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
        "video_url": null,
        "thumbnail_url": null,
        "audio_url": null,
        "asset_id": null,
        "media_type": null,
        "applied": null
      },
      "lead_id": null,
      "list_id": "1f4e2d3c-7b6a-4c5d-9e8f-0a1b2c3d4e5f"
    }
  ],
  "meta": {
    "request_id": "req_7f3a…",
    "next_cursor": null,
    "has_more": false
  }
}
#

Stand eines Hintergrund-Auftrags

GET/v1/jobs/{id}
Scope read:assetsRecht: Outreach Plattformliest

Ein Auftrag, egal welcher Art: Landingpages für eine Liste, personalisierte Videos, Löschen einer Liste, Umwandeln einer Aufnahme oder Anreden-Erkennung. Die ID kommt aus GET /v1/jobs oder als job_id von dem Endpunkt, der den Auftrag startet. Zum Warten etwa alle 5 bis 10 Sekunden abfragen, bis status succeeded, failed oder cancelled ist; finished_at ist dann gesetzt.

| kind | Auftrag | progress |
|---|---|---|
| landing_page | Persönliche Landingpages für eine Liste | erzeugte Seiten von allen, wie im Impact Studio; null bei failed und cancelled |
| video | Personalisierte Videos für einen Lead oder eine Liste | fertige plus fehlgeschlagene Videos von allen, wie im Fortschrittsfenster der App |
| list_deletion | Liste samt aller Leads löschen | gelöschte Leads von allen; null bei failed |
| video_conversion | Aufnahme schneiden und in MP4 wandeln, Sprachaufnahmen in M4A | null solange es läuft, 100 wenn fertig (die App zeigt hier auch keinen Prozentwert) |
| salutation | Anreden-Erkennung (Herr/Frau) für eine Liste oder ausgewählte Leads | geprüfte Leads von allen wie im Fortschrittsfenster der App, 100 sobald die Vorschläge bereitstehen; null bei failed und cancelled |

So bilden sich die Statuswerte der App auf die fünf der API ab:

| status | landing_page | video | list_deletion | video_conversion | salutation |
|---|---|---|---|---|---|
| queued | pending | kommt nicht vor | pending | queued | queued |
| running | generating | running | processing | processing | processing |
| succeeded | completed, completed_with_errors | completed, completed_with_errors | completed, completed_with_errors | done | review_ready, applying, completed |
| failed | failed | failed | failed | error | failed |
| cancelled | stopped | kommt nicht vor | kommt nicht vor | kommt nicht vor | cancelled |

error ist immer ein lesbarer Text, nie eine technische Meldung. Bei succeeded mit einzelnen Fehlschlägen (z. B. 3 von 120 Landingpages) steht die Zahl in result.failed und die Erklärung in error. Abfragen kostet keine Credits.

salutation: succeeded heißt, die Erkennung ist fertig und die Vorschläge stehen bereit. An den Leads stehen die Anreden erst, wenn jemand sie in der App bestätigt (result.applied wird true). Vorschläge, die 7 Tage niemand bestätigt, verwirft dealsky; der Auftrag steht dann auf cancelled.

Pfad-Parameter

  • idstring (uuid)Pflicht

    ID des Auftrags

Felder der Antwort
  • idstring (uuid)

    ID des Auftrags (bei startenden Endpunkten als job_id in der Antwort)

  • kindstring

    Art des Auftrags (Tabelle oben)

    landing_page video list_deletion video_conversion salutation
  • statusstring

    queued wartet, running läuft, succeeded ist durch (einzelne Fehlschläge stehen in result.failed), failed ist gescheitert, cancelled wurde gestoppt

    queued running succeeded failed cancelled
  • progressinteger, kann null seinab 0bis 100

    Fortschritt in Prozent wie in der App, je Art berechnet (Tabelle oben). null, wo die App keinen Wert zeigt

  • namestring, kann null sein

    Anzeigename wie in der App: Vorlage (landing_page), Liste (list_deletion, salutation), Aufnahme (video_conversion)

  • created_atstring (date-time)

    Anlagezeitpunkt des Auftrags (ISO 8601, UTC)

  • updated_atstring (date-time), kann null sein

    Letzte Änderung am Auftrag (ISO 8601, UTC), ohne eigenen Wert der Anlagezeitpunkt. Bei video_conversion der Abschluss

  • finished_atstring (date-time), kann null sein

    Zeitpunkt des Abschlusses, null solange der Auftrag läuft

  • errorstring, kann null sein

    Lesbare Erklärung bei failed oder bei Teil-Fehlschlägen, nie eine technische Meldung

  • resultobject

    Ergebnis je Art; Felder, die für die Art nicht gelten, sind null

    Felder anzeigen
    • totalinteger, kann null sein

      Einheiten im Auftrag: Landingpages, Videos bzw. Leads der Liste (salutation: geprüfte Leads ohne Anrede)

    • succeededinteger, kann null sein

      davon fertig (list_deletion: gelöscht, salutation: Anrede erkannt, in der App „Vorschläge“)

    • failedinteger, kann null sein

      davon fehlgeschlagen (salutation: keine sichere Anrede, in der App „manuell prüfen“)

    • template_idstring (uuid), kann null sein

      landing_page: verwendete Vorlage (GET /v1/landing-page-templates/{id})

    • video_urlstring, kann null sein

      video: fertiges Video, nur bei einem Auftrag für genau einen Lead (bei Listen steht es je Lead in personalized_video_url). video_conversion: das fertige MP4

    • thumbnail_urlstring, kann null sein

      Vorschaubild zu video_url

    • audio_urlstring, kann null sein

      video_conversion einer Sprachaufnahme: die fertige M4A-Datei

    • asset_idstring (uuid), kann null sein

      video_conversion: das angelegte Medium in der Mediathek

    • media_typestring, kann null sein

      video_conversion: Video oder Sprachaufnahme

      video audio
    • appliedboolean, kann null sein

      salutation: true, wenn die erkannten Anreden an den Leads stehen; false, solange die Vorschläge auf Bestätigung in der App warten

  • lead_idstring (uuid), kann null sein

    video: der Lead, wenn der Auftrag genau einem Lead gilt

  • list_idstring (uuid), kann null sein

    Liste des Auftrags. Bei list_deletion nach dem Löschen null

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/jobs/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10" \
  -H "X-API-Key: $DEALSKY_API_KEY"
const res = await fetch("https://api.dealsky.io/functions/v1/api/v1/jobs/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/jobs/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
    headers={"X-API-Key": os.environ["DEALSKY_API_KEY"]},
)
print(res.json())
Antwort 200
{
  "ok": true,
  "data": {
    "id": "3f9c2a71-5d4e-4b8a-9c1f-7e6d5a4b3c21",
    "kind": "video",
    "status": "succeeded",
    "progress": 100,
    "name": null,
    "created_at": "2026-10-18T09:12:04.512Z",
    "updated_at": "2026-10-18T09:14:47.103Z",
    "finished_at": "2026-10-18T09:14:47.103Z",
    "error": null,
    "result": {
      "total": 1,
      "succeeded": 1,
      "failed": 0,
      "template_id": null,
      "video_url": "https://cdn.dealskycloud.com/tenants/9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d/personalized/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/video_1760778887103.mp4",
      "thumbnail_url": "https://cdn.dealskycloud.com/tenants/9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d/personalized/5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10/thumbnail_1760778887103.jpg",
      "audio_url": null,
      "asset_id": null,
      "media_type": null,
      "applied": null
    },
    "lead_id": "5b0c1e7a-3f1d-4a52-9c1e-8a7d2b6f4e10",
    "list_id": null
  },
  "meta": {
    "request_id": "req_7f3a…"
  }
}