Infer by Flow7 Inference API

Authenticated customer inference operations.

Operations 1

POST /v1/responses Create a Responses-style inference request #

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-inference-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

infer-by-flow7-inference-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Infer by Flow7 Public Inference API
  summary: Authenticated Responses inference plus public catalog and route-status metadata.
  description: 'This description covers Infer''s public paid-beta integration surface: the authenticated Responses endpoint and model list, plus the unauthenticated catalog and status resources. Public registration creates a workspace; the account email must be verified, the live wallet must be funded, and a scoped live API key must be created before paid live inference. Route availability is dynamic, so read the public status resource before sending traffic. Strict supplier-evidence readiness is a separate standard, and 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.4.0
  x-infer-access:
    mode: public-paid-beta
    url: https://infer.flow7.org/signup
    automaticWorkspaceCreation: true
    emailVerificationRequired: true
    fundingRequiredForLiveInference: true
servers:
- url: https://infer.flow7.org
  description: Infer's production origin. Read /api/public/status for current route availability.
tags:
- name: Inference
  description: Authenticated customer inference operations.
paths:
  /v1/responses:
    post:
      tags:
      - Inference
      summary: Create a Responses-style inference request
      description: Authenticates an Infer API key, validates a canonical model selector and routing policy, reserves the request's spend ceiling, and returns a charge record reference after completion. Exact model-family selection does not cross into another model family. Verified, funded public paid-beta workspaces can send live requests while the selected service is operational. Route eligibility still depends on the current environment, capabilities, privacy policy, region, health, authorization, and capacity; read /api/public/status immediately before use. A response model name or charge record does not attest upstream provider identity or satisfy Infer's separate strict supplier-evidence standard.
      operationId: createResponse
      security:
      - bearerAuth: []
      parameters:
      - name: Idempotency-Key
        in: header
        required: false
        description: Stable retry key, scoped to the organization and API-key environment. The header takes precedence over the body field. Infer generates a one-use value when omitted; clients that may retry should send one explicitly. A failed operation keeps its key as a terminal failure record; retry that operation with a new key.
        schema:
          type: string
          minLength: 1
          maxLength: 200
      - name: X-Session-Affinity
        in: header
        required: false
        description: Optional stable session identifier. relay.session_id in the JSON body takes precedence.
        schema:
          type: string
          minLength: 1
          maxLength: 200
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateResponseRequest'
      responses:
        '200':
          description: Completed response as JSON, or Responses events when stream is true. Infer currently assembles the completed upstream result into an SSE event sequence; this description does not promise token-by-token upstream delivery.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseObject'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/ResponseEventStream'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/PayloadTooLarge'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  schemas:
    ResponseObject:
      type: object
      required:
      - id
      - object
      - created_at
      - status
      - model
      - output
      - output_text
      - usage
      - relay
      properties:
        id:
          type: string
        object:
          type: string
          const: response
        created_at:
          type: integer
        status:
          type: string
          const: completed
        model:
          type: string
          description: The requested Infer selector. Read relay.resolved_model_class for the class that completed.
        output:
          type: array
          items:
            type: object
            additionalProperties: true
        output_text:
          type: string
        usage:
          $ref: '#/components/schemas/ResponseUsage'
        relay:
          $ref: '#/components/schemas/RelayResponseMetadata'
      additionalProperties: true
    RelayResponseMetadata:
      type: object
      required:
      - receipt_id
      - price_version
      - tier
      - resolved_model_class
      - cache_status
      - environment
      - provider_disclosed
      - customer_cost_usd
      properties:
        receipt_id:
          type: string
        price_version:
          type: string
        tier:
          type: string
          enum:
          - economy
          - balanced
          - priority
          - official
        resolved_model_class:
          type: string
        cache_status:
          type: string
          enum:
          - hit
          - partial
          - miss
        environment:
          type: string
          enum:
          - sandbox
          - live
        provider_disclosed:
          type: boolean
          const: false
        customer_cost_usd:
          type: number
          minimum: 0
        idempotent_replay:
          type: boolean
      additionalProperties: true
    CreateResponseRequest:
      type: object
      required:
      - model
      - input
      properties:
        model:
          type: string
          pattern: ^infer/[a-z0-9._/-]+:(low-cost|balanced|stable|official)$
          description: Canonical selector from the model list or public catalog.
        input:
          $ref: '#/components/schemas/ResponseInput'
        max_output_tokens:
          type: integer
          minimum: 1
          description: Requested output ceiling. The deployment's configured maximum also applies.
        stream:
          type: boolean
          default: false
        tools:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Responses-style function tools. The selected route must advertise tool support.
        text:
          type: object
          additionalProperties: true
          description: Responses text options, including a structured-output format. Route support is required.
        response_format:
          type: object
          additionalProperties: true
          description: Accepted structured-output shorthand. Route support is required.
        reasoning:
          type: object
          additionalProperties: true
        relay:
          $ref: '#/components/schemas/RelayRequestOptions'
        session_id:
          type: string
          minLength: 1
          maxLength: 200
          description: Top-level session identifier accepted for compatibility. relay.session_id is preferred.
        idempotency_key:
          type: string
          minLength: 1
          maxLength: 200
          description: Body fallback for Idempotency-Key. The header wins when both are present.
        request_id:
          type: string
          description: Optional client correlation value.
      description: Infer documents the stable fields it validates or uses for routing. Additional Responses fields may pass through on native Responses routes and should not be assumed portable across every route protocol.
      additionalProperties: true
    ResponseInput:
      oneOf:
      - type: string
        minLength: 1
      - type: array
        minItems: 1
        items:
          oneOf:
          - type: string
          - $ref: '#/components/schemas/ResponseInputItem'
      description: Text or a list of Responses input items. The complete list must contain extractable text in a string or message content for Infer's admission check. Native Responses routes may also carry message, function_call, and function_call_output turn objects; those objects are not assumed portable through translated route protocols.
      examples:
      - - type: message
          role: user
          content:
          - type: input_text
            text: Check the repository state, then use the approved read-only tool.
        - type: function_call
          call_id: call_example
          name: read_repository_state
          arguments: '{}'
        - type: function_call_output
          call_id: call_example
          output: No uncommitted changes.
    ErrorEnvelope:
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      additionalProperties: false
    InputTextPart:
      type: object
      properties:
        type:
          type: string
        text:
          type: string
        input_text:
          type: string
      anyOf:
      - required:
        - text
      - required:
        - input_text
      additionalProperties: true
    ResponseUsage:
      type: object
      required:
      - input_tokens
      - input_tokens_details
      - output_tokens
      - output_tokens_details
      - total_tokens
      properties:
        input_tokens:
          type: integer
          minimum: 0
        input_tokens_details:
          type: object
          required:
          - cached_tokens
          properties:
            cached_tokens:
              type: integer
              minimum: 0
          additionalProperties: true
        output_tokens:
          type: integer
          minimum: 0
        output_tokens_details:
          type: object
          required:
          - reasoning_tokens
          properties:
            reasoning_tokens:
              type: integer
              minimum: 0
          additionalProperties: true
        total_tokens:
          type: integer
          minimum: 0
      additionalProperties: true
    ResponseInputItem:
      type: object
      properties:
        type:
          type: string
          description: Responses item type, including message, function_call, or function_call_output.
        role:
          type: string
          enum:
          - user
          - assistant
          - system
          - developer
        content:
          oneOf:
          - type: string
            minLength: 1
          - type: array
            minItems: 1
            items:
              oneOf:
              - type: string
              - $ref: '#/components/schemas/InputTextPart'
        call_id:
          type: string
        name:
          type: string
        arguments:
          type: string
        output: {}
      description: Responses input item. Message content supplies extractable text; native tool-loop objects may omit content and use call_id, arguments, or output instead.
      additionalProperties: true
    ErrorDetail:
      type: object
      required:
      - code
      - message
      - request_id
      properties:
        code:
          type: string
        message:
          type: string
        request_id:
          type:
          - string
          - 'null'
      additionalProperties: true
    RelayRequestOptions:
      type: object
      properties:
        session_id:
          type: string
          minLength: 1
          maxLength: 200
        privacy:
          type: string
          enum:
          - standard
          - no-training
          - zero-retention
          default: standard
        region:
          type: string
          minLength: 1
          maxLength: 32
      additionalProperties: false
    ResponseEventStream:
      type: string
      description: 'SSE records using response.created, response output/content/function events, response.completed, and a final data: [DONE] sentinel.'
  responses:
    PayloadTooLarge:
      description: The input or request body exceeds a configured limit.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Conflict:
      description: The idempotency key is in progress, expired, or otherwise cannot be replayed.
      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'
    BadRequest:
      description: The request could not be processed.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    UnprocessableEntity:
      description: A selector, input, output limit, session identifier, or routing option is invalid.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Unavailable:
      description: Live inference is disabled, no eligible route has capacity, or no route completed within the retry budget.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    PaymentRequired:
      description: The wallet cannot cover the request's reservation.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    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'
    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'
    NotFound:
      description: No active price exists for the requested selector in this environment.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  headers:
    RequestId:
      description: Request correlation identifier generated or safely accepted by Infer.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Infer API key
      description: Workspace API key. Do not place it in a URL, prompt, support request, or public diagnostic output.
externalDocs:
  description: Human-readable Infer API documentation
  url: https://infer.flow7.org/docs