Référence de l’API — surface v1, moteur 0.1.0

Documentation

Les 8 endpoints s’appellent tous de la même façon : une clé dans l’en-tête, un POST, un objet JSON en retour. Rien à stocker, rien à synchroniser. Chaque réponse cite les articles qu’elle a appliqués et dit où elle s’arrête.

Partie 1

Démarrer

De la clé au premier chiffre servi. À lire une fois, dans l’ordre.

Premier appel

Le palier Gratuit ouvre 500 requêtes par mois sans carte bancaire. La clé s’obtient depuis la page des tarifs et s’affiche une seule fois.

L’appel le plus court qui rende une décision. Il ne demande aucune donnée fiscale intime : le foyer se déclare par son taux marginal.

curl -X POST https://fiscapi.fr/api/v1/regimes \
  -H "Authorization: Bearer $CLE" \
  -H "Content-Type: application/json" \
  -d '{
       "natureLocation": "meuble_longue_duree",
       "recettesAnnuelles": 12000,
       "chargesDeductiblesHorsCredit": 2500,
       "chargesFinancieres": 4000,
       "redevable": {
         "type": "personne_physique",
         "tauxMarginalImposition": 0.3
       }
     }'

La réponse ouvre sur synthese, puis groupe le détail. Conservez X-Moteur-Version et X-Empreinte-Calcul avec le résultat : ce sont eux qui le rendent retrouvable.

Authentification

Toutes les routes exigent une clé, sauf /api/v1/sante et /api/v1/openapi.json. L’appel est prévu de serveur à serveur : la clé ne doit jamais atteindre un navigateur.

Authorization: Bearer fsc_live_…

# variante acceptée
X-Api-Key: fsc_live_…

La clé est affichée une seule fois. Seule son empreinte SHA-256 est conservée : une clé perdue ne se retrouve pas, elle se régénère depuis votre espace abonné, où un lien valable 24 heures vous parvient par courriel. Régénérer coupe la clé précédente sur-le-champ : c’est aussi ainsi qu’on révoque une clé compromise.

Quotas et paliers

Décompte mensuel, par clé, sur le mois calendaire en temps universel. Toute réponse authentifiée en porte l’état, refus compris. Une requête invalide consomme une unité.

En-têtes de quota servis avec chaque réponse authentifiée
X-Quota-LimiteQuota mensuel du plan.
X-Quota-ConsommeRequêtes consommées sur le mois en cours.
X-Quota-RestantRequêtes restantes sur le mois en cours.
X-Quota-AppliqueFaux lorsque aucun magasin de quotas n’est configuré : le comptage a lieu mais aucune requête n’est bloquée.
Paliers d’abonnement et quotas mensuels
Gratuit0 €/mois500 requêtes/mois
Starter39 €/mois10 000 requêtes/mois
Pro99 €/mois100 000 requêtes/mois
Business299 €/mois1 000 000 requêtes/mois

Erreurs

Toute erreur suit la même enveloppe, chemin inconnu et méthode inattendue compris. Un plafond dépassé n’est pas une erreur : il revient en 200, marqué non éligible avec son motif.

{
  "erreur": {
    "code": "requete_invalide",
    "message": "Les paramètres fournis sont invalides.",
    "details": [
      {
        "champ": "recettesAnnuelles",
        "message": "Type attendu : number."
      }
    ]
  }
}

Sur un 400, details nomme chaque champ fautif. Un champ absent du schéma y figure sous son nom : une faute de frappe est refusée, jamais ignorée.

