CompatAir Compatibility API

The Compatibility API from CompatAir — 2 operation(s) for compatibility.

GitHub OpenAPI

Operations 2

GET /api/v1/compatibility Evaluate one compressor and one tool #
POST /api/v1/compatibility/receipts/verify Verify a deterministic compatibility receipt without storing it #

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/compatair-fr:compatair-fr-compatibility-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

compatair-fr-compatibility-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Compatair Fr Compatibility API
  version: '2026-07-15'
  description: 'Operations tagged Compatibility across 2 of this provider''s published API definitions: compatair-2026-07-15.json, compatair-fr-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://compatair.fr
tags:
- name: Compatibility
paths:
  /api/v1/compatibility:
    get:
      operationId: getCompatibility
      summary: Evaluate one compressor and one tool
      parameters:
      - name: compressorId
        in: query
        required: true
        schema:
          type: string
          pattern: ^[a-z0-9-]{1,160}$
      - name: toolId
        in: query
        required: true
        schema:
          type: string
          pattern: ^[a-z0-9-]{1,160}$
      - name: channel
        in: query
        required: false
        description: Closed attribution hint used by the official embedded widget only.
        schema:
          const: widget
      responses:
        '200':
          description: Deterministic result. Fixed-flow pairs are calculated on demand by the versioned deterministic engine; an empty cache is not missing technical data. For a parametric tool, this ID-only endpoint returns insufficient_data; the calculator, MCP or UCP interface must receive explicit action rate or volume and target time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: Active catalog or calculation service unavailable
          headers:
            Retry-After:
              schema:
                type: integer
                const: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security: []
      tags:
      - Compatibility
    servers:
    - url: https://compatair.fr
  /api/v1/compatibility/receipts/verify:
    post:
      operationId: verifyCompatibilityReceipt
      summary: Verify a deterministic compatibility receipt without storing it
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: https://compatair.fr/schemas/compatibility-receipt-1.0.0.json
      responses:
        '200':
          description: Receipt integrity verified
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptVerification'
        '400':
          $ref: '#/components/responses/BadRequest'
        '413':
          description: Receipt body exceeds 64 KiB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Receipt contract or integrity mismatch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptVerification'
        '429':
          $ref: '#/components/responses/RateLimited'
      security: []
      tags:
      - Compatibility
    servers:
    - url: https://compatair.fr
