Construisez sur tarsiflow avec une API REST simple
Lisez et mettez à jour clients, prospects, projets et tâches, et intégrez factures et propositions à vos rapports. Créez un jeton dans votre espace de travail et faites votre première requête en une minute.
- REST et JSON
- Jetons personnels
- Accès en lecture ou en écriture
Premiers pas
-
1. Créer un jeton
Dans l'application, ouvrez le menu de votre compte et choisissez Jetons d'API. Choisissez lecture seule ou lecture et écriture.
-
2. Appelez l'API
Envoyez vos requêtes à l'URL de base ci-dessous avec votre jeton dans l'en-tête Authorization.
-
3. Gardez-le en sécurité
Un jeton agit en votre nom dans un espace de travail. Révoquez-le à tout moment depuis la même page.
URL de base
https://tarsiflow.com/api/v1
Authentification
Chaque requête nécessite un jeton bearer. Les jetons en lecture peuvent appeler tous les endpoints GET. Les jetons en écriture peuvent aussi créer et modifier des éléments.
curl https://tarsiflow.com/api/v1/me \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Conventions
- Les requêtes et les réponses sont en JSON. Envoyez Content-Type: application/json quand vous transmettez des données.
- Les montants sont toujours un nombre entier de centimes avec un code de devise à trois lettres séparé : 125000 avec USD vaut 1 250,00 dollars.
- Les dates sont au format YYYY-MM-DD. Les horodatages sont en ISO 8601, en UTC.
- Les listes sont paginées. Utilisez page et per_page (jusqu'à 100). Chaque réponse contient links et meta avec les totaux.
- Les mises à jour utilisent PATCH et ne modifient que les champs envoyés.
Erreurs et limites
| Statut | Signification |
|---|---|
| 401 | Jeton absent, expiré ou révoqué. |
| 403 | Le jeton est en lecture seule, ou vous n'appartenez plus à son espace de travail. |
| 404 | L'élément n'existe pas dans cet espace de travail. |
| 422 | La validation a échoué. L'objet errors liste chaque champ et ce qu'il faut corriger. |
| 429 | Trop de requêtes. La limite est de 120 requêtes par minute et par jeton. |
{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
}
Compte
À qui appartient le jeton, l'espace de travail où il fonctionne, ses membres et les étapes du pipeline.
-
GET
/meLe propriétaire du jeton, l'espace de travail et les droits du jeton. -
GET
/membersLes membres de l'espace de travail, pour les ids de responsable et de propriétaire. -
GET
/lead-stagesLes étapes du pipeline, pour lead_stage_id.
Clients
Tous les clients de l'espace de travail avec leur contact principal.
-
GET
/clientsListe les clients. Filtres : search, status, tag. -
POST
/clientsCrée un client. -
GET
/clients/{id}Renvoie un client. -
PATCH
/clients/{id}Met à jour un client. N'envoyez que les champs modifiés.
Champs que vous pouvez envoyer
- name
- string
- Obligatoire à la création.
- status
- string
- active, inactive, archived
- email, phone, website, address
- string
- Coordonnées facultatives.
- currency
- string
- Code à trois lettres, comme USD. Par défaut, la devise de l'espace de travail.
- tags
- array
- Liste de libellés courts.
Exemple
curl -X POST https://tarsiflow.com/api/v1/clients \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"name":"Brightline Dental","email":"[email protected]","tags":["healthcare"]}'
{
"data": {
"id": 42,
"name": "Brightline Dental",
"status": "active",
"email": "[email protected]",
"currency": "USD",
"tags": [
"healthcare"
],
"primary_contact": null
}
}
Prospects
Les opportunités de votre pipeline. Les valeurs sont en centimes.
-
GET
/leadsListe les prospects. Filtres : stage_id, search. -
POST
/leadsCrée un prospect. Il arrive dans la première étape ouverte, sauf si vous passez lead_stage_id. -
GET
/leads/{id}Renvoie un prospect. -
PATCH
/leads/{id}Met à jour un prospect, y compris pour le changer d'étape.
Champs que vous pouvez envoyer
- name
- string
- Obligatoire à la création. Le projet ou la personne, par exemple Refonte du site.
- company, email, phone, source, notes
- string
- Informations facultatives.
- value_cents
- integer
- Valeur estimée en centimes. 250000 correspond à 2 500,00.
- expected_close_date
- date
- YYYY-MM-DD
- lead_stage_id, owner_id
- integer
- Ids issus de /lead-stages et /members.
Projets
Projets clients. Les nouveaux projets reçoivent automatiquement une première liste de tâches.
-
GET
/projectsListe les projets. Filtres : client_id, status. -
POST
/projectsCrée un projet pour un client. -
GET
/projects/{id}Renvoie un projet avec ses listes de tâches. -
PATCH
/projects/{id}Met à jour un projet.
Champs que vous pouvez envoyer
- client_id, name
- obligatoire
- Le client auquel il appartient et son nom.
- status
- string
- planning, active, on_hold, completed, cancelled
- start_date, due_date
- date
- YYYY-MM-DD
- budget_cents
- integer
- Budget en centimes.
Tâches
Tâches dans des projets, ou indépendantes. Attribuer une tâche prévient la personne.
-
GET
/tasksListe les tâches. Filtres : project_id, assignee_id, status, due_before. -
POST
/tasksCrée une tâche. -
GET
/tasks/{id}Renvoie une tâche. -
PATCH
/tasks/{id}Met à jour une tâche. Passer status à done enregistre l'heure de fin.
Champs que vous pouvez envoyer
- title
- string
- Obligatoire à la création.
- project_id, task_list_id
- integer
- Facultatif. Sans liste, la tâche va dans la première liste du projet.
- assignee_id
- integer
- Un id issu de /members.
- status
- string
- todo, in_progress, review, done
- priority
- string
- low, medium, high
- due_date
- date
- YYYY-MM-DD
Exemple
curl -X PATCH https://tarsiflow.com/api/v1/tasks/318 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"status":"done"}'
{
"data": {
"id": 318,
"title": "Homepage wireframes",
"status": "done",
"priority": "high",
"completed_at": "2026-10-26T14:05:11+00:00"
}
}
Factures
Lecture seule. L'endpoint d'une facture inclut ses lignes et ses paiements.
-
GET
/invoicesListe les factures. Filtres : status, client_id. -
GET
/invoices/{id}Renvoie une facture avec ses lignes, ses paiements et le reste à payer.
Propositions
Lecture seule. L'endpoint d'une proposition inclut ses lignes.
-
GET
/proposalsListe les propositions. Filtres : status, client_id. -
GET
/proposals/{id}Renvoie une proposition avec ses lignes.