---
title: "Inference"
description: "Hosted models behind an OpenAI-compatible API, and the Model Catalog of every model EZGH Cloud serves."
---

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

# Inference

EZGH Inference serves models behind an OpenAI-compatible API. The stock OpenAI SDKs work with
only their base URL and API key set: there's nothing to create, and any project you have access
to can call any available model by its catalog ID. At launch it serves
`qwen3-embedding-0.6b` for text embeddings.

- [Embeddings with OpenAI SDKs](/inference/embeddings) — The base URL, an API key, and embeddings from Python, TypeScript and curl.
- [Models](/inference/models) — The Model Catalog: every model EZGH Cloud serves, its versions and properties.
- [Limits and errors](/inference/limits) — Rate, concurrency and monthly limits, rate-limit headers and error codes.

## Concepts

| Term | Meaning |
| --- | --- |
| Model Catalog | Every model EZGH Cloud serves, in any product, with its versions and properties. It's the same for everyone and public. |
| Model reference | How a request names a model: `qwen3-embedding-0.6b` (its latest version) or `qwen3-embedding-0.6b:1.0.0` (a pinned version). Responses name the version that ran. |
| Base URL | A project's OpenAI-compatible endpoint, `https://inference-api.ezghcloud.com/v1/organizations/<org>/projects/<project>/openai/v1`. Usage and limits are the project's. |

The API is at `https://inference-api.ezghcloud.com`. In the console, open **Inference**: **Models**
is the catalog, with a Quickstart on each model the API serves. **Service quotas** shows the current
project's limits. The `ezgh inference` commands read the catalog and a project's limits.

## Permissions

| Action | Allows | `InferenceFullAccess` | `InferenceReadOnlyAccess` | `ReadOnlyAccess` |
| --- | --- | --- | --- | --- |
| `inference.models.invoke` | Call models (create embeddings) | Yes | No | No |
| `inference.models.list` | List and read the models a project can call | Yes | Yes | Yes |
| `inference.limits.read` | Read a project's limits | Yes | Yes | Yes |

Each action is checked on the project. `AdministratorAccess` and the root user can do all of
these. API keys act with their owner's access: to limit what a workload can call, give it a key
for a [bot](/iam/bots) with only the access it needs. Reading the Model Catalog needs no
permission. See [IAM](/iam).

## Data

Inputs and embeddings are never stored, logged or recorded. The `user` field is accepted and
ignored.

## Trails

Inference's events have the event source `inference.ezghcloud.com`.

- **Refused embeddings requests are always kept,** so you can see why calls failed: every
  `CreateEmbeddings` refused after it's authorized, with its `errorCode`. That covers invalid
  requests (`400`), access denied (`403`), an unknown or retired model (`404`, `410`), a body over
  1 MiB (`413`), rate, concurrency and monthly limits (`429`; the monthly limit is recorded as
  `quota_exceeded`), a client that disconnected (`499 client_closed`), and failures on our side
  (`5xx`). They're recorded with `readOnly: false`.
- **Successful embeddings requests produce no event.**
- `ListModels`, `GetModel` and `GetLimits` follow the [rules for reads](/trails#what-trails-records).

Events name the model and never contain inputs, embeddings or the `user` field.

## Billing

Embeddings are metered by input token per project, and appear in [Billing](/billing). The price
at launch is $0.

Source: https://docs.ezghcloud.com/inference/index.mdx
