Infer by Flow7 Catalog API

Model selectors, published prices, and route capability metadata.

Operations 2

GET /api/public/catalog Read the published model and price catalog #
GET /v1/models List live selectors for an API key #

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/infer-by-flow7:infer-by-flow7-catalog-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

infer-by-flow7-catalog-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Infer by Flow7 Public Catalog API
  summary: Authenticated Responses, Chat Completions, and Anthropic Messages inference plus public catalog/status metadata.
  description: 'This description covers Infer''s public paid integration surface: authenticated Responses, OpenAI Chat Completions, Anthropic Messages, the authenticated model/receipt APIs, and unauthenticated catalog/status resources. All inference skins share one routing, wallet, cache, media, privacy, and receipt engine. Public registration creates an account; the account email must be verified, the wallet must be funded, and a scoped API key must be created before metered inference. Route availability is dynamic, so read the public status resource immediately before use. Infer does not attest an upstream provider identity.'
  termsOfService: https://infer.flow7.org/terms
  contact:
    name: Infer by Flow7 support
    url: https://infer.flow7.org/support
  version: 0.9.0
  x-infer-access:
    mode: public-paid
    url: https://infer.flow7.org/signup
    automaticAccountProvisioning: true
    emailVerificationRequired: true
    fundingRequiredForLiveInference: true
  x-infer-streaming:
    mode: live-incremental
    providerDeltasForwarded: true
    reasoningDeltas: true
    toolArgumentDeltas: true
    heartbeatSeconds: 15
    inferTotalGenerationDeadline: null
    finalSettlementMetadata: true
    clientDisconnectCancelsUpstream: true
    clientDisconnectCharge: generated_usage_up_to_reservation
servers:
- url: https://infer.flow7.org
  description: Infer's production origin. Read /api/public/status for current route availability.
tags:
- name: Catalog
  description: Model selectors, published prices, and route capability metadata.