Codes d’erreur de la surface v1
StatutCodeQuand
400requete_invalideLe corps n’est pas un JSON valide, ou un champ ne respecte pas son schéma. Le champ details nomme les champs fautifs.
401cle_absenteAucune clé d’API n’accompagne la requête. Aucun quota n’est consommé.
401cle_invalideClé malformée ou révoquée. Aucun quota n’est consommé.
402abonnement_impayeLe dernier prélèvement a échoué. La clé reste valide le temps des relances de la banque et d’une mise en demeure ; régularisez depuis le portail client.
422parametres_metier_invalidesRequête bien formée mais irrecevable au fond : année d’imposition sans barème publié, redevable incohérent, trimestre IRL non publié, régime inapplicable à la nature de location.
422version_indisponibleLa version du moteur épinglée par X-Moteur-Version n’est pas reproductible par ce déploiement. Le message liste celles qu’il sert.
404endpoint_inconnuLe chemin demandé n’existe pas sous /api/v1. La réponse suit la même enveloppe que les autres erreurs, au lieu d’une page HTML.
405methode_non_autoriseeLa méthode HTTP n’est pas celle de l’endpoint. L’en-tête Allow indique celle qui est attendue.
413corps_trop_volumineuxLe corps de la requête dépasse la taille acceptée. Les tableaux et les libellés sont bornés par leur schéma.
429quota_depasseQuota mensuel du plan atteint. Les en-têtes de quota indiquent la limite et la consommation.
500erreur_interneDéfaut du service. Aucun calcul partiel n’est renvoyé.

Spécification OpenAPI

/api/v1/openapi.json sert un document OpenAPI 3.1 public, sans clé. Entrées et sorties y sont décrites par les schémas mêmes qui gardent les endpoints : il ne peut ni décrire une requête que le service refuserait, ni omettre un champ qu’il renvoie.

De quoi engendrer un client typé sans lire une ligne de cette page.

Partie 2

Choisir un endpoint

Six endpoints de calcul, et une question par endpoint. Partez de la vôtre plutôt que de la liste.

Quelle question, quel appel

Chaque endpoint a sa page : requête champ par champ, réponse champ par champ, appel réel et réponse réelle. Commencez par celui dont la question est la vôtre.

Et si vous ne savez pas laquelle est la vôtre, partez d’une situation. Chaque ligne ci-dessous nomme l’appel qui y répond et les champs de la réponse qui portent la décision — le reste n’est que détail, où l’on descend pour justifier le chiffre.

Le simulateur ouvert à un visiteur anonyme

/api/v1/regimes

Portail d’annonces, comparateur, proptech

Régime le moins imposé, économie annuelle, seuil de bascule

  • synthese.libelleRegimeOptimal — Le régime affiché en grand
  • synthese.economieAnnuelleVsMoinsFavorable — Ce que l’autre régime coûterait
  • synthese.seuilBasculeMicroReel.recettesDeBascule — Le loyer où tout s’inverse

La revue annuelle d’un portefeuille

/api/v1/regimes

Administrateur de biens, cabinet comptable

Les lots mal déclarés, triés par ce que l’erreur coûte

  • synthese.regimeOptimal — Comparé au régime déclaré, pour lever l’alerte
  • synthese.economieAnnuelleVsMoinsFavorable — Le montant qui trie la liste
  • synthese.seuilBasculeMicroReel.plafondRecettesMicro — Le plafond que les recettes franchissent

Faut-il loger ce bien dans une SCI à l’IS ?

/api/v1/regimes

Expert-comptable, avocat fiscaliste, plateforme de création de société

Les deux structures chiffrées côte à côte, et le niveau de distribution qui les départage

  • synthese.impositionRegimeOptimal — L’impôt de chaque colonne
  • resultats.0.baseImposable — Ce sur quoi l’impôt porte — c’est là que l’amortissement se voit
  • synthese.tresorerieMensuelleApresImposition — Ce que chaque structure laisse en poche

La projection remise en rendez-vous

/api/v1/rentabilite

Courtier, conseiller en gestion de patrimoine

Cash-flow après impôt, impôt sur l’horizon, échéancier du prêt

  • synthese.cashFlowMensuelMoyenApresImpot — Ce qui reste chaque mois, net d’impôt
  • synthese.impositionTotaleSurHorizon — L’impôt cumulé sur l’horizon
  • synthese.impositionPlusValueALaRevente — Ce que la cession reprend, amortissements compris

