openapi: 3.2.0 info: title: Sirenic Acheteur 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: Acheteur paths: /v1/acheteur/{siret}/profil: get: summary: Procurement profile of a French public buyer x-price: $0.02 x-payment: protocol: x402 network: eip155:8453 parameters: - name: siret in: path required: true schema: type: string pattern: ^\d{14}$ example: '26310012500016' description: 14-digit SIRET of the buyer (Luhn-checked) responses: '200': description: Contract counts and amounts, activity by year (5y), top CPV segments, incumbent suppliers with contracts expiring within 18 months, framework-agreement share, average bids received per tender and median data-publication delay. content: application/json: example: acheteur: siret: '26310012500016' siren: '263100125' nom: CENTRE HOSPITALIER UNIVERSITAIRE DE TOULOUSE nombre_marches: 5723 montant_total: 11823128968.9 montant_moyen: 2065897 marches_en_cours: 4830 echeances_12_mois: 1167 prochaine_echeance: '2026-09-05' habitudes: part_accords_cadres_pct: 78.4 offres_recues_moyenne: 3.5 delai_publication_median_jours: 11 part_montants_enveloppe_pct: 79.8 modalites_connues: 5723 part_sous_traitance_declaree_pct: 77.6 sous_traitance_connue: 5723 part_avances_pct: 57.4 avance_connue: 5723 ccag_dominant: Fournitures courantes et services types_prix_dominant: Définitif révisable plateforme_publication_dominante: DGFIP – PES MARCHÉ top_cpv: - cpv4: '3300' nombre: 3002 titulaires_principaux: - siren: '433944485' nom: ARROW GENERIQUES nombre_marches: 164 marches_expirant_18_mois: 67 '400': $ref: '#/components/responses/Reponse400InvalidInput' '402': $ref: '#/components/responses/Reponse402PaymentRequired' '404': description: No diffusible company for this SIREN. '503': description: Anticipation stock not loaded yet (code `collecte_en_cours`). Nothing is charged. tags: - Acheteur operationId: getV1AcheteurBySiretProfil 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é.' 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).'