Orq.ai Model Catalog API

Browse the orq.ai model catalog: every model orq offers, across every provider, with pricing, capabilities and benchmark data. List endpoints only return models that are not deprecated. This API is public, requires no authentication, and is rate limited to 120 requests per minute per IP. Responses carry a 5-minute cache-control max-age.

Operations 3

GET /v2/model-catalog List the model catalog #
GET /v2/model-catalog/{model}/offerings List model catalog offerings #
GET /v2/model-catalog/{id} Retrieve a model catalog entry #

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/orq:orq-model-catalog-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

orq-model-catalog-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: orq.ai Model Catalog API
  version: '2.0'
  description: orq.ai API documentation
servers:
- url: https://my.orq.ai
security:
- ApiKey: []
tags:
- name: Model Catalog
  description: 'Browse the orq.ai model catalog: every model orq offers, across every provider, with pricing, capabilities and benchmark data. List endpoints only return models that are not deprecated. This API is public, requires no authentication, and is rate limited to 120 requests per minute per IP. Responses carry a 5-minute cache-control max-age.'
paths:
  /v2/model-catalog:
    get:
      tags:
      - Model Catalog
      summary: List the model catalog
      description: Returns every model orq offers, optionally filtered, searched and sorted. Deprecated models are never listed; fetch one directly by id to inspect it. Unset `limit` returns the whole catalog. Use `starting_after` or `ending_before` to page through the collection.
      operationId: ModelCatalogList
      parameters:
      - name: limit
        in: query
        description: Page size, 1–1000. Unset returns every non-deprecated model in one response.
        schema:
          type: integer
          format: int32
      - name: starting_after
        in: query
        description: "Cursor for forward pagination. Set to the `id` of the last item from\n the previous page."
        schema:
          type: string
      - name: ending_before
        in: query
        description: "Cursor for backward pagination. Set to the `id` of the first item\n from the previous page."
        schema:
          type: string
      - name: provider
        in: query
        description: "Filter by catalog provider key. Repeat to match any of several\n providers."
        schema:
          type: array
          items:
            type: string
      - name: endpoint
        in: query
        description: Filter by API endpoint. Repeat to match any of several endpoints.
        schema:
          type: array
          items:
            type: string
      - name: input_modality
        in: query
        description: Filter by input modality. Repeat to match any of several modalities.
        schema:
          type: array
          items:
            type: string
      - name: output_modality
        in: query
        description: Filter by output modality. Repeat to match any of several modalities.
        schema:
          type: array
          items:
            type: string
      - name: location
        in: query
        description: Filter by region. Repeat to match any of several regions.
        schema:
          type: array
          items:
            type: string
      - name: feature
        in: query
        description: "Filter by normalized feature name. Repeat to match any of several\n features."
        schema:
          type: array
          items:
            type: string
      - name: supported_parameter
        in: query
        description: "Filter by supported parameter key. Repeat to match any of several\n parameters."
        schema:
          type: array
          items:
            type: string
      - name: tier
        in: query
        description: "Filter by supported service tier. Repeat to match any of several\n tiers."
        schema:
          type: array
          items:
            type: string
      - name: offering_of
        in: query
        description: Filter to offerings of one base model reference, `<developer>/<stem>`.
        schema:
          type: string
      - name: search
        in: query
        description: Case-insensitive substring search over `id`, `name` and `description`.
        schema:
          type: string
      - name: sort_by
        in: query
        description: Field to sort by.
        schema:
          type: string
      - name: order
        in: query
        description: Sort order. Defaults to ascending.
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListModelCatalogResponse'
        '401':
          description: Authentication required. See https://docs.orq.ai/reference/errors for the error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-speakeasy-group: modelCatalog
      x-speakeasy-name-override: list
      x-mint:
        metadata:
          sidebarTitle: List catalog models
      security: []
      x-code-samples:
      - lang: curl
        label: Core - List the model catalog
        source: "curl --get 'https://my.orq.ai/v2/model-catalog' \\\n  --data-urlencode 'provider=openai' \\\n  --data-urlencode 'limit=10'\n"
      - lang: python
        label: Python - List the model catalog
        source: "import os\nfrom orq_ai_sdk import Orq\n\nclient = Orq(api_key=os.environ[\"ORQ_API_KEY\"])\n\npage = client.model_catalog.list(\n    provider=\"openai\",\n    limit=10,\n)\n\nfor model in page.data:\n    print(model.id, model.name)\n"
      - lang: typescript
        label: Node.js - List the model catalog
        source: "import { Orq } from '@orq-ai/node';\n\nconst client = new Orq({\n  apiKey: process.env.ORQ_API_KEY,\n});\n\nconst page = await client.modelCatalog.list({\n  provider: 'openai',\n  limit: 10,\n});\n\nfor (const model of page.data) {\n  console.log(model.id, model.name);\n}\n"
  /v2/model-catalog/{model}/offerings:
    get:
      tags:
      - Model Catalog
      summary: List model catalog offerings
      description: Returns every provider offering of one base model, identified by `/` (for example `anthropic/claude-opus-4-7`). Deprecated models are never listed.
      operationId: ModelCatalogListOfferings
      parameters:
      - name: model
        in: path
        description: "Base model reference, `<developer>/<stem>` (for example\n `anthropic/claude-opus-4-7`)."
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Page size, 1–1000. Unset returns every non-deprecated model in one response.
        schema:
          type: integer
          format: int32
      - name: starting_after
        in: query
        description: "Cursor for forward pagination. Set to the `id` of the last item from\n the previous page."
        schema:
          type: string
      - name: ending_before
        in: query
        description: "Cursor for backward pagination. Set to the `id` of the first item\n from the previous page."
        schema:
          type: string
      - name: provider
        in: query
        description: "Filter by catalog provider key. Repeat to match any of several\n providers."
        schema:
          type: array
          items:
            type: string
      - name: endpoint
        in: query
        description: Filter by API endpoint. Repeat to match any of several endpoints.
        schema:
          type: array
          items:
            type: string
      - name: input_modality
        in: query
        description: Filter by input modality. Repeat to match any of several modalities.
        schema:
          type: array
          items:
            type: string
      - name: output_modality
        in: query
        description: Filter by output modality. Repeat to match any of several modalities.
        schema:
          type: array
          items:
            type: string
      - name: location
        in: query
        description: Filter by region. Repeat to match any of several regions.
        schema:
          type: array
          items:
            type: string
      - name: feature
        in: query
        description: "Filter by normalized feature name. Repeat to match any of several\n features."
        schema:
          type: array
          items:
            type: string
      - name: supported_parameter
        in: query
        description: "Filter by supported parameter key. Repeat to match any of several\n parameters."
        schema:
          type: array
          items:
            type: string
      - name: tier
        in: query
        description: "Filter by supported service tier. Repeat to match any of several\n tiers."
        schema:
          type: array
          items:
            type: string
      - name: search
        in: query
        description: Case-insensitive substring search over `id`, `name` and `description`.
        schema:
          type: string
      - name: sort_by
        in: query
        description: Field to sort by.
        schema:
          type: string
      - name: order
        in: query
        description: Sort order. Defaults to ascending.
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListModelCatalogOfferingsResponse'
        '401':
          description: Authentication required. See https://docs.orq.ai/reference/errors for the error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-speakeasy-group: modelCatalog
      x-speakeasy-name-override: listOfferings
      x-mint:
        metadata:
          sidebarTitle: List model offerings
      security: []
      x-code-samples:
      - lang: curl
        label: Core - List model catalog offerings
        source: 'curl --get ''https://my.orq.ai/v2/model-catalog/anthropic/claude-opus-4-7/offerings''

          '
      - lang: python
        label: Python - List model catalog offerings
        source: "import os\nfrom orq_ai_sdk import Orq\n\nclient = Orq(api_key=os.environ[\"ORQ_API_KEY\"])\n\npage = client.model_catalog.list_offerings(\n    model=\"anthropic/claude-opus-4-7\",\n)\n\nfor offering in page.data:\n    print(offering.provider.id, offering.id)\n"
      - lang: typescript
        label: Node.js - List model catalog offerings
        source: "import { Orq } from '@orq-ai/node';\n\nconst client = new Orq({\n  apiKey: process.env.ORQ_API_KEY,\n});\n\nconst page = await client.modelCatalog.listOfferings({\n  model: 'anthropic/claude-opus-4-7',\n});\n\nfor (const offering of page.data) {\n  console.log(offering.provider.id, offering.id);\n}\n"
  /v2/model-catalog/{id}:
    get:
      tags:
      - Model Catalog
      summary: Retrieve a model catalog entry
      description: Retrieves a single catalog entry by its id, `/` (for example `openai/gpt-4o`). Unlike the list endpoints this also resolves deprecated models; check `deprecated` and `deprecation` on the response.
      operationId: ModelCatalogGet
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetModelCatalogModelResponse'
        '401':
          description: Authentication required. See https://docs.orq.ai/reference/errors for the error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The resource does not exist. See https://docs.orq.ai/reference/errors for the error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-speakeasy-group: modelCatalog
      x-speakeasy-name-override: get
      x-mint:
        metadata:
          sidebarTitle: Get catalog entry
      security: []
      parameters:
      - schema:
          type: string
          description: Catalog identifier, `<provider>/<model>` (for example `openai/gpt-4o`).
        required: true
        description: Catalog identifier, `<provider>/<model>` (for example `openai/gpt-4o`).
        name: id
        in: path
      x-code-samples:
      - lang: curl
        label: Core - Retrieve a model catalog entry
        source: 'curl --get ''https://my.orq.ai/v2/model-catalog/openai/gpt-4o''

          '
      - lang: python
        label: Python - Retrieve a model catalog entry
        source: "import os\nfrom orq_ai_sdk import Orq\n\nclient = Orq(api_key=os.environ[\"ORQ_API_KEY\"])\n\nresult = client.model_catalog.get(\n    id=\"openai/gpt-4o\",\n)\n\nprint(result.model.name, result.model.pricing)\n"
      - lang: typescript
        label: Node.js - Retrieve a model catalog entry
        source: "import { Orq } from '@orq-ai/node';\n\nconst client = new Orq({\n  apiKey: process.env.ORQ_API_KEY,\n});\n\nconst result = await client.modelCatalog.get({\n  id: 'openai/gpt-4o',\n});\n\nconsole.log(result.model.name, result.model.pricing);\n"
