Klantly Developers

API-Referenz

Aufgaben

Aufgaben auf dem Aufgabenboard: erstellen, mit einem Kunden oder Deal verknüpfen, verschieben, abschließen und wieder öffnen.

Endpunkte

Aufgaben auflisten

GET /api/v1/tasks

Eine Liste von Aufgaben, neueste zuerst. Filtern Sie nach Status, Priorität, Benutzer, Board, Spalte, Kunde oder Änderungsdatum.

Scope
tasks.read — Aufgaben, Boards und Kommentare lesen
Erforderliche Funktion
tasks

Query-Parameter

NameTypBeschreibung
limit integer Anzahl der Ergebnisse pro Seite. von 1 bis 100 · Standard: 50
cursor string Der next_cursor oder prev_cursor aus meta der vorherigen Antwort.
sort string Sortierung nach created_at oder updated_at; ein Minuszeichen davor sortiert absteigend. einer von: -created_at, created_at, -updated_at, updated_at · Standard: -created_at
filter[status] string Nur Aufgaben mit diesem Status: open, in_progress, completed oder cancelled. einer von: open, in_progress, completed, cancelled
filter[priority] string Nur Aufgaben mit dieser Priorität. einer von: low, normal, high, urgent
filter[assigned_user_id] string Nur was diesem Benutzer zugewiesen ist (die ID aus Benutzer auflisten).
filter[board_id] string (uuid) Nur Aufgaben auf diesem Board.
filter[status_id] string (uuid) Nur Aufgaben in dieser Spalte.
filter[customer_id] string (uuid) Nur was zu diesem Kunden gehört.
filter[updated_since] string (date-time) Nur was seit diesem Zeitpunkt geändert wurde: ISO 8601 mit Zeitzone, zum Beispiel 2026-09-14T10:15:00Z. Praktisch zum Synchronisieren.

Beispielanfrage

