L’API d’Invoicing
Tout ce que vous pouvez faire dans les écrans d’Invoicing, un script peut le faire par son API, en votre nom. Il vous faut un jeton d’accès personnel pour Invoicing.
L’adresse
Section intitulée « L’adresse »L’adresse de l’API d’Invoicing s’affiche sur l’écran Accès à l’API, par exemple
https://invoicing-api.eddish.app. Chaque chemin commence par /api.
Chaque point de terminaison, avec ce qu’il reçoit et ce qu’il renvoie, figure dans la
référence de l’API (en anglais). La même adresse sert aussi un visualiseur interactif
à /scalar, où vous pouvez essayer des requêtes avec votre jeton. Le document OpenAPI se trouve à
/openapi/v1.json ; des outils comme Postman ou Insomnia peuvent l’importer.
S’authentifier
Section intitulée « S’authentifier »Envoyez votre jeton avec chaque requête, dans l’en-tête Authorization :
curl -H "Authorization: Bearer <your token>" https://invoicing-api.eddish.app/api/clientsLe jeton agit en votre nom, dans le compte où il a été créé :
- Il peut faire ce que votre rôle permet. Le jeton d’un Propriétaire peut modifier les informations de l’entreprise ; celui d’un Membre ne le peut pas.
- Un jeton Lecture seule ne peut faire que des requêtes
GET. - Il exige votre siège dans Invoicing, et un forfait qui inclut l’accès à l’API.
Ce que renvoie l’API
Section intitulée « Ce que renvoie l’API »Chaque réponse a la même forme :
{ "success": true, "data": { … }, "error": null }Quand quelque chose ne va pas, success vaut false et error dit quoi, avec un code qu’un script peut
vérifier et un message qu’une personne peut lire. Une requête qui contient des erreurs a aussi fieldErrors,
champ par champ.
| Statut | Code | Signification |
|---|---|---|
401 |
auth.invalid_credential, auth.expired_credential, auth.revoked_credential |
Le jeton n’est pas reconnu, a expiré ou a été révoqué. |
403 |
auth.read_only_token |
Le jeton ne peut que lire. |
403 |
auth.role_not_permitted |
Votre rôle ne l’autorise pas. |
403 |
app.no_seat |
Vous n’avez pas de siège dans Invoicing. |
403 |
auth.api_access_not_in_plan |
Le forfait du compte n’inclut pas l’accès à l’API. |
403 |
auth.not_a_member |
Vous n’êtes plus membre du compte. |
409 |
plan.read_only |
Le compte dépasse les limites de son forfait ; Invoicing est donc en lecture seule jusqu’à ce qu’un Propriétaire ou un Administrateur règle la situation. |
429 |
rate_limit.exceeded |
Trop de requêtes. Attendez le nombre de secondes indiqué dans l’en-tête Retry-After. |
Limites de débit
Section intitulée « Limites de débit »Chaque jeton peut faire un nombre fixe de requêtes en peu de temps, selon votre forfait. Chaque réponse porte
X-RateLimit-Limit et X-RateLimit-Remaining, pour qu’un script puisse ralentir avant d’être refusé.
Quelques requêtes utiles
Section intitulée « Quelques requêtes utiles »| Requête | Effet |
|---|---|
GET /api/team/me |
La personne au nom de laquelle le jeton agit |
GET /api/clients |
Les clients |
GET /api/projects?clientId=… |
Les projets d’un client |
GET /api/projects/{id}/task-assignments |
Les tâches sur lesquelles vous pouvez saisir du temps pour un projet |
GET /api/time-entries?from=2026-10-01&to=2026-10-31 |
Les saisies de temps d’octobre |
POST /api/time-entries |
Saisir du temps : projectId, workTaskId, spentDate, hours, notes, billable |
GET /api/invoices?state=Open |
Les factures envoyées et pas encore payées |
GET /api/invoices/uninvoiced-summary?clientId=… |
Le travail d’un client pas encore facturé |
Les dates s’écrivent yyyy-mm-dd. Les identifiants sont les longues valeurs id des réponses.
Clés d’API du compte
Section intitulée « Clés d’API du compte »Un Propriétaire ou un Administrateur peut aussi créer des clés d’API du compte, dans Clés d’API. Une clé appartient au compte plutôt qu’à une personne, et n’atteint que les quelques points de terminaison qui lui sont donnés : lister les clients, les projets et les factures. Pour tout le reste, utilisez un jeton d’accès personnel.