Documentation API

REST, JSON, sans clé pour commencer. Le premier appel tient en une ligne.

Premier appel

Aucune inscription, aucune clé.

curl "https://aifr.ai/searchEntities?q=lyon&limit=3"

Base : https://aifr.ai · Réponses en JSON · CORS ouvert · Spécification complète : /openapi.json

Trois paliers

Le quota est compté par identité et par jour, remis à zéro à minuit UTC.

public

Sans rien

Appelable sans compte. Quota compté par adresse IP.

compte

Jeton Bearer

Jeton Firebase ou clé d’extension. Quota multiplié par cinq.

payant

USDC ou crédits

Aucun quota gratuit : le règlement tient lieu d’entrée.

# Palier « compte »
curl -H "Authorization: Bearer <jeton>" \
  "https://aifr.ai/getPublicFinances?siren=216901231"

La clé d’extension se génère depuis votre profil.

Entités

EndpointParamètresRôleAccès
GET/searchEntitiesq, limitRecherche parmi 24,4 M d’entitéspublic
GET/getActorDetailssirenFiche complète d’une entitépublic
GET/getActorsOverviewComptes par catégoriepublic
GET/getActorsByCategorycategory, limit, cursorEntités d’une catégoriepublic

Argent public

EndpointParamètresRôleAccès
GET/getSubsidiesByActorsiren, limit, offset, sortSubventions d’une entitécompte
GET/getSubsidiesOverviewtype, yearSynthèse des subventionspublic
GET/getSubsidiesByPurposeslug | purpose, limitBénéficiaires d’un objectifpayant
GET/getTopBeneficiariestype, year, limit, searchPlus gros bénéficiairespayant
GET/searchSubsidiesq, minAmount, maxAmountRecherche dans les subventionspublic
GET/getPublicFinancessiren | nameComptes DGFiP sur 25 exercicescompte
GET/getTopRankingsmetric, type, year, minPopClassement sur un indicateurpayant

Personnes publiques

EndpointParamètresRôleAccès
GET/getOfficialsq, department, typeDéclarations HATVPcompte
GET/getOfficialDetailslugDétail d’un responsablecompte
GET/getEntityElussiren, limitÉlus d’une collectivitécompte
GET/searchElusq, mandat, nuanceRecherche d’éluscompte
GET/getLobbyistsq, limitReprésentants d’intérêtscompte

Données ouvertes et ingestion

EndpointParamètresRôleAccès
GET/datasets/searchq, organization, pageChercher sur data.gouv.frpublic
GET/datasets/inspectidRessources d’un jeupublic
GET/datasets/planurlPlan d’ingestion vers le modèle canoniquecompte

Découverte

EndpointParamètresRôleAccès
GET/openapi.jsonSpécification OpenAPI 3.1public
GET/pricing.jsonTarifs par capacitépublic
GET/healthÉtat du servicepublic
POST/mcpJSON-RPC 2.0Serveur MCPpublic

Erreurs et limites

Toujours un code HTTP juste et un corps JSON portant un champ errorlisible par une machine — jamais un 200 contenant une excuse.

400Paramètre absent ou invalide.
401Palier « compte » : jeton absent ou expiré.
402Palier « payant » : le corps porte les rails de règlement et le montant exact.
404Ressource inexistante.
429Quota atteint. `retry_after_seconds` indique le délai.
503Service dégradé. L’en-tête `Retry-After` indique le délai.

Le palier dit qui peut appeler ; le quota dit combiend’appels sont offerts. Une fois le quota épuisé, tout endpoint devient payable : on répond 402 avec le prix et les rails. Le 429 ne subsiste que si aucun rail de règlement n’est configuré — réclamer un paiement sans pouvoir l’encaisser n’aurait pas de sens.

Pour aller plus loin

Données sous Licence Ouverte Etalab. Les montants publiés ne sont pas corrigés, même invraisemblables : les anomalies connues sont documentées.