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

# Models

> VLM Run Gateway model catalog for OCR, VQA, and document inference

The VLM Run Gateway serves open-weight vision and document models through a single
OpenAI-compatible API. Each model declares the input types it accepts
(`text`, `image_url`, `document_url`) and the operations it
supports via the `method` field.

## Visual Question Answering (VQA)

VQA models accept text plus up to 64 images in the same message.

| Model                                                           | Status    | Method | Accepted Inputs     | Max images |
| --------------------------------------------------------------- | --------- | ------ | ------------------- | ---------- |
| [`qwen/qwen3.5-0.8b`](https://huggingface.co/Qwen/Qwen3.5-0.8B) | Available | —      | `text`, `image_url` | 64         |

See [`method`](/gateway/methods#visual-qa) parameters for more details.

<Tabs>
  <Tab title="qwen/qwen3.5-0.8b">
    <CodeGroup>
      ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      from openai import OpenAI

      client = OpenAI(
          base_url="https://gateway.vlm.run/v1/openai",
          api_key="<VLMRUN_API_KEY>",
      )

      response = client.chat.completions.create(
          model="qwen/qwen3.5-0.8b",
          messages=[
              {
                  "role": "user",
                  "content": [
                      {"type": "text", "text": "What is happening in this image?"},
                      {
                          "type": "image_url",
                          "image_url": {
                              "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/image.caption/sample.jpg"
                          },
                      },
                  ],
              }
          ],
      )

      print(response.choices[0].message.content)
      ```

      ```bash cURL [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      curl https://gateway.vlm.run/v1/openai/chat/completions \
        -X POST \
        -H "Authorization: Bearer $VLMRUN_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "qwen/qwen3.5-0.8b",
          "messages": [
            {
              "role": "user",
              "content": [
                { "type": "text", "text": "What is happening in this image?" },
                {
                  "type": "image_url",
                  "image_url": {
                    "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/image.caption/sample.jpg"
                  }
                }
              ]
            }
          ]
        }'
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Document and Image OCR

These models accept a PDF via `document_url` or an image via `image_url`. The VLM Run Gateway
rasterizes each page and runs per-page inference, returning concatenated markdown (non-streaming)
or ordered page blocks (streaming). Use `method: "ocr"` for full OCR, or `method: "detect"` when
you only need text detection and bounding polygons. `zai-org/glm-ocr` and `rednote-hilab/dots.mocr`
produce reading-order markdown via `method: "markdown"`. For images, the Gateway runs inference on
the entire image. For consistency purposes, we do not stream on a token-by-token basis.

| Model                                                                           | Status    | Method     | Accepted Inputs             | Streaming |
| ------------------------------------------------------------------------------- | --------- | ---------- | --------------------------- | --------- |
| [`paddleocr/pp-ocrv6`](https://huggingface.co/PaddlePaddle/PP-OCRv6_medium_det) | Available | `ocr`      | `image_url`, `document_url` | Page-wise |
| [`zai-org/glm-ocr`](https://huggingface.co/zai-org/GLM-OCR)                     | Available | `markdown` | `image_url`, `document_url` | Page-wise |
| [`rednote-hilab/dots.mocr`](https://huggingface.co/rednote-hilab/dots.mocr)     | Available | `markdown` | `image_url`, `document_url` | Page-wise |

See [`method`](/gateway/methods#document-and-image-ocr) parameters for more details.

<Tabs>
  <Tab title="paddleocr/pp-ocrv6">
    <CodeGroup>
      ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      from openai import OpenAI

      client = OpenAI(
          base_url="https://gateway.vlm.run/v1/openai",
          api_key="<VLMRUN_API_KEY>",
      )

      response = client.chat.completions.create(
          model="paddleocr/pp-ocrv6",
          messages=[
              {
                  "role": "user",
                  "content": [
                      {
                          "type": "document_url",
                          "document_url": {
                              "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                          },
                      },
                  ],
              }
          ],
          extra_body={"method": "ocr", "document_dpi": 150},
      )

      print(response.choices[0].message.content)
      ```

      ```bash cURL [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      curl https://gateway.vlm.run/v1/openai/chat/completions \
        -X POST \
        -H "Authorization: Bearer $VLMRUN_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "paddleocr/pp-ocrv6",
          "method": "ocr",
          "document_dpi": 150,
          "messages": [
            {
              "role": "user",
              "content": [
                {
                  "type": "document_url",
                  "document_url": {
                    "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                  }
                }
              ]
            }
          ]
        }'
      ```
    </CodeGroup>
  </Tab>

  <Tab title="zai-org/glm-ocr">
    <CodeGroup>
      ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      from openai import OpenAI

      client = OpenAI(
          base_url="https://gateway.vlm.run/v1/openai",
          api_key="<VLMRUN_API_KEY>",
      )

      response = client.chat.completions.create(
          model="zai-org/glm-ocr",
          messages=[
              {
                  "role": "user",
                  "content": [
                      {
                          "type": "document_url",
                          "document_url": {
                              "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                          },
                      },
                  ],
              }
          ],
          extra_body={"method": "markdown", "document_dpi": 150},
      )

      print(response.choices[0].message.content)
      ```

      ```bash cURL [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      curl https://gateway.vlm.run/v1/openai/chat/completions \
        -X POST \
        -H "Authorization: Bearer $VLMRUN_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "zai-org/glm-ocr",
          "method": "markdown",
          "document_dpi": 150,
          "messages": [
            {
              "role": "user",
              "content": [
                {
                  "type": "document_url",
                  "document_url": {
                    "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                  }
                }
              ]
            }
          ]
        }'
      ```
    </CodeGroup>
  </Tab>

  <Tab title="rednote-hilab/dots.mocr">
    <CodeGroup>
      ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      from openai import OpenAI

      client = OpenAI(
          base_url="https://gateway.vlm.run/v1/openai",
          api_key="<VLMRUN_API_KEY>",
      )

      response = client.chat.completions.create(
          model="rednote-hilab/dots.mocr",
          messages=[
              {
                  "role": "user",
                  "content": [
                      {
                          "type": "document_url",
                          "document_url": {
                              "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                          },
                      },
                  ],
              }
          ],
          extra_body={"method": "markdown", "document_dpi": 150},
      )

      print(response.choices[0].message.content)
      ```

      ```bash cURL [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
      curl https://gateway.vlm.run/v1/openai/chat/completions \
        -X POST \
        -H "Authorization: Bearer $VLMRUN_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "rednote-hilab/dots.mocr",
          "method": "markdown",
          "document_dpi": 150,
          "messages": [
            {
              "role": "user",
              "content": [
                {
                  "type": "document_url",
                  "document_url": {
                    "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.markdown/goog-10-k-2024.pdf"
                  }
                }
              ]
            }
          ]
        }'
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Embeddings and Transcription

These models appear on [`GET /v1/openai/models`](/gateway/api-reference/get-models)
with a `task` field other than `chat`. They use separate OpenAI-compatible
endpoints, not chat completions. See
[Embeddings](/gateway/api-reference/post-embeddings) and
[Audio Transcriptions](/gateway/api-reference/post-audio-transcriptions) for
full request schemas.

| Model                                                                               | Status    | Task         | Endpoint                               |
| ----------------------------------------------------------------------------------- | --------- | ------------ | -------------------------------------- |
| [`qwen/qwen3-vl-embedding-2b`](https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B)   | Available | `embed`      | `POST /v1/openai/embeddings`           |
| [`nvidia/parakeet-tdt-0.6b-v3`](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3) | Available | `transcribe` | `POST /v1/openai/audio/transcriptions` |

<Tabs>
  <Tab title="qwen/qwen3-vl-embedding-2b">
    ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    from openai import OpenAI

    client = OpenAI(
        base_url="https://gateway.vlm.run/v1/openai",
        api_key="<VLMRUN_API_KEY>",
    )

    response = client.embeddings.create(
        model="qwen/qwen3-vl-embedding-2b",
        input="Extract a vector representation for this text.",
    )

    print(len(response.data[0].embedding))
    ```
  </Tab>

  <Tab title="nvidia/parakeet-tdt-0.6b-v3">
    ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    from openai import OpenAI

    client = OpenAI(
        base_url="https://gateway.vlm.run/v1/openai",
        api_key="<VLMRUN_API_KEY>",
    )

    with open("sample.mp3", "rb") as audio_file:
        response = client.audio.transcriptions.create(
            model="nvidia/parakeet-tdt-0.6b-v3",
            file=audio_file,
        )

    print(response.text)
    ```
  </Tab>
</Tabs>

## Model Aliases

Many models accept multiple request IDs:

1. **Preferred:** lowercase `<org>/<slug>` (listed on `/models`)
2. **Short:** slug only (e.g. `pp-ocrv6`)
3. **Hugging Face:** upstream repo id (e.g. [`PaddlePaddle/PP-OCRv6_medium_det`](https://huggingface.co/PaddlePaddle/PP-OCRv6_medium_det))

## Next steps

<CardGroup cols={2}>
  <Card title="Flexible Document OCR" icon="file-lines" href="/gateway/guides/document-ocr">
    End-to-end recipe from model selection to response parsing.
  </Card>

  <Card title="Methods" icon="list-check" href="/gateway/methods">
    Per-model `method` and `method_params` reference.
  </Card>

  <Card title="Chat Completions API" icon="code" href="/gateway/api-reference/post-chat-completions">
    Full request parameters, streaming, and error handling.
  </Card>

  <Card title="Error Codes" icon="triangle-exclamation" href="/gateway/error-codes">
    HTTP status mapping, correlation ids, and support details.
  </Card>
</CardGroup>
