Создание ассистента
Запрос
POST
https://gptunnel.ru/v1/assistant/create Создаёт ассистента с теми же настройками, что доступны в веб-интерфейсе. Владельцем становится пользователь, которому принадлежит API-ключ.
Обязательны только title и modelId — остальные поля имеют значения по умолчанию.
Headers
| Параметр | Тип | Описание |
|---|---|---|
Authorization* | string | API ключ |
Request Body
| Параметр | Тип | Описание |
|---|---|---|
title* | string | Название, до 16 символов — как в форме на сайте |
modelId* | string | ID текстовой модели из /v1/models. Модель должна быть разрешена для этого ключа |
mention | string | Код ассистента — он же assistantCode в чате и адрес страницы. 3–16 символов: буквы, цифры, дефис, подчёркивание. Если не передан — сгенерируется автоматически |
subtitle | string | Подзаголовок, до 32 символов |
description | string | Описание для витрины, до 4096 символов |
picture | string | Ссылка на аватар, до 255 символов |
instruction | string | Системная инструкция (промпт) |
temperature | number | Температура генерации, 0–1. По умолчанию 0.5 |
sqlStore | boolean | Доступ ассистента к собственной пустой SQLite-базе (экспериментально, только модели с поддержкой функций). По умолчанию false |
access | object | Приватность и витрина — см. таблицу ниже |
database | object | null | Подключение RAG базы знаний — см. таблицу ниже |
mcp | Array<object> | MCP-сервер — см. таблицу ниже. Не более одного элемента |
apiFunctions | Array<object> | Вызовы сторонних API — см. таблицу ниже. Не более 25 |
access
| Параметр | Тип | Описание |
|---|---|---|
access.isPrivate | boolean | Приватный — не показывается в каталоге. По умолчанию false |
access.isFree | boolean | Бесплатная установка. По умолчанию true |
access.installPrice | number | Цена установки в рублях, если isFree = false. По умолчанию 0 |
access.hideSettings | boolean | Скрыть настройки и инструкцию от других пользователей. По умолчанию false |
access.orgId | string | null | Сделать ассистента корпоративным. Допустима только организация самого API-ключа, у личного ключа значение игнорируется. По умолчанию null — личный ассистент |
database
| Параметр | Тип | Описание |
|---|---|---|
database.id* | string | ID базы знаний из /v1/database/list. База должна принадлежать владельцу ключа |
database.requestFrequency | string | Когда обращаться к базе: everytime — каждый запрос, auto — по решению модели, first — только первое сообщение |
database.chunks | number | Сколько фрагментов подкладывать в контекст |
mcp[]
| Параметр | Тип | Описание |
|---|---|---|
mcp[].server* | string | URL MCP-сервера, до 1024 символов |
mcp[].clientId | string | null | OAuth client id |
mcp[].clientSecret | string | null | OAuth client secret |
mcp[].accessToken | string | null | Готовый access token, если авторизация уже пройдена |
mcp[].scope | string | null | OAuth scope |
mcp[].toolDisabled | string | null | Отключённые инструменты сервера, через запятую |
apiFunctions[]
| Параметр | Тип | Описание |
|---|---|---|
apiFunctions[].name* | string | Имя функции, которое видит модель |
apiFunctions[].type* | string | HTTP-метод: get или post |
apiFunctions[].endpoint* | string | URL, который будет вызван |
apiFunctions[].description | string | Описание для модели — когда вызывать функцию |
apiFunctions[].headers | Array<object> | Заголовки запроса: { key, value } |
apiFunctions[].parameters | Array<object> | Параметры: { name, type (string | number | boolean), description, required, value } |
Пример запроса
{ "title": "Налоговый помощник", "mention": "tax-helper", "subtitle": "Консультации по НДС и УСН", "description": "Отвечает на вопросы по налогам ИП и ООО.", "instruction": "Ты налоговый консультант. Отвечай кратко, со ссылкой на статью НК РФ.", "modelId": "gpt-4o", "temperature": 0.3, "sqlStore": false, "access": { "isPrivate": false, "isFree": true, "installPrice": 0, "hideSettings": true, "orgId": null }, "database": { "id": "68c9a1f0e4b0a2d3c4f5e6a7", "requestFrequency": "auto", "chunks": 3 }, "mcp": [ { "server": "https://mcp.example.com/sse", "clientId": "client-123", "clientSecret": "secret-456", "scope": "read", "toolDisabled": "delete_file" } ], "apiFunctions": [ { "type": "get", "name": "get_rate", "description": "Возвращает ставку НДС по категории товара", "endpoint": "https://api.example.com/vat", "headers": [{ "key": "X-Api-Key", "value": "..." }], "parameters": [ { "name": "category", "type": "string", "description": "Категория товара", "required": true } ] } ]}Минимальный запрос
{ "title": "Помощник", "modelId": "gpt-4o-mini"}Пример ответа
Секреты MCP (clientSecret, accessToken) в ответе не возвращаются.
{ "object": "assistant", "id": "68c9b2d1e4b0a2d3c4f5e6b8", "createDate": "2026-09-17T08:12:44.120Z", "updateDate": "2026-09-17T08:12:44.120Z", "mention": "tax-helper", "title": "Налоговый помощник", "subtitle": "Консультации по НДС и УСН", "description": "Отвечает на вопросы по налогам ИП и ООО.", "picture": "", "modelId": "gpt-4o", "temperature": "0.3", "capabilities": 0, "sqlStore": false, "access": { "isPrivate": false, "isFree": true, "installPrice": "0", "hideSettings": true, "orgId": null }, "database": { "id": "68c9a1f0e4b0a2d3c4f5e6a7", "requestFrequency": "auto", "chunks": 3 }, "mcp": [ { "server": "https://mcp.example.com/sse", "clientId": "client-123", "scope": "read", "toolDisabled": "delete_file" } ], "instruction": "Ты налоговый консультант...", "apiFunctions": []}{ "error": { "message": "title: String must contain at most 32 character(s)", "type": "invalid_request_error", "param": null, "code": null }}{ "error": { "message": "Mention 'tax-helper' is already taken", "type": "invalid_request_error", "param": null, "code": "mention_taken" }}{ "error": { "message": "Model 'gpt-4.7' not found or is not a text model", "type": "invalid_model_error", "param": null, "code": "model_not_found" }}