Sirenic Score API

The Score API from Sirenic — 1 operation(s) for score.

Operations 1

GET /v1/score/defaillance/{siren} Company default-risk score (transparent scorecard + BODACC override) #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sirenic-eu:sirenic-eu-score-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sirenic-eu-score-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sirenic Score API
  version: 1.0.0
  description: 'French & European company data, pay-per-call in USDC or EURC — EURC at numeric parity: the same figure as the USDC price, not FX-converted (at the ECB rate of 4 Sept 2026, about 16 % more in dollar terms) via the x402 protocol — or with an API key and prepaid credits (1 credit = 1 EUR, same per-call prices, no wallet).'
  contact:
    email: contact@sirenic.eu
  license:
    name: 'Data: Licence Ouverte / Open License Etalab 2.0'
    url: https://www.etalab.gouv.fr/licence-ouverte-open-licence/
servers:
- url: https://api.sirenic.eu
security:
- {}
- ApiKeyAuth: []
- BearerAuth: []
tags:
- name: Score
paths:
  /v1/score/defaillance/{siren}:
    get:
      summary: Company default-risk score (transparent scorecard + BODACC override)
      description: 'Credit risk scoring for a French company: a default-risk score (0-100) at ~12 months from a transparent scorecard — filed financial ratios (structure, profitability, liquidity, net cash, debt service, trend), company age, and a hard BODACC override (open insolvency/liquidation, or closure for insufficiency of assets). Returns the score, a qualitative band, every component with its threshold, and a confidence level. Decision-support indicator — NOT a solvency opinion or credit rating.'
      x-price: $0.10
      x-payment:
        protocol: x402
        network: eip155:8453
      parameters:
      - $ref: '#/components/parameters/siren'
      responses:
        '200':
          description: 'score_risque (0-100), classe/risque_12m (qualitative band), every scoring component with value+threshold+points, signaux_bodacc, exercice_reference, confiance, version_modele. Components include a NET CASH axis read from the raw tax-form line items — cash + marketable securities minus bank overdraft, over debt due within one year — which is deliberately distinct from the current-ratio axis: the current ratio counts receivables and inventory as if they were cash. Where computable, the response also carries a ratios_informatifs block holding two figures read from those same line items, each with a note stating its status: the net cash ratio itself — served EVEN WHEN it costs no points, so that ''nothing to flag'' is never confused with ''no data'' — and dettes_fiscales_sociales_sur_va_pourcent (tax and social security liabilities as a share of value added), a FACT that does NOT feed the score and that no public threshold calibrates. The block is absent when neither figure is computable — the case for a majority of companies, because the upstream line-item dataset is republished irregularly and does not cover the most recent financial years. Silence there means missing data, never a good result, and the response says so explicitly: data_freshness carries the DATE of the upstream snapshot actually in use, tresorerie_muette gives the reason the axis made no finding (exercice_non_couvert = that year is not in the snapshot; poste_non_publie = the filed accounts do not carry the line), and note_tresorerie spells it out in both languages. No date is hard-coded in this description on purpose: it would become false the day the producer republishes. Three overrides come before the band, in this order: active BODACC proceedings (''defaut_avere'' / ''procedure_en_cours''), a ceased company (''cessee'', risque_12m ''sans objet'' — a 12-month default risk has no object for an entity that no longer trades), and no computable financial ratio at all (''indetermine'', never ''sain''). In the last two cases the response carries note_classe explaining why; the score and all components are still returned. Decision-support indicator, not a solvency opinion or credit rating (see docs/scoring.md).'
          content:
            application/json:
              example:
                siren: '552032534'
                denomination: DANONE
                score_risque: 22
                classe: sain
                risque_12m: faible
                composantes:
                - axe: liquidite
                  indicateur: ratio_liquidite_%
                  valeur: 7.093
                  seuil: <80/<100
                  points: 12
                - axe: dette
                  indicateur: capacite_remboursement_annees
                  valeur: 19.515
                  seuil: <0/>7/>4
                  points: 10
                exercice_reference: '2024-12-31'
                confiance: moyenne
                version_modele: defaillance-v1.8
                avertissement_perimetre: 'Comptes SOCIAUX seuls : la santé du GROUPE n''est pas mesurée ; sur une tête de groupe, dette et liquidité peuvent être structurelles. Confiance plafonnée à « moyenne ». / Standalone STATUTORY accounts: GROUP health is not measured; on a group parent, debt and liquidity may be structural. Confidence capped at medium.'
                signaux_bodacc:
                  procedure_collective: false
                  liquidation_judiciaire: false
                  cloture_insuffisance_actif: false
                data_freshness: identité stock Sirene (2026-07-01) + ratios financiers + BODACC temps réel
        '400':
          $ref: '#/components/responses/Reponse400InvalidInput'
        '402':
          $ref: '#/components/responses/Reponse402PaymentRequired'
        '404':
          description: No diffusible company for this SIREN.
      tags:
      - Score
      operationId: getV1ScoreDefaillanceBySiren
      x-operation-id-source: derived
components:
  responses:
    Reponse402PaymentRequired:
      description: Payment required — x402 payment requirements in body (JSON) and headers.
    Reponse400InvalidInput:
      description: 'Invalid input. Body: {error, champ, message}. Never charged. / Jamais facturé.'
  parameters:
    siren:
      in: path
      name: siren
      required: true
      schema:
        type: string
        pattern: ^\d{9}$
      example: '552032534'
      description: 9-digit SIREN (Luhn-validated)
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: 'Sirenic API key (srn_live_…) paying with prepaid credits (1 credit = 1 EUR, same prices as x402). Credits expire 12 months after purchase; calls are charged first to the credits closest to expiry. Optional: without it, the same routes answer 402 with a signable x402 quote. Insufficient balance → 402 {error: credits_insuffisants} WITHOUT a PAYMENT-REQUIRED header. Get a key at /compte.'
    BearerAuth:
      type: http
      scheme: bearer
      description: 'The same srn_live_… API key sent as Authorization: Bearer. A bearer value that is not an srn_ key is ignored (x402 flow unchanged).'