> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pearl.computer/llms.txt
> Use this file to discover all available pages before exploring further.

# List Models

> Get the merged model catalog across inference providers

Returns a provider-isolated, namespaced catalog. Free — no payment required.
One provider failing does not blank the others; failures appear in `errors`.

Public model ids use `provider/upstream-model-id`. Split only on the first
slash because upstream ids may contain additional slashes.

## Query parameters

<ParamField query="provider" type="string">
  Optional provider id filter, such as `surplus`.
</ParamField>

<ParamField query="q" type="string">
  Optional case-insensitive substring search over model id and label.
</ParamField>

## Response

<ResponseField name="data" type="array">
  Available catalog rows.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Namespaced model id to pass to chat or media generation.
    </ResponseField>

    <ResponseField name="provider" type="string">
      Provider registry id.
    </ResponseField>

    <ResponseField name="modality" type="string">
      `text`, `image`, `video`, or `music`. New values may be added.
    </ResponseField>

    <ResponseField name="label" type="string">
      Human-readable model name.
    </ResponseField>

    <ResponseField name="contextLength" type="number">
      Optional maximum context window in tokens, when the provider reports it.
    </ResponseField>

    <ResponseField name="pricing" type="object">
      Optional `{ inputPerMillion, outputPerMillion }` USD list pricing.
    </ResponseField>

    <ResponseField name="peerCount" type="number">
      Optional number of network peers currently serving the model, for
      decentralized providers that report it.
    </ResponseField>

    <ResponseField name="payment" type="string">
      Current values include `none`, `x402`, `prepaid`, and `platform`.
      Treat unknown values as unsupported rather than failing.
    </ResponseField>

    <ResponseField name="available" type="boolean">
      Whether the provider capability is live.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="errors" type="object">
  Optional map of provider id to isolated catalog-fetch error.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"system"} theme={null}
  curl "https://pearl.computer/v1/inference/models?q=glm"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={"system"} theme={null}
  {
    "data": [
      {
        "id": "dolphin/dolphinserver:24B",
        "provider": "dolphin",
        "modality": "text",
        "label": "Dolphin 24B",
        "payment": "none",
        "available": true
      },
      {
        "id": "surplus/zai-org/glm-4.5",
        "provider": "surplus",
        "modality": "text",
        "label": "GLM 4.5",
        "contextLength": 128000,
        "pricing": { "inputPerMillion": 0.6, "outputPerMillion": 2.2 },
        "payment": "x402",
        "available": true
      }
    ]
  }
  ```
</ResponseExample>


## OpenAPI

````yaml api-reference/inference/openapi.json GET /v1/inference/models
openapi: 3.1.0
info:
  title: Pearl Inference API
  description: OpenAI-compatible inference router with x402, prepaid, and durable media.
  version: 1.0.0
servers:
  - url: https://pearl.computer
security: []
tags:
  - name: Inference
    description: Chat, catalog, providers, and templates
paths:
  /v1/inference/models:
    get:
      tags:
        - Inference
      summary: List Models
      description: Merged model catalog across inference providers.
      operationId: inferenceListModels
      parameters:
        - name: provider
          in: query
          schema:
            type: string
        - name: q
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Model catalog

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.