> ## 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.

# API reference

> Endpoint, authentication, conventions, and the Holo-specific request surface.

The Models API is OpenAI-compatible: point the official OpenAI client (or any compatible library) at H Company's endpoint. You opt into Holo-specific behavior (structured outputs, reasoning, and the coordinate convention) through a few extra request fields and conventions documented here.

## Endpoints

<CardGroup cols={2}>
  <Card title="POST /chat/completions" icon="message" href="/models-api/chat-completions">
    The inference endpoint: parameters, response fields, streaming.
  </Card>

  <Card title="GET /v1/models" icon="list" href="/models-api/list-models">
    Discover served models, limits, pricing, and deprecation dates at runtime.
  </Card>
</CardGroup>

## Endpoint and auth

|          |                                                                                      |
| :------- | :----------------------------------------------------------------------------------- |
| Base URL | `https://api.hcompany.ai/v1/`                                                        |
| Auth     | `Authorization: Bearer $HAI_API_KEY` (handled by the OpenAI client)                  |
| Keys     | Create one on [Portal-H](https://portal.hcompany.ai/?product=modelsapi\&source=docs) |

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

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

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

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

Model IDs, per-model limits, pricing, and tiers live on the [Models](/models-api/introduction#models) page.

## The two response channels

Every call returns `message.content` (the action or answer) and `message.reasoning` (the thinking trace, read-only). Field-by-field details are in the [chat completions reference](/models-api/chat-completions#response); how to carry state across turns is in the [Agent loop](/models-api/agent-loop#reasoning).

## Conventions

<AccordionGroup>
  <Accordion title="Coordinates in [0, 1000]" defaultOpen>
    Click positions are integers normalized to the image you sent, origin top-left. Scale back with the image's own dimensions: [Coordinates](/models-api/agent-loop#coordinates-in-0-1000).
  </Accordion>

  <Accordion title="Image budget">
    Keep at most the last 3 screenshots in context for best accuracy, even though a request accepts up to 5 images. See [the trim helper](/models-api/agent-loop#image-budget) in the agent loop.
  </Accordion>

  <Accordion title="Output formats">
    Structured outputs work on both models. Native function calling (`tools` / `tool_calls`) is `holo3-1-35b-a3b` only. Pick one and stay in it: [Agent loop](/models-api/agent-loop#output-format-and-tool-calls).
  </Accordion>

  <Accordion title="Holo-specific fields and the OpenAI SDKs">
    `structured_outputs` and `chat_template_kwargs` are top-level body fields. Pass them via `extra_body` (Python) or an untyped spread (TypeScript): [Chat completions](/models-api/chat-completions#body-structured-outputs).
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={3}>
  <Card title="Chat completions" icon="message" href="/models-api/chat-completions">
    Full parameter and response reference.
  </Card>

  <Card title="Models" icon="microchip" href="/models-api/introduction#models">
    IDs, limits, pricing, lifecycle.
  </Card>

  <Card title="Agent loop" icon="arrows-rotate" href="/models-api/agent-loop">
    How to use Holo in your computer-use harness.
  </Card>
</CardGroup>
