Classify

# Models

A model reads the message and returns the verdict. Every request names one by name in `model`. `spam-standard` is the only model today. Every response names the model that answered.

JSON

```json
{
  "content": "Hello, could you send me a quote?",
  "model": "spam-standard"
}
```

## Available models

| Model | Current release | Runs at |
| --- | --- | --- |
| `spam-standard` | 10 October 2026 | EU (Ireland) |

### spam-standard

Botpoison's own spam model, trained on contact form submissions. It reads every field you send. Each field is read by what it holds, such as a name, an email address or a message, rather than by the name your form gives it. Tracking fields and link parameters such as `utm_source` are ignored. It never receives the visitor's IP address.

It was trained on submissions in many languages, most of them in English. Check its scores on your own traffic before you rely on them for other languages.

## Releases

Botpoison updates a model with new releases. A new release replaces the current one under the same name, so your requests and the `model` in each response stay the same. The table above shows the release each model answers with today.

Every release is fitted to the same score table, so a rule on `label` or on a score such as 0.7 carries over to a newer release at about the same rate. See [Labels and scores](https://botpoison.com/documentation/classify/labels-and-scores/).

## When a model is unavailable

If the model fails or is too slow to answer, the request returns a 503 quickly. The call is not counted toward your plan.

JSON

```json
{
  "ok": false,
  "message": "Classification is temporarily unavailable"
}
```

Retry later with backoff. To try this path, use the unavailable marker in [test mode](https://botpoison.com/documentation/classify/test-mode/).

A `model` that is not in the table above returns a 400 that lists the valid models. See the [REST API reference](https://botpoison.com/documentation/classify/rest-api/).
