Aller au contenu

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 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.

Envoyez votre jeton avec chaque requête, dans l’en-tête Authorization :

Fenêtre de terminal
curl -H "Authorization: Bearer <your token>" https://invoicing-api.eddish.app/api/clients

Le 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.

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.

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é.

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.

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.