cURL
curl "https://app.klantly.com/api/v1/tasks?filter[status]=open" \
  -H "Authorization: Bearer $KLANTLY_API_KEY"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('GET', 'tasks', [
    'query' => [
        'filter[status]' => 'open',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks?filter[status]=open', {
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.get(
    "https://app.klantly.com/api/v1/tasks",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
    params={
        "filter[status]": "open"
    },
)
data = response.json()["data"]

Antwort 200

Die Antwort ist eine Liste mit Cursor-Paginierung: data enthält die Objekte, meta die Paginierung.

Beispielantwort
{
  "data": [
    {
      "object": "task",
      "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
      "title": "Offerte nabellen",
      "description": null,
      "status": "open",
      "priority": "normal",
      "due_date": "2026-10-01",
      "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
      "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
      "assigned_user_id": "usr_0k3j9x21m4zq8p",
      "links": [
        {
          "object": "customer",
          "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
        }
      ],
      "has_open_actions": false,
      "completed_at": null,
      "cancelled_at": null,
      "created_at": "2026-09-14T10:15:00Z",
      "updated_at": "2026-09-14T10:15:00Z"
    }
  ],
  "meta": {
    "limit": 50,
    "next_cursor": "eyJpZCI6IjlkM2Y2YzFlIn0",
    "prev_cursor": null
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe abrufen

GET /api/v1/tasks/{task}

Eine Aufgabe nach ID, mit ihren Verknüpfungen und ob es noch offene Aktionen gibt.

Scope
tasks.read — Aufgaben, Boards und Kommentare lesen
Erforderliche Funktion
tasks

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Beispielanfrage

cURL
curl "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
  -H "Authorization: Bearer $KLANTLY_API_KEY"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('GET', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70');

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70', {
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.get(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe erstellen

POST /api/v1/tasks

Erstellt eine Aufgabe. Ohne status_id landet sie in der offenen Spalte des Standardboards. Verknüpfen Sie sie mit links mit einem Kunden, Deal, Termin, Arbeitsauftrag, Angebot oder einer Rechnung. Der zugewiesene Benutzer erhält eine Benachrichtigung, genau wie auf dem Bildschirm.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie einen Idempotency-Key mit, dann erzeugt ein erneuter Versuch nach einem Timeout keinen doppelten Datensatz.

Body (JSON)

FeldTypBeschreibung
title erforderlich string Titel der Aufgabe. höchstens 500 Zeichen
description optional string Beschreibung. kann leer sein (null) · höchstens 10000 Zeichen
priority optional string low, normal (Standard), high oder urgent. einer von: low, normal, high, urgent
due_date optional string (date) Frist als JJJJ-MM-TT, oder null. kann leer sein (null)
assigned_user_id optional string Der Benutzer, der die Aufgabe erledigt, oder null. kann leer sein (null)
status_id optional string (uuid) Die Spalte auf dem Board. Beim Erstellen optional; ohne Spalte: die offene Spalte des Standardboards. kann leer sein (null)
links optional array Die Datensätze, zu denen die Aufgabe gehört (höchstens 20).

Beispielanfrage

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f" \
  -d '{
  "title": "Offerte nabellen",
  "due_date": "2026-10-01",
  "assigned_user_id": "usr_0k3j9x21m4zq8p",
  "links": [
    {
      "object": "customer",
      "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
    }
  ]
}'
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('POST', 'tasks', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
    'json' => [
        'title' => 'Offerte nabellen',
        'due_date' => '2026-10-01',
        'assigned_user_id' => 'usr_0k3j9x21m4zq8p',
        'links' => [
            0 => [
                'object' => 'customer',
                'id' => '9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70',
            ],
        ],
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
  body: JSON.stringify({
  "title": "Offerte nabellen",
  "due_date": "2026-10-01",
  "assigned_user_id": "usr_0k3j9x21m4zq8p",
  "links": [
    {
      "object": "customer",
      "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
    }
  ]
}),
});

const { data } = await response.json();
Python
import os

import requests

response = requests.post(
    "https://app.klantly.com/api/v1/tasks",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
    json={
        "title": "Offerte nabellen",
        "due_date": "2026-10-01",
        "assigned_user_id": "usr_0k3j9x21m4zq8p",
        "links": [
            {
                "object": "customer",
                "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
            }
        ]
    },
)
data = response.json()["data"]

Antwort 201

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe bearbeiten

PATCH /api/v1/tasks/{task}

Ändert nur die Felder, die Sie mitsenden. links ersetzt die Verknüpfungen als Ganzes; Verknüpfungen, die die API nicht zeigt (etwa mit einem Gespräch), bleiben bestehen, und dieselben Verknüpfungen erneut zu senden ändert nichts. Eine Änderung erscheint wie auf dem Bildschirm im Verlauf der Aufgabe. Spalte und Status ändern Sie mit Verschieben, Abschließen, Wieder öffnen oder Abbrechen.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie das ETag in If-Match mit, dann überschreiben Sie nie versehentlich eine neuere Version.

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Body (JSON)

FeldTypBeschreibung
title optional string Titel der Aufgabe. höchstens 500 Zeichen
description optional string Beschreibung. kann leer sein (null) · höchstens 10000 Zeichen
priority optional string low, normal (Standard), high oder urgent. einer von: low, normal, high, urgent
due_date optional string (date) Frist als JJJJ-MM-TT, oder null. kann leer sein (null)
assigned_user_id optional string Der Benutzer, der die Aufgabe erledigt, oder null. kann leer sein (null)
links optional array Die Datensätze, zu denen die Aufgabe gehört (höchstens 20).

Beispielanfrage

cURL
curl -X PATCH "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "priority": "high"
}'
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('PATCH', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70', [
    'json' => [
        'priority' => 'high',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "priority": "high"
}),
});

const { data } = await response.json();
Python
import os

import requests

response = requests.patch(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
    json={
        "priority": "high"
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe verschieben

POST /api/v1/tasks/{task}/move

Verschiebt die Aufgabe in eine andere Spalte, genau wie das Ziehen auf dem Board. Die Spalte bestimmt den Status. In eine abgeschlossene Spalte geht es nicht, solange offene Aktionen bestehen.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie einen Idempotency-Key mit, dann erzeugt ein erneuter Versuch nach einem Timeout keinen doppelten Datensatz.

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Body (JSON)

FeldTypBeschreibung
status_id erforderlich string (uuid) Die ID der Spalte, in die die Aufgabe verschoben wird (aus Aufgabenboards auflisten).

Beispielanfrage

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/move" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f" \
  -d '{
  "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8"
}'
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('POST', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/move', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
    'json' => [
        'status_id' => '9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/move', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
  body: JSON.stringify({
  "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8"
}),
});

const { data } = await response.json();
Python
import os

import requests

response = requests.post(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/move",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
    json={
        "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8"
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe abschließen

POST /api/v1/tasks/{task}/complete

Schließt die Aufgabe ab. Hat sie noch offene Aktionen, folgt 409: Schließen Sie diese zuerst in Klantly ab oder überspringen Sie sie.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie einen Idempotency-Key mit, dann erzeugt ein erneuter Versuch nach einem Timeout keinen doppelten Datensatz.

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Beispielanfrage

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/complete" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('POST', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/complete', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/complete', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.post(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/complete",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe wieder öffnen

POST /api/v1/tasks/{task}/reopen

Setzt eine abgeschlossene oder abgebrochene Aufgabe zurück auf offen.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie einen Idempotency-Key mit, dann erzeugt ein erneuter Versuch nach einem Timeout keinen doppelten Datensatz.

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Beispielanfrage

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/reopen" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('POST', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/reopen', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/reopen', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.post(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/reopen",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe abbrechen

POST /api/v1/tasks/{task}/cancel

Bricht die Aufgabe ab.

Scope
tasks.write — Aufgaben erstellen, bearbeiten, verschieben und abschließen sowie Kommentare schreiben
Erforderliche Funktion
tasks

Senden Sie einen Idempotency-Key mit, dann erzeugt ein erneuter Versuch nach einem Timeout keinen doppelten Datensatz.

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Beispielanfrage

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/cancel" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('POST', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/cancel', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
]);

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/cancel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.post(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/cancel",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "task",
    "id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "title": "Offerte nabellen",
    "description": null,
    "status": "open",
    "priority": "normal",
    "due_date": "2026-10-01",
    "board_id": "9d3f80e6-7cbe-4d3b-8a8f-9eacbdcedfe7",
    "status_id": "9d3f8207-8dcf-4e4c-9b9a-afbdcedfe0f8",
    "assigned_user_id": "usr_0k3j9x21m4zq8p",
    "links": [
      {
        "object": "customer",
        "id": "9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70"
      }
    ],
    "has_open_actions": false,
    "completed_at": null,
    "cancelled_at": null,
    "created_at": "2026-09-14T10:15:00Z",
    "updated_at": "2026-09-14T10:15:00Z"
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Aufgabe löschen

DELETE /api/v1/tasks/{task}

Löscht die Aufgabe endgültig, mit ihren Kommentaren und Aktionen.

Scope
tasks.delete — Aufgaben löschen
Erforderliche Funktion
tasks

Pfadparameter

NameTypBeschreibung
task erforderlich string (uuid) Die ID (UUID) der Aufgabe.

Beispielanfrage

cURL
curl -X DELETE "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
  -H "Authorization: Bearer $KLANTLY_API_KEY"
PHP
$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.klantly.com/api/v1/',
    'headers' => ['Authorization' => 'Bearer ' . getenv('KLANTLY_API_KEY')],
]);

$response = $client->request('DELETE', 'tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70');

$data = json_decode((string) $response->getBody(), true)['data'];
JavaScript
const response = await fetch('https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
  },
});

const { data } = await response.json();
Python
import os

import requests

response = requests.delete(
    "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
)
data = response.json()["data"]

Antwort 200

Beispielantwort
{
  "data": {
    "object": "note",
    "id": "9d3f7b41-2d6f-4e8c-9b3a-4f5d6e7a8b92",
    "deleted": true
  }
}

Mögliche Fehler

Zusätzlich kann jeder Endpunkt die allgemeinen Fehler zurückgeben, etwa einen ungültigen Schlüssel oder ein erreichtes Limit. Alle Fehlercodes ansehen.

Das Objekt

Alle Felder sind immer vorhanden; ein Feld ohne Wert ist null.

FeldTypBeschreibung
object string Immer „task“.
id string (uuid) Eindeutige ID (UUID).
title string Titel der Aufgabe.
description string Beschreibung. kann leer sein (null)
status string open, in_progress (in Arbeit), completed (abgeschlossen) oder cancelled (abgebrochen); ergibt sich aus der Spalte. einer von: open, in_progress, completed, cancelled
priority string low, normal (Standard), high oder urgent. einer von: low, normal, high, urgent
due_date string (date) Frist als JJJJ-MM-TT, oder null. kann leer sein (null)
board_id string (uuid) Das Board, auf dem die Aufgabe steht. kann leer sein (null)
status_id string (uuid) Die Spalte auf dem Board. Beim Erstellen optional; ohne Spalte: die offene Spalte des Standardboards. kann leer sein (null)
assigned_user_id string Der Benutzer, der die Aufgabe erledigt, oder null. kann leer sein (null)
links array<object> Die Datensätze, zu denen die Aufgabe gehört (höchstens 20).
links.object string Art des Datensatzes: customer, deal, appointment, work_order, quote oder invoice. einer von: customer, deal, appointment, work_order, quote, invoice
links.id string (uuid) ID (UUID) des Datensatzes.
has_open_actions boolean Gibt es noch offene Aktionen? Dann kann die Aufgabe nicht abgeschlossen werden.
completed_at string (date-time) Wann die Aufgabe abgeschlossen wurde. kann leer sein (null)
cancelled_at string (date-time) Wann die Aufgabe abgebrochen wurde. kann leer sein (null)
created_at string (date-time) Erstellt am (UTC).
updated_at string (date-time) Zuletzt geändert am (UTC).