# Assistants and models

Page: https://docs.sonecentral.com/en/asistanlar-ve-modeller
Markdown: https://docs.sonecentral.com/en/asistanlar-ve-modeller.md

> What to put in model, how to list assistants and what "default" means.

In OpenAI's format, `model` names a language model. Here it is **your assistant's ID** and selects which assistant replies. Its Sonecentral settings determine the language model, instructions and tools; requests cannot change them.

## What the assistant uses

The API assistant is the same assistant that replies on WhatsApp, Instagram, Messenger and TikTok. It uses your workspace configuration in the same way:

- Services, with prices, durations, images and links.
- Products and stock, with prices, images and links.
- Catalog items and packages.
- Team, departments and business hours.
- Business name, address and phone number.
- Your connected store's shipping rules and campaigns.
- Price lists and any configured discount authority.
- Knowledge Base documents, documents marked as shareable, and business data extracted from your documents.
- Order and appointment requests and appointment availability, if the key enables requests.
- Notes for the team and conversation handoff.

TikTok is an officially supported messaging channel. Its native message formats differ from the API and Meta channels: [Channels](https://docs.sonecentral.com/en/kanallar.md).

Product and service cards, buttons and files arrive through this API as structured data: [Rich messages](https://docs.sonecentral.com/en/zengin-mesajlar.md).

Because API visitors are not authenticated, the assistant does not read or change their personal records (previous orders, existing appointments, customer profile, remembered information or connected panel account), and does not confirm appointments itself. See [Orders, appointments and privacy](https://docs.sonecentral.com/en/siparis-randevu-gizlilik.md).

## List assistants

```bash
curl https://pb.sonecentral.com/api/v1/models \
  -H "Authorization: Bearer $SONE_API_KEY"
```

```json
{
  "object": "list",
  "data": [
    {
      "id": "k3m9x2p7q1w8e4r",
      "object": "model",
      "created": 1760889600,
      "owned_by": "sonecentral",
      "name": "Store assistant"
    }
  ]
}
```

The list contains only **published assistants the key can call**. Drafts and assistants with incomplete setup are excluded. Results are sorted by assistant name.

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Assistant ID. Use this as model. |
| `object` | "model" | Always model. |
| `created` | integer | Assistant creation time in Unix seconds. |
| `owned_by` | "sonecentral" | Always sonecentral. |
| `name` | string | Assistant name in the dashboard. |

`GET /models/{id}` returns the same object for one assistant.

```bash
curl https://pb.sonecentral.com/api/v1/models/k3m9x2p7q1w8e4r \
  -H "Authorization: Bearer $SONE_API_KEY"
```

In OpenAI SDKs, use `client.models.list()` and `client.models.retrieve(id)`.

Everything before the final `/` in `model` is ignored. Tools that prefix model names with a provider can therefore use `sonecentral/k3m9x2p7q1w8e4r` to select the same assistant.

## `"default"`

When `model` is omitted or set to `"default"`, selection follows this order:

1. The key's only allowed assistant, if there is exactly one.
2. Otherwise, the workspace's default text assistant, if the key allows it.
3. Otherwise, the first allowed assistant in alphabetical name order.

If your key allows several assistants and the choice matters, send an explicit ID.

## Conversation and assistant

A conversation is bound to the assistant that started it. Continuing it with another `model` returns `400 conversation_model_mismatch`. Use the same assistant or start a new conversation.

## Errors

| Status | `code` | When |
| --- | --- | --- |
| `404` | `model_not_found` | No published assistant with this ID is available to the key. Also returned for drafts and incomplete setup. |
| `400` | `conversation_model_mismatch` | The conversation belongs to another assistant. |