components:
  schemas:
    ListModelCatalogOfferingsResponse:
      required:
      - object
      - data
      - has_more
      type: object
      properties:
        object:
          type: string
          description: Object discriminator for list responses; always `list`.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Model'
          description: Page of catalog offerings, ordered by `offering_of` then `id`.
        has_more:
          type: boolean
          description: "Whether more offerings are available in the selected pagination\n direction."
    Model:
      required:
      - id
      - created
      - name
      - description
      - provider
      - endpoints
      - modalities
      - offering_of
      - supported_parameters
      - supported_tiers
      - location
      - features
      - deprecated
      - zdr
      type: object
      properties:
        id:
          type: string
          description: Catalog identifier, `<provider>/<model>` (for example `openai/gpt-4o`).
        created:
          type: string
          description: When orq listed this offering, as an RFC 3339 UTC timestamp.
          format: date-time
        deprecation:
          type: string
          description: "When this offering stops being served, as an RFC 3339 UTC timestamp:\n orq's own sunset date if one is set, otherwise the developer's announced\n deprecation date. Absent when neither is set."
          format: date-time
        name:
          type: string
          description: Display name shown in the orq model garden.
        description:
          type: string
          description: Short model description.
        provider:
          allOf:
          - $ref: '#/components/schemas/ModelProvider'
          description: Provider that serves this offering.
        endpoints:
          type: array
          items:
            type: string
          description: API endpoints this offering exposes (chat, batch, ...).
        modalities:
          allOf:
          - $ref: '#/components/schemas/ModelModalities'
          description: Content modalities this offering consumes and produces.
        offering_of:
          type: string
          description: Provider-independent model reference this offering serves, `<developer>/<stem>`.
        pricing:
          type: object
          description: "Resolved commercial pricing, including service-tier variants. Each\n variant carries a `when` CEL condition string evaluated against\n `input_tokens`, `output_tokens`, `total_tokens` and `tier`; all\n variants whose condition is true are merged onto the base pricing in\n order, later variants winning per field. Absent when this offering has\n no representable token-based pricing."
        supported_parameters:
          type: array
          items:
            type: string
          description: API parameter keys this offering accepts, snake_case (e.g. `temperature`, `max_tokens`).
        supported_tiers:
          type: array
          items:
            type: string
          description: Paid service tier names available to this offering.
        context_window:
          type: string
          description: "Maximum input context size in tokens (string-encoded int64 in JSON).\n Absent when not applicable."
        location:
          type: array
          items:
            type: string
          description: Regions this offering routes to, lowercased.
        artificial_intelligence:
          type: object
          description: "Artificial Analysis benchmark scores keyed by evaluation name. Absent\n when unavailable for this offering."
        features:
          type: array
          items:
            type: string
          description: "Normalized capability names this offering supports, snake_case and\n alphabetical (e.g. `json_mode`, `tool_calling`, `vision`, `web_search`)."
        deprecated:
          type: boolean
          description: "True when this offering is deprecated, whether or not a deprecation\n date is known. `deprecation` carries the date when one is announced."
        zdr:
          type: boolean
          description: True when this offering guarantees zero data retention.
    ModelProvider:
      required:
      - id
      - logo
      type: object
      properties:
        id:
          type: string
          description: Catalog provider key (openai, anthropic, aws, ...).
        logo:
          type: string
          description: Absolute URL of the provider logo. Empty when no logo is known.
    ModelModalities:
      required:
      - input
      - output
      type: object
      properties:
        input:
          type: array
          items:
            type: string
          description: Modalities this offering accepts as input.
        output:
          type: array
          items:
            type: string
          description: Modalities this offering produces as output.
    GetModelCatalogModelResponse:
      required:
      - model
      type: object
      properties:
        model:
          allOf:
          - $ref: '#/components/schemas/Model'
          description: Requested catalog entry.
    ListModelCatalogResponse:
      required:
      - object
      - data
      - has_more
      type: object
      properties:
        object:
          type: string
          description: Object discriminator for list responses; always `list`.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Model'
          description: Page of catalog entries.
        has_more:
          type: boolean
          description: "Whether more entries are available in the selected pagination\n direction."
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
        code:
          type: integer
          description: gRPC status code, when the service reports one.
        details:
          type: array
          items: {}
          description: Additional error details, when the service reports any.
      required:
      - message
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT
externalDocs:
  url: https://docs.orq.ai
  description: orq.ai Documentation
x-speakeasy-timeout: 600000