Développeurs / API

    Référence de l'API REST en lecture seule pour intégrer Orbit CashFlow.

    Introduction

    L'API publique d'Orbit CashFlow est une API REST en lecture seule permettant d'extraire les données financières de votre société vers des systèmes externes. Chaque requête est limitée à la société / au locataire associé à la clé API.

    Base URLhttps://orbitcashflow.com/api/v1

    Authentification

    Envoyez votre clé API dans l'en-tête x-api-key à chaque requête.

    x-api-key: orbit_live_xxx

    Les administrateurs de la société peuvent créer et révoquer des clés dans Paramètres → Société → Clés API.

    • La clé complète n'est affichée qu'une seule fois, à la création. Copiez-la et conservez-la immédiatement en lieu sûr.
    • Les clés actuelles sont en lecture seule (portée « read »).

    Exemple de clé

    orbit_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    Points de terminaison

    Tous les points de terminaison sont des requêtes GET et renvoient du JSON. Ajoutez les chemins ci-dessous à l'URL de base.

    MéthodeCheminDescriptionParamètres de requête
    GET/public-api/accountsLister les comptes
    • pageparams.accounts.page
    • limitparams.accounts.limit
    • sortByparams.accounts.sortBy
    • sortOrderparams.accounts.sortOrder
    • searchparams.accounts.search
    • typeFiltrer par type de compte.
    • isActivetrue pour ne renvoyer que les comptes actifs.
    • currencyFiltrer par code devise (ex. TRY, USD, EUR).
    GET/public-api/categoriesLister les catégories
    • pageparams.categories.page
    • limitparams.categories.limit
    • sortByparams.categories.sortBy
    • sortOrderparams.categories.sortOrder
    • searchparams.categories.search
    • typeFiltrer par type de catégorie (recette ou dépense).
    • parentIdFiltrer par identifiant de catégorie parente.
    • rootOnlytrue pour ne renvoyer que les catégories de premier niveau.
    • isActivetrue pour ne renvoyer que les catégories actives.
    • includeSystemtrue pour inclure les catégories système.
    GET/public-api/contactsLister les contacts
    • pageparams.contacts.page
    • limitparams.contacts.limit
    • sortByparams.contacts.sortBy
    • sortOrderparams.contacts.sortOrder
    • searchparams.contacts.search
    • typeFiltrer par type de contact (client ou fournisseur).
    • isActivetrue pour ne renvoyer que les contacts actifs.
    • cityFiltrer par ville.
    GET/public-api/budgetsLister les budgets
    • pageparams.budgets.page
    • limitparams.budgets.limit
    • sortByparams.budgets.sortBy
    • sortOrderparams.budgets.sortOrder
    • searchRechercher par nom de budget.
    • periodTypeFiltrer par type de période budgétaire.
    • statusFiltrer par statut de budget.
    • startDateFromFiltrer par date de début (à partir de), ISO 8601.
    • startDateToFiltrer par date de début (jusqu'à), ISO 8601.
    GET/public-api/budget-plansLister les plans budgétaires d'entreprise (V2)—
    GET/public-api/budget-plans/:planId/linesExporter les lignes d'un plan budgétaire par période et par département
    • versionIdUne version de plan spécifique ; la dernière version est utilisée si omise.
    GET/public-api/invoicesLister les factures clients
    • skipNombre d'enregistrements à ignorer.
    • takeNombre maximal d'enregistrements à renvoyer.
    • statusFiltrer par statut de facture.
    GET/public-api/transactionsLister les opérations
    • pageparams.transactions.page
    • limitparams.transactions.limit
    • sortByparams.transactions.sortBy
    • sortOrderparams.transactions.sortOrder
    • searchparams.transactions.search
    • accountIdFiltrer par identifiant de compte.
    • categoryIdFiltrer par identifiant de catégorie.
    • contactIdFiltrer par identifiant de contact.
    • typeFiltrer par type d'opération.
    • statusFiltrer par statut d'opération.
    • statusesFiltrer par plusieurs statuts (séparés par des virgules).
    • startDateFiltrer par date de début, ISO 8601.
    • endDateFiltrer par date de fin, ISO 8601.
    • minAmountMontant minimum.
    • maxAmountMontant maximum.
    • tagsFiltrer par étiquettes (séparées par des virgules ou répétées).
    • isRecurringtrue pour ne renvoyer que les opérations récurrentes.
    • orgUnitIdsFiltrer par identifiants de département (séparés par des virgules).
    GET/public-api/transactions/:idObtenir une opération par son identifiant—

    Réponses d'erreur

    L'API renvoie les codes de statut HTTP standard.

    StatusMeaning
    401Clé API manquante, invalide ou révoquée.
    403La clé API n'a pas la portée requise.
    404Ressource introuvable dans la société / le locataire de la clé.

    Exemples de requêtes

    Copiez-collez les commandes ci-dessous. Remplacez orbit_live_xxx par votre propre clé API.

    List accounts

    curl -H "x-api-key: orbit_live_xxx" https://orbitcashflow.com/api/v1/public-api/accounts

    List transactions (paginated)

    curl -H "x-api-key: orbit_live_xxx" "https://orbitcashflow.com/api/v1/public-api/transactions?page=1&limit=50"

    Get a single transaction

    curl -H "x-api-key: orbit_live_xxx" https://orbitcashflow.com/api/v1/public-api/transactions/00000000-0000-0000-0000-000000000000

    Webhooks

    Les webhooks envoient des notifications d'événements en temps réel aux points de terminaison que vous enregistrez. Les administrateurs de la société peuvent les gérer dans Paramètres → Société → Webhooks.

    Types d'événements

    Choisissez un ou plusieurs types d'événements lors de l'enregistrement d'un webhook :

    • transaction.created Envoyé lorsqu'une opération est créée.
    • invoice.created Envoyé lorsqu'une facture est créée.
    • budget.created Envoyé lorsqu'un budget est créé.

    Charge utile

    Chaque livraison est une requête POST JSON de cette forme :

    {
      "id": "00000000-0000-0000-0000-000000000000",
      "event": "transaction.created",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "data": {}
    }

    En-têtes

    Chaque requête comporte les en-têtes suivants :

    X-Orbit-Event: transaction.createdX-Orbit-Signature: sha256=...

    Vérification de la signature

    Vérifiez les livraisons en calculant un HMAC-SHA256 du corps brut de la requête avec le secret de votre webhook.

    const crypto = require('crypto');
    
    const signature = crypto
      .createHmac('sha256', secret)
      .update(rawBody)
      .digest('hex');
    
    // Compare signature with the value after "sha256=" in X-Orbit-Signature

    Comparez l'empreinte hexadécimale à la valeur qui suit sha256= dans l'en-tête X-Orbit-Signature.