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

# Models

> The models Moss Inference serves, who pays for each call, and how to list them.

Moss Inference serves the `moss` model and vendor models from OpenAI, Anthropic, Google and OpenRouter, each under one name. [Responses](https://docs.moss.dev/docs/api-reference/v1/inference/responses.md) and [Chat Completions](https://docs.moss.dev/docs/api-reference/v1/inference/chat-completions.md) take the same names in `model`, and the search of your indexes works the same for every model.

## Who pays

| You send | The call runs on | Who pays |
| - | - | - |
| `moss`, or no `model` | The Moss model, on Moss GPUs | Moss bills your organization, at the [`moss` prices](https://docs.moss.dev/docs/pricing#inference). |
| A name from the [list](#model-list), without `X-Moss-Provider-Key` | The vendor, on the Moss key | Moss bills your organization. Vendor models on the Moss key are turned on per organization: [contact us](https://docs.moss.dev/docs/start/support) to turn them on. |
| Any vendor model, with `X-Moss-Provider-Key` | The vendor, on your key | Your vendor account. |

Retrievals are billed the same for every model, as the [pricing page](https://docs.moss.dev/docs/pricing.md#inference) says.

## Model list

`GET /v1/models` lists the models served now, so check it for the current list. Today it holds:

| Vendor | `model` |
| - | - |
| Moss | `moss` |
| OpenAI | `openai/gpt-6-luna`, `openai/gpt-6.1-terra`, `openai/gpt-6.1-sol`, `openai/gpt-6-astra` |
| Anthropic | `anthropic/claude-haiku-5.5`, `anthropic/claude-sonnet-5.5`, `anthropic/claude-opus-5.5`, `anthropic/claude-fable-5.1` |
| Google | `google/gemini-3.8-flash`, `google/gemini-3.5-flash-lite`, `google/gemini-4-argon` |
| OpenRouter | `openrouter/z-ai/glm-5.3`, `openrouter/moonshotai/kimi-k3`, `openrouter/deepseek/deepseek-v4.1-flash`, `openrouter/qwen/qwen3.8-flash` |

On the Moss key, a vendor model takes prompts of up to 128,000 tokens, or 64,000 on `anthropic/claude-haiku-5.5`. The other [limits](https://docs.moss.dev/docs/api-reference/v1/inference/chat-completions.md#limits) are those of any vendor model.

The Moss key sends a vendor only the fields that model takes there, and a request that sets any other field returns `400` with `code: "unsupported_parameter"` before the vendor is called. A null, `false` or empty value counts as not set, and so does a penalty or `top_logprobs` of 0 and a `temperature` or `top_p` of 1.

| Vendor | Fields refused on the Moss key |
| - | - |
| OpenAI | `seed`, `logit_bias`, `frequency_penalty`, `presence_penalty`, `stop`, `logprobs`, `top_logprobs` |
| Anthropic | `seed`, `logit_bias`, `frequency_penalty`, `presence_penalty`, `logprobs`, `top_logprobs`, `temperature`, `top_p` |
| Google | `seed`, `logit_bias`, `frequency_penalty`, `presence_penalty`, `logprobs`, `top_logprobs` |
| OpenRouter | none |

Google models on the Moss key also refuse message parts other than text and base64 data URL images, and OpenRouter models refuse `file` parts.

## Your own key

Send your OpenAI, Anthropic, Google or OpenRouter key in `X-Moss-Provider-Key`, the `apiKey` or `api_key` option of the [SDKs](https://docs.moss.dev/docs/reference/sdk.md), and the call runs on your key:

* A name from the [list](#model-list) reaches the same model on your key, whether or not your organization has it turned on.
* A vendor's own model name works only with your key. `gpt-*`, `chatgpt-*` and `o1` to `o9` names go to OpenAI, `claude-*` to Anthropic, `gemini-*` to Google, and `openrouter/<OpenRouter model id>` to OpenRouter, for example `gpt-6-luna` or `claude-haiku-5-5`. Without a key such a name returns `400` with `code: "missing_provider_key"`.
* The request reaches the vendor as you sent it, so it uses that vendor's own fields.
* A wrong or refused key gets the vendor's own error and status. Moss never retries the call on the Moss key.
* The key goes only to that vendor and is never stored.

## The reply

The `model` of a reply is the name you sent, for every model, and `moss` when you sent none.

## List models

`GET /v1/models` answers in OpenAI's [list shape](https://platform.openai.com/docs/api-reference/models/list), so `client.models.list()` in OpenAI's clients reads it. It lists every model served now. Whether your organization has a vendor model turned on shows when you call it.

```bash curl theme={null}
curl https://inference.moss.dev/v1/models \
  -H "Authorization: Bearer $MOSS_PROJECT_ID:$MOSS_PROJECT_KEY"
```

```python Python theme={null}
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://inference.moss.dev/v1",
    api_key=f"{os.environ['MOSS_PROJECT_ID']}:{os.environ['MOSS_PROJECT_KEY']}",
)
for model in client.models.list():
    print(model.id)
```

```json 200 - OK theme={null}
{
  "object": "list",
  "data": [
    {"id": "moss", "object": "model", "created": 0, "owned_by": "moss"},
    {"id": "openai/gpt-6-luna", "object": "model", "created": 0, "owned_by": "moss"},
    {"id": "anthropic/claude-haiku-5.5", "object": "model", "created": 0, "owned_by": "moss"}
  ]
}
```

## Errors

These come from the choice of model. The rest are on [Chat Completions](https://docs.moss.dev/docs/api-reference/v1/inference/chat-completions.md#errors).

| Status | `type` | `code` | Cause |
| - | - | - | - |
| `400` | `invalid_request_error` | `model_not_enabled` | A name from the list, without your key, that is not turned on for your organization or not served now. Send `moss` or your own key, or [contact us](https://docs.moss.dev/docs/start/support) to turn vendor models on. |
| `400` | `invalid_request_error` | `missing_provider_key` | A vendor's own model name without `X-Moss-Provider-Key`. |
| `400` | `invalid_request_error` | `model_not_found` | A name Moss does not serve. |
| `400` | `invalid_request_error` | `unsupported_parameter` | A field or message part the model does not take on the Moss key. |
| `503` | `server_error` | `billing_unavailable` | Moss cannot meter a Moss-key call right now. Retry after `Retry-After`, which is 5 seconds, or send `moss`. |
| `503` | `capacity` | `server_overloaded` | The vendor rate limited the Moss key. Retry after `Retry-After`. |
| `503` | `capacity` | `vendor_unavailable` | The vendor refused or could not serve the Moss key, such as on Anthropic's `529` overload. Retry after `Retry-After`. |
| vendor `4xx` | `model_error` | `upstream_error` | With your own key, the vendor's own error and status. |


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