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

# Quickstart

> Send your first screenshot to Holo in a few minutes.

Get an API key, install the OpenAI client, and send a screenshot. The reply tells you what the model sees and what it would click. Model IDs, pricing, and tiers are on the [introduction](/models-api/introduction#models).

<Steps titleSize="h3">
  <Step title="Get an API key">
    Generate a key on [Portal-H](https://portal.hcompany.ai/?product=modelsapi\&source=docs) and export it. The free tier needs no credit card. [Add credits](https://portal.hcompany.ai/credits?product=modelsapi\&source=docs) for higher limits and `holo3-122b-a10b`.

    ```bash theme={"system"}
    export HAI_API_KEY="your-api-key-here"
    ```
  </Step>

  <Step title="Install the OpenAI client">
    The API is OpenAI-compatible, so the official client works as is. Only the `base_url` changes.

    <CodeGroup>
      ```bash Python theme={"system"}
      pip install openai
      ```

      ```bash TypeScript theme={"system"}
      npm install openai
      ```
    </CodeGroup>
  </Step>

  <Step title="Send a screenshot">
    Point the client at H, then send an image and a question.

    <CodeGroup>
      ```python Python theme={"system"}
      import os
      from openai import OpenAI

      client = OpenAI(
          base_url="https://api.hcompany.ai/v1/",
          api_key=os.environ.get("HAI_API_KEY"),
      )

      response = client.chat.completions.create(
          model="holo3-1-35b-a3b",
          messages=[{
              "role": "user",
              "content": [
                  {"type": "image_url", "image_url": {"url": "https://your-host/screenshot.png"}},
                  {"type": "text", "text": "What is on this screen, and what would you click to sign in?"},
              ],
          }],
      )

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

      ```typescript TypeScript theme={"system"}
      import OpenAI from "openai";

      const client = new OpenAI({
        baseURL: "https://api.hcompany.ai/v1/",
        apiKey: process.env.HAI_API_KEY,
      });

      const response = await client.chat.completions.create({
        model: "holo3-1-35b-a3b",
        messages: [{
          role: "user",
          content: [
            { type: "image_url", image_url: { url: "https://your-host/screenshot.png" } },
            { type: "text", text: "What is on this screen, and what would you click to sign in?" },
          ],
        }],
      });

      console.log(response.choices[0].message.content);
      ```

      ```bash cURL theme={"system"}
      curl https://api.hcompany.ai/v1/chat/completions \
        -H "Authorization: Bearer $HAI_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "holo3-1-35b-a3b",
          "messages": [{
            "role": "user",
            "content": [
              {"type": "image_url", "image_url": {"url": "https://your-host/screenshot.png"}},
              {"type": "text", "text": "What is on this screen, and what would you click to sign in?"}
            ]
          }]
        }'
      ```
    </CodeGroup>

    Images can be a URL or a base64 data URI. Swap `model` for `holo3-122b-a10b` when you need maximum performance, or list what your key can reach with [`GET /v1/models`](/models-api/list-models).
  </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Agent loop" icon="arrows-rotate" href="/models-api/agent-loop">
    Multi-turn. Conversation and screenshots in, the next action out.
  </Card>

  <Card title="Element localization" icon="crosshairs" href="/models-api/element-localization">
    Single-turn. A screenshot and a target description in, click coordinates out.
  </Card>

  <Card title="Document OCR" icon="file-lines" href="/models-api/document-ocr">
    Single-turn. A page image in, its full text out.
  </Card>

  <Card title="API reference" icon="code" href="/models-api/api-reference">
    Endpoints, request and response shapes, errors, and rate limits.
  </Card>
</CardGroup>
