Klantly Developers

Référence de l'API

Commentaires sur les tâches

Les commentaires sur une tâche, y compris les lignes que Klantly écrit lui-même.

Endpoints

Lister les commentaires d’une tâche

GET /api/v1/tasks/{task}/comments

Les commentaires d’une tâche, du plus ancien au plus récent, y compris les lignes écrites par Klantly lui-même (is_system).

Scope
tasks.read — Lire les tâches, les tableaux et les commentaires
Fonctionnalité requise
tasks

Paramètres de chemin

NomTypeDescription
task obligatoire string (uuid) L’id (UUID) de la tâche.

Paramètres de requête

NomTypeDescription
limit integer Nombre de résultats par page. de 1 à 100 · par défaut : 50
cursor string Le next_cursor ou prev_cursor de meta dans la réponse précédente.

Exemple de requête

cURL
curl "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/comments" \
  -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/comments');

$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/comments', {
  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/comments",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
    },
)
data = response.json()["data"]

Réponse 200

La réponse est une liste avec pagination par curseur : data contient les objets, meta la pagination.

Exemple de réponse
{
  "data": [
    {
      "object": "task_comment",
      "id": "9d3f8449-afe1-4a6e-9dbc-c1dfe0f1a2ba",
      "task_id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
      "body": "Klant belt morgen terug.",
      "is_system": false,
      "author": {
        "object": "user",
        "id": "usr_0k3j9x21m4zq8p",
        "name": "Sanne Bakker"
      },
      "created_at": "2026-09-14T10:15:00Z"
    }
  ],
  "meta": {
    "limit": 50,
    "next_cursor": "eyJpZCI6IjlkM2Y2YzFlIn0",
    "prev_cursor": null
  }
}

Erreurs possibles

En outre, chaque endpoint peut renvoyer les erreurs générales, comme une clé invalide ou une limite atteinte. Voir tous les codes d'erreur.

Publier un commentaire

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

Publie un commentaire sur la tâche. L’utilisateur assigné et le créateur reçoivent une notification. Un commentaire publié via l’API n’a pas d’auteur.

Scope
tasks.write — Créer, modifier, déplacer et terminer des tâches, et publier des commentaires
Fonctionnalité requise
tasks

Envoyez une Idempotency-Key : une nouvelle tentative après un délai d'attente ne crée alors jamais de doublon.

Paramètres de chemin

NomTypeDescription
task obligatoire string (uuid) L’id (UUID) de la tâche.

Corps (JSON)

ChampTypeDescription
body obligatoire string Le texte du commentaire. au maximum 5000 caractères

Exemple de requête

cURL
curl -X POST "https://app.klantly.com/api/v1/tasks/9d3f6c1e-4b2a-4c8e-9f1a-2b3c4d5e6f70/comments" \
  -H "Authorization: Bearer $KLANTLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f" \
  -d '{
  "body": "Klant belt morgen terug."
}'
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/comments', [
    'headers' => [
        'Idempotency-Key' => '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
    ],
    'json' => [
        'body' => 'Klant belt morgen terug.',
    ],
]);

$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/comments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KLANTLY_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': '6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f',
  },
  body: JSON.stringify({
  "body": "Klant belt morgen terug."
}),
});

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/comments",
    headers={
        "Authorization": f"Bearer {os.environ['KLANTLY_API_KEY']}",
        "Idempotency-Key": "6f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
    },
    json={
        "body": "Klant belt morgen terug."
    },
)
data = response.json()["data"]

Réponse 201

Exemple de réponse
{
  "data": {
    "object": "task_comment",
    "id": "9d3f8449-afe1-4a6e-9dbc-c1dfe0f1a2ba",
    "task_id": "9d3f7fc5-6bad-4c2a-9f7e-8d9bacbdced6",
    "body": "Klant belt morgen terug.",
    "is_system": false,
    "author": {
      "object": "user",
      "id": "usr_0k3j9x21m4zq8p",
      "name": "Sanne Bakker"
    },
    "created_at": "2026-09-14T10:15:00Z"
  }
}

Erreurs possibles

En outre, chaque endpoint peut renvoyer les erreurs générales, comme une clé invalide ou une limite atteinte. Voir tous les codes d'erreur.

L'objet

Tous les champs sont toujours présents ; un champ sans valeur vaut null.

ChampTypeDescription
object string Toujours « task_comment ».
id string (uuid) Id unique (UUID).
task_id string (uuid) La tâche.
body string Le texte du commentaire.
is_system boolean Une ligne écrite par Klantly lui-même, comme « déplacée vers la colonne En cours ».
author object Qui a écrit le commentaire, ou null (une ligne système ou un commentaire via l’API). peut être vide (null)
author.object string Toujours « user ».
author.id string Id de l’utilisateur.
author.name string Nom de l’utilisateur.
created_at string (date-time) Publié le (UTC).