components:
  schemas:
    ProductIdentity:
      type: object
      required:
      - id
      - brand
      - model
      - slug
      - identifiers
      properties:
        id:
          type: string
        brand:
          type: string
        model:
          type: string
        label:
          type: string
        slug:
          type: string
        identifiers:
          $ref: '#/components/schemas/MerchantIdentifiers'
      additionalProperties: false
    EvidenceSource:
      type: object
      required:
      - id
      - label
      - url
      - sourceType
      - sourceRole
      - retrievedAt
      - confidence
      properties:
        id:
          type: string
        label:
          type: string
        url:
          type: string
          format: uri
        sourceType:
          enum:
          - manufacturer
          - manual
          - merchant
          - measured
        sourceRole:
          enum:
          - primary
          - independent_corroboration
          - secondary
        retrievedAt:
          type: string
          format: date
        confidence:
          enum:
          - A
          - B
          - C
          - D
      additionalProperties: false
    ReceiptVerification:
      oneOf:
      - type: object
        required:
        - valid
        - receipt_id
        - digest
        - catalog_version
        - observed_at
        properties:
          valid:
            const: true
          receipt_id:
            type: string
          digest:
            type: string
            pattern: ^[a-f0-9]{64}$
          catalog_version:
            type: string
          observed_at:
            type: string
            format: date
        additionalProperties: false
      - type: object
        required:
        - valid
        - error
        properties:
          valid:
            const: false
          error:
            enum:
            - invalid_receipt
            - integrity_mismatch
        additionalProperties: false
    MerchantIdentifiers:
      type: object
      required:
      - distributor_skus
      properties:
        mpn:
          type: string
        normalized_mpn:
          type: string
        ean:
          type: string
          pattern: ^\d{8,14}$
        gtin:
          type: string
          pattern: ^\d{8,14}$
        distributor_skus:
          type: array
          items:
            type: object
            required:
            - distributor_id
            - sku
            - normalized_sku
            properties:
              distributor_id:
                type: string
              sku:
                type: string
              normalized_sku:
                type: string
            additionalProperties: false
      additionalProperties: false
    PublicEnvelope:
      type: object
      required:
      - verdict
      - verdict_scope
      - verdict_schema_version
      - canonical_url
      - product_urls
      - source_urls
      - method_version
      - catalog_version
      - observed_at
      - limitations
      - next_actions
      properties:
        verdict:
          enum:
          - information
          - compatible
          - compatible_with_limits
          - incompatible
          - insufficient_data
        verdict_scope:
          enum:
          - information
          - request
          - air_supply
          - complete_air_system
          - commercial_constraints
        verdict_schema_version:
          const: 2.0.0
        canonical_url:
          type: string
          format: uri
          pattern: ^https://compatair\.fr/
        product_urls:
          type: array
          items:
            type: string
            format: uri
            pattern: ^https://compatair\.fr/
          uniqueItems: true
        source_urls:
          type: array
          items:
            type: string
            format: uri
            pattern: ^https://
          uniqueItems: true
        method_version:
          type: string
          pattern: ^2026\.[0-9]{2}$
        catalog_version:
          type: string
          minLength: 1
        observed_at:
          type: string
          format: date
        limitations:
          type: array
          items:
            type: string
        next_actions:
          type: array
          items:
            type: string
    ScopedVerdict:
      type: object
      required:
      - schema_version
      - scope
      - verdict
      - limiting_factor
      - limitations
      properties:
        schema_version:
          const: 2.0.0
        scope:
          enum:
          - air_supply
          - complete_air_system
          - commercial_constraints
        verdict:
          enum:
          - information
          - compatible
          - compatible_with_limits
          - incompatible
          - insufficient_data
        engine_verdict:
          enum:
          - continuous
          - intermittent
          - incompatible
          - insufficient_data
        limiting_factor:
          type:
          - string
          - 'null'
        limitations:
          type: array
          items:
            type: string
        metrics:
          type: object
          properties:
            required_fad_lpm:
              type:
              - number
              - 'null'
            available_fad_lpm:
              type:
              - number
              - 'null'
            effective_average_capacity_lpm:
              type:
              - number
              - 'null'
            required_pressure_bar:
              type:
              - number
              - 'null'
            available_pressure_bar:
              type:
              - number
              - 'null'
            demand_flow_lpm:
              type:
              - number
              - 'null'
            recommended_fad_lpm:
              type:
              - number
              - 'null'
            margin_percent:
              type:
              - number
              - 'null'
            mode:
              type:
              - string
              - 'null'
          additionalProperties: false
      additionalProperties: false
    EngineEvaluation:
      type: object
      required:
      - verdict
      properties:
        id:
          type: string
        compressorId:
          type: string
        toolId:
          type: string
        verdict:
          enum:
          - continuous
          - intermittent
          - incompatible
          - insufficient_data
        confidence:
          enum:
          - high
          - medium
          - low
        limitingFactor:
          type: string
        requiredFadLpm:
          type: number
        availableFadLpm:
          type: number
        availableFadBasis:
          enum:
          - exact
          - interpolated
          - higher-pressure-bound
        availableFadReferencePressureBar:
          type: number
        marginPercent:
          type: number
        calculationVersion:
          type: string
        warnings:
          type: array
          items:
            type: string
      additionalProperties: false
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
          minLength: 1
      additionalProperties: false
    CompatibilityResult:
      allOf:
      - $ref: '#/components/schemas/PublicEnvelope'
      - type: object
        required:
        - schemaVersion
        - catalogVersion
        - verdictVersion
        - calculationVersion
        - input
        - compressor
        - tool
        - compatibility
        - overall_system_verdict
        - air_supply_verdict
        - compatibility_receipt
        - engine_evaluation
        - sources
        - detailsUrl
        - proofUrl
        properties:
          schemaVersion:
            const: 2.0.0
          catalogVersion:
            type: string
          catalogVerifiedAt:
            type: string
            format: date
          verdictVersion:
            type: string
          calculationVersion:
            type: string
          input:
            type: object
            required:
            - compressorId
            - toolId
            properties:
              compressorId:
                type: string
              toolId:
                type: string
            additionalProperties: false
          compressor:
            $ref: '#/components/schemas/ProductIdentity'
          tool:
            $ref: '#/components/schemas/ProductIdentity'
          compatibility:
            $ref: '#/components/schemas/ScopedVerdict'
          overall_system_verdict:
            $ref: '#/components/schemas/ScopedVerdict'
          air_supply_verdict:
            $ref: '#/components/schemas/ScopedVerdict'
          compatibility_receipt:
            $ref: https://compatair.fr/schemas/compatibility-receipt-1.0.0.json
          engine_evaluation:
            $ref: '#/components/schemas/EngineEvaluation'
          sources:
            type: array
            items:
              $ref: '#/components/schemas/EvidenceSource'
          detailsUrl:
            type: string
            format: uri
          proofUrl:
            type: string
            format: uri
      unevaluatedProperties: false
  responses:
    BadRequest:
      description: Invalid or duplicate query parameter
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Unknown product
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Per-address rate limit exceeded
      headers:
        Retry-After:
          schema:
            type: integer
            const: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
x-refined-from:
- compatair-2026-07-15.json
- compatair-fr-openapi.yml