L’année où la revente coûte le moins

/api/v1/plus-value

Conseiller en gestion de patrimoine, notaire

L’impôt de cession année par année, réintégration comprise

  • synthese.impositionTotale — La hauteur de chaque barre
  • detail.amortissementsReintegres — Ce que le régime réel doit rendre
  • detail.tauxAbattementImpotRevenu — L’abattement atteint à cette durée

Le plan d’amortissement porté au bilan

/api/v1/amortissement

Cabinet comptable, éditeur de logiciel de gestion

Dotation par composant, prorata d’entrée, hypothèses déclarées

  • annees.0.dotationTotale — La dotation du premier exercice, au prorata
  • assiette.terrainNonAmortissable — La quote-part exclue de la base
  • repartition.parDefautAppliquee — Distingue une répartition reçue d’une répartition supposée

Le courrier de révision envoyé au locataire

/api/v1/indexation-loyer

Gestion locative, foncière

Loyer révisé sur l’indice opposable, et le courrier au locataire

  • synthese.loyerIndexe — Le nouveau loyer notifié
  • synthese.augmentationMensuelle — La hausse mensuelle annoncée
  • indices.revision.trimestre — Le trimestre opposable, de même rang que la référence

L’agent qui répond en citant son article

/api/v1/regimes

Assistant conversationnel, serveur MCP

Une réponse courte, l’article qui la fonde, ses réserves

  • synthese.libelleRegimeOptimal — Ce que l’agent affirme
  • reglesAppliquees.0.reference — L’article qu’il cite
  • reglesAppliquees.0.effet — La phrase qu’il reprend sans la reformuler

Chacune de ces situations est manipulable, curseurs et requête vivante compris, sur la rubrique des cas d’usage.

Partie 3

Construire une requête

Quatre notions traversent tous les endpoints. Les comprendre une fois évite de les redécouvrir sur chacun.

Le redevable

redevable décide des régimes ouverts et de la façon de liquider l’impôt. Une société à l’impôt sur les sociétés n’accède à aucun micro et suit les règles des bénéfices, y compris en location nue — ce qui rend le bien amortissable. Le taux réduit de 15 % exige ses trois conditions déclarées : une condition muette vaut non remplie.

Une personne physique se déclare de deux façons exclusives : le couple revenuImposableHorsLocatif et nombreParts, exact par différentiel de deux liquidations ; ou tauxMarginalImposition seul, appliqué à plat, pour qui ne détient pas la situation fiscale de son utilisateur.

Au barème, ajoutez foyerMarieOuPacse : deux parts pouvant être un parent isolé, c’est lui qui débloque la décote, le plafonnement du quotient familial et la contribution sur les hauts revenus. Omis, les trois sont écartées et la réponse le signale quand la différence mord ; il est refusé sous tauxMarginalImposition, qu’un taux plat rend insensible aux trois.

La SCI à l’impôt sur le revenu se modélise en personne physique

Elle est semi-transparente : l’associé est le contribuable. Passez personne_physique avec la quote-part appliquée à chaque montant, et déclarez detentionEnLocationNue — l’article 32, 2-d ferme le micro-foncier au détenteur de parts, sauf s’il possède aussi un immeuble loué nu en direct.

Les plafonds du micro

Le plafond du micro-BIC ne se lit pas sur l’exercice imposé. Le 1 de l’article 50-0 l’apprécie sur l’année civile précédente ou la pénultième année, et la condition est alternative : il suffit qu’un des deux la respecte, ce qui laisse un bailleur au micro l’année de son premier dépassement et la suivante.

Déclarez recettesDesAnneesDeReference pour que le comparateur applique le texte ; à défaut il compare les recettes de l’exercice et le signale. Sur /api/v1/rentabilite, rien n’est à déclarer : la projection connaît ses propres exercices antérieurs. Le micro-foncier, lui, n’est pas concerné — l’article 32 lit son seuil de 15 000 € sur l’année d’imposition elle-même.

