API-referentie
Taken
Taken op het takenbord: aanmaken, koppelen aan een klant of deal, verplaatsen, afronden en heropenen.
Endpoints
-
GET
/tasksTaken opvragen -
GET
/tasks/{task}Taak ophalen -
POST
/tasksTaak aanmaken -
PATCH
/tasks/{task}Taak bijwerken -
POST
/tasks/{task}/moveTaak verplaatsen -
POST
/tasks/{task}/completeTaak afronden -
POST
/tasks/{task}/reopenTaak heropenen -
POST
/tasks/{task}/cancelTaak annuleren -
DELETE
/tasks/{task}Taak verwijderen
Taken opvragen
/api/v1/tasks
Een lijst van taken, nieuwste eerst. Filter op status, prioriteit, gebruiker, bord, kolom, klant of wijzigingsdatum.
- Scope
-
tasks.read— Taken, borden en reacties lezen - Vereiste functie
tasks
Queryparameters
| Naam | Type | Omschrijving |
|---|---|---|
limit
|
integer | Aantal resultaten per pagina. van 1 tot 100 · standaard: 50 |
cursor
|
string | De next_cursor of prev_cursor uit meta van het vorige antwoord. |
sort
|
string | Sortering op created_at of updated_at; een min-teken ervoor is aflopend. een van: -created_at, created_at, -updated_at, updated_at · standaard: -created_at |
filter[status]
|
string | Alleen taken met deze status: open, in_progress, completed of cancelled. een van: open, in_progress, completed, cancelled |
filter[priority]
|
string | Alleen taken met deze prioriteit. een van: low, normal, high, urgent |
filter[assigned_user_id]
|
string | Alleen wat aan deze gebruiker is toegewezen (de id uit Gebruikers opvragen). |
filter[board_id]
|
string (uuid) | Alleen taken op dit bord. |
filter[status_id]
|
string (uuid) | Alleen taken in deze kolom. |
filter[customer_id]
|
string (uuid) | Alleen wat bij deze klant hoort. |
filter[updated_since]
|
string (date-time) | Alleen wat sinds dit tijdstip is gewijzigd: ISO 8601 mét tijdzone, bijvoorbeeld 2026-09-14T10:15:00Z. Handig om te synchroniseren. |
Voorbeeldverzoek
curl "https://app.klantly.com/api/v1/tasks?filter[status]=open" \
-H "Authorization: Bearer $KLANTLY_API_KEY"$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'];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();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"]Antwoord 200
Het antwoord is een lijst met cursorpaginering: data bevat de objecten, meta de paginering.
{
"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
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
422
validation_failed— De invoer is ongeldig.
Taak ophalen
/api/v1/tasks/{task}
Eén taak op id, met de koppelingen en of er nog open acties zijn.
- Scope
-
tasks.read— Taken, borden en reacties lezen - Vereiste functie
tasks
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Voorbeeldverzoek
curl "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
-H "Authorization: Bearer $KLANTLY_API_KEY"$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
404
not_found— Niet gevonden.
Taak aanmaken
/api/v1/tasks
Maakt een taak aan. Zonder status_id komt hij in de open-kolom van het standaardbord. Koppel hem met links aan een klant, deal, afspraak, werkbon, offerte of factuur. De toegewezen gebruiker krijgt een melding, net als op het scherm.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur een Idempotency-Key mee, dan maakt een nieuwe poging na een time-out geen dubbel record.
Body (JSON)
| Veld | Type | Omschrijving |
|---|---|---|
title
verplicht
|
string | Titel van de taak. maximaal 500 tekens |
description
optioneel
|
string | Omschrijving. kan leeg zijn (null) · maximaal 10000 tekens |
priority
optioneel
|
string | low, normal (standaard), high of urgent. een van: low, normal, high, urgent |
due_date
optioneel
|
string (date) | Deadline als JJJJ-MM-DD, of null. kan leeg zijn (null) |
assigned_user_id
optioneel
|
string | De gebruiker die de taak doet, of null. kan leeg zijn (null) |
status_id
optioneel
|
string (uuid) | De kolom op het bord. Bij aanmaken optioneel; zonder kolom de open-kolom van het standaardbord. kan leeg zijn (null) |
links
optioneel
|
array | De records waar de taak bij hoort (maximaal 20). |
Voorbeeldverzoek
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"
}
]
}'$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'];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();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"]Antwoord 201
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
422
validation_failed— De invoer is ongeldig. -
422
unknown_field— De invoer bevat een onbekend veld. -
415
unsupported_media_type— Dit formaat wordt niet ondersteund. -
413
payload_too_large— De body van het verzoek is te groot. -
422
idempotency_key_reused— Deze Idempotency-Key is al gebruikt voor een ander verzoek. -
409
idempotency_in_progress— Een verzoek met deze Idempotency-Key is nog bezig.
Taak bijwerken
/api/v1/tasks/{task}
Wijzigt alleen de velden die je meestuurt. links vervangt de koppelingen als geheel; koppelingen die de API niet toont (zoals met een gesprek) blijven staan, en dezelfde koppelingen nog eens sturen verandert niets. Een wijziging komt net als op het scherm in de geschiedenis van de taak. Kolom en status verander je met verplaatsen, afronden, heropenen of annuleren.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur de ETag mee in If-Match, dan overschrijf je nooit per ongeluk een nieuwere versie.
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Body (JSON)
| Veld | Type | Omschrijving |
|---|---|---|
title
optioneel
|
string | Titel van de taak. maximaal 500 tekens |
description
optioneel
|
string | Omschrijving. kan leeg zijn (null) · maximaal 10000 tekens |
priority
optioneel
|
string | low, normal (standaard), high of urgent. een van: low, normal, high, urgent |
due_date
optioneel
|
string (date) | Deadline als JJJJ-MM-DD, of null. kan leeg zijn (null) |
assigned_user_id
optioneel
|
string | De gebruiker die de taak doet, of null. kan leeg zijn (null) |
links
optioneel
|
array | De records waar de taak bij hoort (maximaal 20). |
Voorbeeldverzoek
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"
}'$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
422
validation_failed— De invoer is ongeldig. -
422
unknown_field— De invoer bevat een onbekend veld. -
415
unsupported_media_type— Dit formaat wordt niet ondersteund. -
413
payload_too_large— De body van het verzoek is te groot. -
404
not_found— Niet gevonden. -
412
precondition_failed— Het record is intussen gewijzigd.
Taak verplaatsen
/api/v1/tasks/{task}/move
Verplaatst de taak naar een andere kolom, net als slepen op het bord. De kolom bepaalt de status. Naar een afgerond-kolom kan niet zolang er open acties zijn.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur een Idempotency-Key mee, dan maakt een nieuwe poging na een time-out geen dubbel record.
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Body (JSON)
| Veld | Type | Omschrijving |
|---|---|---|
status_id
verplicht
|
string (uuid) | De id van de kolom waar de taak naartoe gaat (uit Takenborden opvragen). |
Voorbeeldverzoek
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"
}'$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
422
validation_failed— De invoer is ongeldig. -
422
unknown_field— De invoer bevat een onbekend veld. -
415
unsupported_media_type— Dit formaat wordt niet ondersteund. -
413
payload_too_large— De body van het verzoek is te groot. -
404
not_found— Niet gevonden. -
409
invalid_state_transition— Deze actie kan niet in de huidige status. -
422
idempotency_key_reused— Deze Idempotency-Key is al gebruikt voor een ander verzoek. -
409
idempotency_in_progress— Een verzoek met deze Idempotency-Key is nog bezig.
Taak afronden
/api/v1/tasks/{task}/complete
Rondt de taak af. Staan er nog open acties op de taak, dan volgt 409: rond die eerst af of sla ze over in Klantly.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur een Idempotency-Key mee, dan maakt een nieuwe poging na een time-out geen dubbel record.
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Voorbeeldverzoek
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"$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
404
not_found— Niet gevonden. -
409
invalid_state_transition— Deze actie kan niet in de huidige status. -
422
idempotency_key_reused— Deze Idempotency-Key is al gebruikt voor een ander verzoek. -
409
idempotency_in_progress— Een verzoek met deze Idempotency-Key is nog bezig.
Taak heropenen
/api/v1/tasks/{task}/reopen
Zet een afgeronde of geannuleerde taak terug op open.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur een Idempotency-Key mee, dan maakt een nieuwe poging na een time-out geen dubbel record.
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Voorbeeldverzoek
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"$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
404
not_found— Niet gevonden. -
422
idempotency_key_reused— Deze Idempotency-Key is al gebruikt voor een ander verzoek. -
409
idempotency_in_progress— Een verzoek met deze Idempotency-Key is nog bezig.
Taak annuleren
/api/v1/tasks/{task}/cancel
Annuleert de taak.
- Scope
-
tasks.write— Taken aanmaken, wijzigen, verplaatsen en afronden, en reacties plaatsen - Vereiste functie
tasks
Stuur een Idempotency-Key mee, dan maakt een nieuwe poging na een time-out geen dubbel record.
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Voorbeeldverzoek
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"$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'];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();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"]Antwoord 200
{
"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"
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
404
not_found— Niet gevonden. -
422
idempotency_key_reused— Deze Idempotency-Key is al gebruikt voor een ander verzoek. -
409
idempotency_in_progress— Een verzoek met deze Idempotency-Key is nog bezig.
Taak verwijderen
/api/v1/tasks/{task}
Verwijdert de taak definitief, met zijn reacties en acties.
- Scope
-
tasks.delete— Taken verwijderen - Vereiste functie
tasks
Padparameters
| Naam | Type | Omschrijving |
|---|---|---|
task verplicht |
string (uuid) | De id (UUID) van de taak. |
Voorbeeldverzoek
curl -X DELETE "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70" \
-H "Authorization: Bearer $KLANTLY_API_KEY"$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'];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();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"]Antwoord 200
{
"data": {
"object": "note",
"id": "9d3f7b41-2d6f-4e8c-9b3a-4f5d6e7a8b92",
"deleted": true
}
}Mogelijke fouten
-
403
insufficient_scope— Deze API-sleutel heeft geen toegang tot deze actie. -
404
not_found— Niet gevonden.
Het object
Alle velden zijn altijd aanwezig; een veld zonder waarde is null.
| Veld | Type | Omschrijving |
|---|---|---|
object |
string | Altijd "task". |
id |
string (uuid) | Unieke id (UUID). |
title |
string | Titel van de taak. |
description |
string | Omschrijving. kan leeg zijn (null) |
status |
string | open, in_progress (bezig), completed (afgerond) of cancelled (geannuleerd); volgt uit de kolom. een van: open, in_progress, completed, cancelled |
priority |
string | low, normal (standaard), high of urgent. een van: low, normal, high, urgent |
due_date |
string (date) | Deadline als JJJJ-MM-DD, of null. kan leeg zijn (null) |
board_id |
string (uuid) | Het bord waar de taak op staat. kan leeg zijn (null) |
status_id |
string (uuid) | De kolom op het bord. Bij aanmaken optioneel; zonder kolom de open-kolom van het standaardbord. kan leeg zijn (null) |
assigned_user_id |
string | De gebruiker die de taak doet, of null. kan leeg zijn (null) |
links |
array<object> | De records waar de taak bij hoort (maximaal 20). |
links.object |
string | Soort record: customer, deal, appointment, work_order, quote of invoice. een van: customer, deal, appointment, work_order, quote, invoice |
links.id |
string (uuid) | Id (UUID) van het record. |
has_open_actions |
boolean | Staan er nog open acties op de taak? Dan kan hij niet worden afgerond. |
completed_at |
string (date-time) | Wanneer de taak werd afgerond. kan leeg zijn (null) |
cancelled_at |
string (date-time) | Wanneer de taak werd geannuleerd. kan leeg zijn (null) |
created_at |
string (date-time) | Aangemaakt op (UTC). |
updated_at |
string (date-time) | Laatst gewijzigd op (UTC). |