# Models

layahost serves two checkpoints of Laya, an English one and a multilingual one, plus `laya-auto`, which picks between them for each request.

Laya is an open-source typed-decision model by Convai Innovations, released under the Apache-2.0 licence. layahost hosts it as an unofficial service and is not affiliated with Convai Innovations or TypeSafe AI.

## Available models

| Model | Description |
| --- | --- |
| `laya-auto` | The default for `/v1/decide`. Sends each request to `laya-english` or `laya-multilingual` based on the language of the text. |
| `laya-english` | The English checkpoint: Laya typed-decisions, ModernBERT-large fine-tuned on typed-decision workflows. For English text. |
| `laya-multilingual` | The multilingual checkpoint, built on mmBERT-base. For text in other languages or mixed languages, and the faster of the two. |
| `jev-latest` | An alias of `laya-auto`, so Jev clients and the SDKs' default model work unchanged. Any other `jev-*` name is accepted the same way. |

Both checkpoints read up to 1,024 tokens (roughly 700 words of English) of the text; anything longer is cut off, so put what matters first.

Changed on 26 September 2026:

laya-english

moved from the base Laya checkpoint to the typed-decisions checkpoint, which scored higher on our English evaluations and reads twice as much text. Answers have the same shape, but probabilities shifted a little; if your code compares probabilities with fixed thresholds, re-check them. The Perspective-compatible scores were recalibrated for the new checkpoint.

All models cost the same per decision (see [pricing](https://layahost.com/docs/pricing)).

## How laya-auto routes

`laya-auto` detects the language of the text. Only text detected as English goes to `laya-english`. Everything else, including text whose language is unclear, goes to `laya-multilingual`, which copes better with mixed and non-English input.

The response tells you which checkpoint answered: `model` is `laya-english` or `laya-multilingual`, never `laya-auto`. On `/v1/systemone`, `meta.checkpoint` says the same.

If you already know the language, pass `lang` (for example `"lang": "de"`) to skip detection. `en` selects the English checkpoint, any other code the multilingual one. `lang` has no effect when you name a checkpoint directly.

## Choosing a model

- Start with `laya-auto`. It suits most traffic, including a mix of languages.
- Pin `laya-english` if all your text is English and you want every request answered by the same checkpoint.
- Pin `laya-multilingual` for non-English text, or when speed matters more than the last bit of accuracy on English.

The two checkpoints are different models and return different probabilities for the same input. If you compare probabilities with thresholds, tune them per checkpoint, or pin one model.

The `language` template does not use Laya: it runs a dedicated language detector and reports `model` as `lingua`. See [Language detection](https://layahost.com/docs/templates#language).

## Fine-tuned models

Besides the built-in checkpoints, `GET /v1/models` can list fine-tuned models, marked `"custom": true`:

- **Private models** (`"private": true`) are trained on one customer's examples and only that account can call them. Other accounts get the same 422 as for a model that doesn't exist, and never see them in the list.
- **Public fine-tuned models** (`"private": false`) are trained by us for one task and open to every account.

Use a fine-tuned model like any other: pass its name as `model` on `/v1/decide`, `/v1/systemone`, the batch endpoints, or a question step of a [flow](https://layahost.com/docs/flows). It costs the same per decision. A fine-tuned model is best at the question it was trained for; other questions work, but check them on a [test set](https://layahost.com/docs/test-sets) first.

To get a private model, put a few hundred labelled examples in a test set in the console and use *Request a custom model* on the Models page. We train on part of your examples and report accuracy on the rest, next to what the built-in models score.

## List models

`GET /v1/models` returns the models you can use, in the Jev format. The SDKs expose it as `client.models.list()`.

GET /v1/models

```bash
curl https://layahost.com/v1/models \
  -H "Authorization: Bearer $LAYAHOST_API_KEY"
```

Response · 200

```json
{
  "models": [
    {
      "name": "laya-auto",
      "description": "Routes each request to the best Laya checkpoint for its language.",
      "release_date": "2026-09-18"
    },
    {
      "name": "laya-english",
      "description": "Laya English checkpoint (ModernBERT-large, fine-tuned on typed decisions), reads up to 1,024 tokens. Best accuracy on English text.",
      "release_date": "2026-09-26"
    },
    {
      "name": "laya-multilingual",
      "description": "Laya multilingual checkpoint (mmBERT-base), 100+ languages, fastest.",
      "release_date": "2026-09-18"
    },
    {
      "name": "jev-latest",
      "description": "Alias of laya-auto for drop-in Jev compatibility.",
      "release_date": "2026-09-18"
    }
  ]
}
```

Listing models is free and counts towards your [rate limit](https://layahost.com/docs/rate-limits).