Les reports d’un exercice

reportsAnterieurs porte l’état de l’exploitation à l’entrée de l’exercice, sous les noms mêmes qu’en sortie : l’objet reports du résultat précédent se réinjecte tel quel. Sur /api/v1/rentabilite, l’enchaînement est fait sur tout l’horizon : déficit foncier et déficit de meublé non professionnel s’éteignent à dix ans, celui d’une société jamais.

Le barème appliqué

anneeImposition nomme le barème retenu en réponse, et permet de le forcer en requête. Une année sans barème publié est refusée en 422, jamais rapprochée de l’année la plus proche. Un seul barème étant publié à ce jour, il s’applique à tous les exercices d’une projection — les tranches ne s’indexent pas sur des lois de finances non votées — et la réponse le signale dès que l’horizon dépasse un exercice.

Version 2026.1 — en vigueur depuis le 2026-02-19

Loi de finances pour 2026 promulguée le 19 février 2026 — barème indexé +0,9 % ; impôt sur les sociétés aux taux de l’art. 219, I du CGI ; report des déficits selon l’art. 209, I ; CSG du patrimoine et des placements portée à 10,6 % par la loi de financement de la sécurité sociale pour 2026 (art. 12 ; CSS art. L. 136-8), les revenus fonciers restant à 9,2 % par le IV-1° du même article ; caractère irrévocable de l’option pour le barème supprimé par la loi de finances pour 2026 (art. 126 ; CGI art. 200 A)

Imposition 2026 sur les revenus 2025.

Partie 4

Ce que vaut une réponse

Ce qui rend un chiffre défendable devant un tiers, et ce que le service ne promet pas. À lire avant la mise en production.

Règles citées

Chaque effet notable est déclaré dans reglesAppliquees avec sa référence et l’explication chiffrée de son effet. Une réponse est donc vérifiable sans nous croire — et présentable à un client par un professionnel.

Le champ avertissements énonce l’inverse : ce que le service ne chiffre pas, ou ce qu’il ne peut pas trancher faute d’une donnée. Cotisations sociales du loueur professionnel, contribution différentielle de l’article 224, dispositifs de réduction d’impôt, conditions qu’un champ non déclaré laisse ouvertes.

Un avertissement ne sort que s’il mord : la situation de famille n’est signalée manquante que si les deux hypothèses donnent un impôt différent, et l’invitation à déclarer des dépenses de rénovation énergétique disparaît dès qu’elles le sont. Le bruit décrédibilise les autres.

La page des règles appliquées les énumère toutes, famille par famille, avec l’effet renvoyé sur un exemple — et la liste de ce que le service ne calcule pas.

Reproductibilité et épinglage

Une version déployée est figée : ses règles ne changent plus. Une correction ouvre la version suivante et n’altère jamais la précédente, pour qu’un résultat rendu reste retrouvable à l’euro près.

Le moteur est une fonction pure, sans horloge ni aléa : rejouer la même requête sur la même version redonne le même chiffre. Nous n’avons donc rien à conserver de vos calculs — et nous ne conservons rien d’autre que le décompte de vos requêtes.

En-têtes de reproductibilité
X-Moteur-Versionen requêteÉpingle la version. Une version que ce déploiement ne sait pas reproduire est refusée en 422, avec la liste de celles qu’il sert — jamais remplacée en silence par la version courante.
X-Empreinte-Calculen réponseEmpreinte SHA-256 de la version, du corps reçu et de la réponse, clés triées. Conservée avec le résultat, elle permet de retrouver des années plus tard le calcul qui l’a produit.

Une exception, par nature : l’indexation IRL suit une série INSEE vivante. Sa réponse consigne les indices employés et leur source, ce qui la rend vérifiable sans être figée. Le journal des versions est publié sur la page du jeu d’épreuve.