paths:
  /api/public/catalog:
    get:
      tags:
      - Catalog
      summary: Read the published model and price catalog
      description: Returns published selectors, pricing metadata, privacy modes, and customer-facing runtime capability fields. A catalog row or published price is not proof that its selector is callable. The response's environment and runtime fields are authoritative. Requests use the live environment; unavailable live routes fail closed. Private routing topology is excluded.
      operationId: getPublicCatalog
      security: []
      parameters:
      - name: environment
        in: query
        required: false
        description: Requested catalog environment. The response environment is live.
        schema:
          type: string
          enum:
          - live
      responses:
        '200':
          description: Published catalog. Inspect each model's runtime status before use.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicCatalog'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
  /v1/models:
    get:
      tags:
      - Catalog
      summary: List live selectors for an API key
      description: Returns selectors for the authenticated API key. Every returned selector has current public-callable capacity for its exact price option at response time; availability can change, so consult public status immediately before use. The key must carry the inference:write scope.
      operationId: listModels
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Currently callable live selectors for the authenticated API key.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ModelPrice:
      type: object
      required:
      - name
      - kind
      - tier
      - input_per_million_usd
      - cached_input_per_million_usd
      - output_per_million_usd
      properties:
        name:
          type: string
        kind:
          type: string
        tier:
          type: string
          enum:
          - low-cost
          - balanced
          - stable
          - official
        input_per_million_usd:
          type: number
        cached_input_per_million_usd:
          type: number
        output_per_million_usd:
          type: number
        generation:
          $ref: '#/components/schemas/GenerationPricing'
      additionalProperties: false
    Model:
      type: object
      required:
      - id
      - object
      - owned_by
      - relay
      properties:
        id:
          type: string
          pattern: ^infer/[a-z0-9._/-]+:(low-cost|balanced|stable|official)$
        object:
          type: string
          const: model
        owned_by:
          type: string
          const: infer
        relay:
          $ref: '#/components/schemas/ModelPrice'
      additionalProperties: false
    ErrorDetail:
      type: object
      required:
      - code
      - message
      - request_id
      properties:
        code:
          type: string
        message:
          type: string
        request_id:
          type:
          - string
          - 'null'
      additionalProperties: true
    PublicCatalog:
      type: object
      required:
      - currency
      - unit
      - environment
      - simulated
      - live_available
      - models
      - disclosure
      properties:
        currency:
          type: string
          const: USD
        unit:
          type: string
          const: per_million_tokens
        environment:
          type: string
          enum:
          - live
        simulated:
          type: boolean
        live_available:
          type: boolean
          description: Whether live inference is enabled globally. This alone does not establish selector callability.
        models:
          type: array
          items:
            $ref: '#/components/schemas/CatalogModel'
        disclosure:
          $ref: '#/components/schemas/CatalogDisclosure'
        updated_at:
          type: string
          format: date-time
          description: Time Infer generated this catalog response and evaluated current callability.
        evidence_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Oldest route-health evidence timestamp among currently published callable model families.
      additionalProperties: false
    CatalogTier:
      type: object
      required:
      - tier
      - selector
      - available
      - privacy_modes
      - input_per_million_usd
      - cached_input_per_million_usd
      - cache_write_per_million_usd
      - output_per_million_usd
      - request_usd
      - image_input_usd
      - price_version
      properties:
        tier:
          type: string
          enum:
          - low-cost
          - balanced
          - stable
          - official
          description: Canonical customer-facing Infer service policy.
        selector:
          type: string
          pattern: ^infer/[a-z0-9._/-]+:(low-cost|balanced|stable|official)$
        available:
          type: boolean
          description: True only when this exact selector currently has public-callable capacity for the default standard privacy mode. Use the authenticated /v1/models list for actionable live selectors.
        privacy_modes:
          type: array
          items:
            type: string
            enum:
            - standard
            - no-training
            - zero-retention
        input_per_million_usd:
          type: number
        cached_input_per_million_usd:
          type: number
        cache_write_per_million_usd:
          type: number
          description: Customer price per million input tokens written into a provider prompt cache when the selected route reports cache-write usage.
        output_per_million_usd:
          type: number
        request_usd:
          type: number
        price_version:
          type: string
          description: Opaque reference (pv_…) to the immutable price version currently published for this option. Response metadata and usage receipts carry the same reference for requests charged at these rates. It identifies the rate record only and reveals no supplier or cost information.
        runtime:
          $ref: '#/components/schemas/CatalogRuntime'
        image_input_usd:
          type: number
          minimum: 0
          description: Per-image input charge when the selected price record has a separate image-input fee. Token-priced image processing may also appear in input usage.
        generation:
          $ref: '#/components/schemas/GenerationPricing'
      additionalProperties: true
    CatalogDisclosure:
      type: object
      required:
      - supplier_identity
      - environment
      - statement
      properties:
        supplier_identity:
          type: string
          const: private
        environment:
          type: string
          enum:
          - live
        statement:
          type: string
      additionalProperties: false
    ModelList:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          const: list
        data:
          type: array
          items:
            $ref: '#/components/schemas/Model'
      additionalProperties: false
    CatalogRuntime:
      type: object
      required:
      - status
      - p95_latency_ms
      - max_context_tokens
      - max_output_tokens
      - max_input_characters
      - tools
      - structured_outputs
      - vision
      - streaming
      - responses_api
      - files
      - audio
      - video
      - image_generation
      - video_generation
      properties:
        status:
          type: string
          enum:
          - operational
          - unavailable
        p95_latency_ms:
          type:
          - integer
          - 'null'
          description: Observed p95 latency for the selected tier; model-level runtime uses the conservative maximum across currently published tiers.
        max_context_tokens:
          type:
          - integer
          - 'null'
        max_output_tokens:
          type:
          - integer
          - 'null'
        max_input_characters:
          type: integer
          minimum: 1
          description: Infer's platform input-text character ceiling for this deployment.
        tools:
          type: boolean
        structured_outputs:
          type: boolean
        vision:
          type: boolean
          description: Native image input support through the selected Responses route.
        streaming:
          type: boolean
        responses_api:
          type: boolean
        files:
          type: boolean
          description: Native file/PDF input support through the selected Responses route.
        audio:
          type: boolean
          description: Native audio input support through the selected Responses route.
        video:
          type: boolean
          description: Native video input support through the selected Responses route.
        health_evidence_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Oldest route-health evidence timestamp among routes supporting this runtime profile.
        image_generation:
          type: boolean
          description: Native image-generation support through /v1/images/generations and JSON URL-based /v1/images/edits.
        video_generation:
          type: boolean
          description: Native asynchronous video-generation support through /v1/videos.
      additionalProperties: false
    ErrorEnvelope:
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      additionalProperties: false
    GenerationPricing:
      type:
      - object
      - 'null'
      required:
      - unit
      - prices
      properties:
        unit:
          type: string
          enum:
          - generated_image
          - generated_second
        prices:
          type: object
          additionalProperties:
            type: number
            minimum: 0
          description: Customer USD price by generation variant. Image keys use quality:size; video keys use resolution and are per generated second.
      additionalProperties: false
    CatalogModel:
      type: object
      required:
      - slug
      - name
      - kind
      - environment
      - tiers
      - runtime
      properties:
        slug:
          type: string
        name:
          type: string
        kind:
          type: string
        environment:
          type: string
          enum:
          - live
        tiers:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CatalogTier'
          description: 'Map keyed only by the canonical Infer service policies: low-cost, balanced, stable, and official.'
        runtime:
          $ref: '#/components/schemas/CatalogRuntime'
      description: Stable integration fields are described explicitly. Additional public presentation and market-reference fields may be present.
      additionalProperties: true
  headers:
    RequestId:
      description: Request correlation identifier generated or safely accepted by Infer.
      schema:
        type: string
  responses:
    Forbidden:
      description: The key, organization, environment, or scope cannot perform this operation.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    InternalError:
      description: Infer could not complete the operation.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    RateLimited:
      description: The request rate limit or an API-key spend ceiling was reached.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          description: Delay in seconds supplied for coarse request-rate limits.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Unauthorized:
      description: A valid Bearer API key is required.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Infer API key
      description: Infer API key. Do not place it in a URL, prompt, support request, or public diagnostic output.
    anthropicApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Infer API key accepted on the Anthropic Messages compatibility endpoint. Bearer authentication is also supported.
externalDocs:
  description: Human-readable Infer API documentation
  url: https://infer.flow7.org/docs
x-provenance:
  method: harvested
  publisher: Infer by Flow7
  source: https://infer.flow7.org/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)