Документация по Api Gateway Последнее изменение: 12 September 2024 07:42:06
Каждый запрос имеет формат https://coreapi.ru/api/v{v}/apps/{appId}/{method}, где:
{v} - версия запроса. На данный момент актуальна версия 0. Если передать неверную версию, то при выполнении api-запроса вернётся ошибка:
{
"error": {
"status": 404,
"code": "version_not_found",
"message": "Version not found"
}
}
{appId} - идентификатор приложения. Идентификатор необходимо получить в личном кабинете при создании приложения. Полученный идентификатор приложения используется для доступа к методам сервиса CoreAPI. К созданному приложению в личном кабинете привязываются модели с API-ключами. Для корректной работы приложения на API-ключах должен быть положительный баланс. Зарегистрированные пользователи, созданные диалоги и сообщения - это всё привязывается к приложению посредством выполнения запросов к API-методам. Если идентификатор приложения будет утерян и им воспользуются третьи лица, то они получат доступ к пользователям приложения, моделям и API-ключам моделей и смогут использовать их в своих целях. Поэтому необходимо идентификатор приложения передавать безопасным способом, чтоб его не было видно в передаваемом адресе api-запроса.
При передаче несуществующего идентификатора приложения в адресной строке api-запроса сервис вернёт ошибку:
{
"error": {
"status": 404,
"code": "application_not_found",
"message": "Application not found"
}
}
{method} - api-метод запроса. С каждым методом по отдельности можно ознакомиться из списка ниже:
Аккаунт
Электронный адрес
Получение статуса подтверждения
Модели
Получение конфигурации по идентификатору
Конфигурирование по идентификатору
Диалоги
Опциональное обновление по идентификатору
Полное обновление по идентификатору
Сообщения
Регистрация Последнее изменение: 20 October 2024 18:46:21
Регистрация пользователя в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/users
с передачей данных в теле JSON-запроса:
{
"email": "string",
"password": "string"
}
email* - электронный адрес пользователя;
password* - пароль пользователя, содержащий произвольный набор и формат символов.
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"user_id": "integer"
}
}
user_id - идентификатор зарегистрированного пользователя.
Пример успешного ответа:
{
"result": {
"user_id": 1
}
}
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидный электронный адрес - возникает при переданном пустом или некорректном параметре email.
Например, если выполнить запросы:{ "email": "", "password": "qwerty123456" }
{ "email": "example.ru", "password": "qwerty123456" }
То возникнет ошибка о передаче невалидного электронного адреса:
{ "error": { "status": 400, "code": "invalid_email", "message": "Invalid parameter: email" } }
-
Невалидный пароль - возникает при переданном пустом параметре password.
Например, если выполнить запрос:{ "email": "example@mail.ru", "password": "" }
То возникнет ошибка о передаче невалидного пароля:
{ "error": { "status": 400, "code": "invalid_password", "message": "Invalid parameter: password" } }
-
-
Ответы со статусным кодом 404:
-
Ответ со статусным кодом 409:
-
Электронный адрес занят - возникает при переданном зарегистрированном ранее параметре email.
Например, если выполнить запрос:{ "email": "busy@mail.ru", "password": "qwerty123456" }
То возникнет ошибка о занятом электронном адресе:
{ "error": { "status": 409, "code": "email_busy", "message": "Email busy" } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Авторизация Последнее изменение: 20 October 2024 18:46:21
Авторизация пользователя в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/users/login
с передачей данных в теле JSON-запроса:
{
"email": "string",
"password": "string"
}
email* - электронный адрес пользователя;
password* - пароль пользователя, содержащий произвольный набор и формат символов.
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"user_id": "integer",
"access_token": "string",
"expires_in": "integer"
}
}
user_id - идентификатор авторизованного пользователя;
access_token - токен доступа пользователя, доступный ровно сутки с момента авторизации пользователя;
expires_in - unix-метка истечения токена доступа, которая хранит в себе значение даты и времени + 1 день с момента создания токена доступа (авторизации пользователя).
Пример успешного ответа:
{
"result": {
"user_id": 1,
"access_token": "f8fc26b22e357f138b8e5d54a53da7e9055e0a6e3cd8a6d4b909ecd09510db54",
"expires_in": 1698002225
}
}
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидный электронный адрес - возникает при переданном пустом или некорректном параметре email.
Например, если выполнить запросы:{ "email": "", "password": "qwerty123456" }
{ "email": "example.ru", "password": "qwerty123456" }
То возникнет ошибка о передаче невалидного электронного адреса:
{ "error": { "status": 400, "code": "invalid_email", "message": "Invalid parameter: email" } }
-
Невалидный пароль - возникает при переданном пустом параметре password.
Например, если выполнить запрос:{ "email": "example@mail.ru", "password": "" }
То возникнет ошибка о передаче невалидного пароля:
{ "error": { "status": 400, "code": "invalid_password", "message": "Invalid parameter: password" } }
-
-
Ответ со статусным кодом 401:
-
Неверный электронный адрес или пароль - возникает при неверно переданном параметре email или password. Возникает при неверно переданных параметрах как вместе, так и по отдельности.
Например, если выполнить запросы:{ "email": "incorrect@mail.ru", "password": "correct_password" }
{ "email": "correct@mail.ru", "password": "incorrect_password" }
{ "email": "incorrect@mail.ru", "password": "incorrect_password" }
То возникнет ошибка о передаче неверного электронного адреса или пароля:
{ "error": { "status": 401, "code": "invalid_email_or_password", "message": "Incorrect email or password" } }
-
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Выход Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Выход пользователя из приложения происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/users/logout
При успешном выполнении запроса возвращается пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 401:
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение статуса подтверждения Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Получение статуса подтверждения электронного адреса пользователя в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/users/email-verification/check
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"status": "boolean"
}
}
status - статус подтверждения электронного адреса пользователя.
Примеры успешных ответов:
-
Электронный адрес подтверждён:
{ "result": { "status": true } }
-
Электронный адрес не подтверждён:
{ "result": { "status": false } }
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 401:
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Отправка кода подтверждения Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Отправка кода подтверждения на электронный адрес пользователя в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/users/email-verification/resend
При успешном выполнении запроса возвращается пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 401:
-
Ответы со статусным кодом 404:
-
Ответ со статусным кодом 429:
-
Превышен лимит запросов - возникает при повторном выполнении запроса, если время задержки (поле delay) предыдущего запроса ещё не истекло. При отправке кода подтверждения на электронный адрес путём выполнения запроса, этот код становится действительным в течении 120 секунд с момента его отправки. Если действие кода ещё не истекло, то при повторном выполнении запроса на отправку кода подтверждения возникнет ошибка rate_limit_exceeded, где в поле delay придёт остаточное время действия предыдущего кода подтверждения в секундах. Тело ответа, которое возвращается при такой ошибке:
{ "error": { "status": 429, "code": "rate_limit_exceeded", "message": "Request limit exceeded", "delay": 120 } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Подтверждение Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Подтверждение электронного адреса пользователя в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/users/email-verification/verify
с передачей данных в теле JSON-запроса:
{
"email": "string",
"code": "integer"
}
email* - электронный адрес пользователя;
code* - код подтверждения из электронного письма пользователя.
При успешном выполнении запроса возвращается пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидный электронный адрес - возникает при переданном пустом, некорректном или фейковом параметре email.
Например, если выполнить запросы:{ "email": "", "code": 1111 }
{ "email": "example.ru", "code": 1111 }
{ "email": "example@fake.email", "code": 1111 }
То возникнет ошибка о передаче невалидного электронного адреса:
{ "error": { "status": 400, "code": "invalid_email", "message": "Invalid parameter: email" } }
-
Некорректный код подтверждения - возникает при переданном пустом или некорректном параметре code.
Например, если выполнить запросы:{ "email": "example@mail.ru", "code": "" }
{ "email": "example@mail.ru", "code": 1234 }
То возникнет ошибка о передаче некорректного кода подтверждения:
{ "error": { "status": 400, "code": "invalid_code", "message": "Incorrect verification code" } }
-
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к электронной почте запрещён - возникает при переданном чужом параметре email.
Например, если выполнить запрос:{ "email": "other@mail.ru", "code": 1111 }
То возникнет ошибка о передаче чужого электронного адреса:
{ "error": { "status": 403, "code": "email_access_denied", "message": "Email access denied" } }
-
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение списка Последнее изменение: 20 October 2024 18:46:21
Получение списка моделей в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/models
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": [
{
"id": "integer",
"name": "string",
"provider": "string",
"version": "string",
"available": "boolean",
"status_code": "string"
}
]
}
id - идентификатор модели;
name - кодовое название модели;
provider - поставщик;
version - версия модели;
available - доступность модели (true или false);
status_code - код состояния модели, который может иметь следующие значения:
- active - модель активна и готова обрабатывать запросы (при available = true);
- insufficient_quota - недостаточно средств на модели для выполнения операций (при available = false);
- error - модель недоступна из-за ошибки или неисправности (при available = false).
Пример успешного ответа:
{
"result": [
{
"id": 1,
"name": "gpt-3.5-turbo",
"provider": "openai",
"version": "3.5",
"available": true,
"status_code": "active"
},
{
"id": 2,
"name": "gpt-3.5-turbo-16k",
"provider": "openai",
"version": "3.5",
"available": false,
"status_code": "insufficient_quota"
},
{
"id": 3,
"name": "gpt-4",
"provider": "openai",
"version": "4",
"available": true,
"status_code": "active"
},
{
"id": 4,
"name": "gpt-4-32k",
"provider": "openai",
"version": "4",
"available": false,
"status_code": "error"
}
]
}
При отсутствии привязанных моделей в приложении во время выполнения запроса вернётся пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение по идентификатору Последнее изменение: 20 October 2024 18:46:21
Получение модели по идентификатору в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/models/{modelId},
где:
{modelId} - идентификатор модели, по которому производится получение данных.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/models/1
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"id": "integer",
"name": "string",
"provider": "string",
"version": "string",
"available": "boolean",
"status_code": "string"
}
}
id - идентификатор модели;
name - кодовое название модели;
provider - поставщик;
version - версия модели;
available - доступность модели (true или false);
status_code - код состояния модели, который может иметь следующие значения:
- active - модель активна и готова обрабатывать запросы (при available = true);
- insufficient_quota - недостаточно средств на модели для выполнения операций (при available = false);
- error - модель недоступна из-за ошибки или неисправности (при available = false).
Пример успешных ответов:
-
gpt-3.5 context 4k:
{ "result": { "id": 1, "name": "gpt-3.5-turbo", "provider": "openai", "version": "3.5", "available": true, "status_code": "active" } }
-
gpt-3.5 context 16k:
{ "result": { "id": 2, "name": "gpt-3.5-turbo-16k", "provider": "openai", "version": "3.5", "available": false, "status_code": "insufficient_quota" } }
-
gpt-4 context 8k:
{ "result": { "id": 3, "name": "gpt-4", "provider": "openai", "version": "4", "available": true, "status_code": "active" } }
-
gpt-4 context 32k:
{ "result": { "id": 4, "name": "gpt-4-32k", "provider": "openai", "version": "4", "available": false, "status_code": "error" } }
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 404:
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/models/111 с переданным несуществующим идентификатором модели 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение конфигурации по id Последнее изменение: 20 October 2024 18:46:21
Получение конфигурации модели по идентификатору в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/models/{modelId}/config,
где:
{modelId} - идентификатор модели, по которому производится получение конфигурации.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/models/1/config
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"instructions": "string",
"temperature": "number",
"top_probability": "number",
"presence_penalty": "number",
"frequency_penalty": "number",
"number": "integer",
"stop_words": "string",
"max_tokens": "integer",
"response_type": "string"
}
}
instructions - инструкции, устанавливающие задачу или поведение для модели;
temperature - степень случайности и креативности ответа модели;
top_probability - фильтрация ответа модели на основе кумулятивной вероятности;
presence_penalty - штраф за присутствие упомянутых токенов в ответе;
frequency_penalty - штраф за частоту использования токенов в ответе;
number - количество вариантов ответа модели, разделённых символом |||;
stop_words - список последовательностей, разделённых символом |||, после которых модель прекратит генерировать ответ;
max_tokens - максимальное количество токенов в ответе модели;
response_type - тип ответа, например, text или json.
В CoreAPI | В openai |
---|---|
instructions | messages[].role = system; messages[].content |
temperature | temperature |
top_probability | top_p |
presence_penalty | presence_penalty |
frequency_penalty | frequency_penalty |
number | n |
stop_words | stop |
max_tokens | max_tokens |
response_type | response_format |
Пример успешного ответа:
{
"result": {
"instructions": "Ты ИИ модель, которая должна представляться ассистентом Лаймой",
"temperature": 0.3,
"top_probability": 0.4,
"presence_penalty": 0.1,
"frequency_penalty": 0.1,
"number": 3,
"stop_words": "js|||javascript",
"max_tokens": 4096,
"response_type": "text"
}
}
При отсутствии конфигурации модели в приложении во время выполнения запроса вернётся пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 404:
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/models/111/config с переданным несуществующим идентификатором модели 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Конфигурирование по идентификатору Последнее изменение: 20 October 2024 18:46:21
Конфигурирование модели по идентификатору в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/models/{modelId}/config,
где:
{modelId} - идентификатор модели, по которому производится установка конфигурации.
Для установки конфигурации необходимо передать данные в теле JSON-запроса:
{
"instructions": "string",
"temperature": "number",
"top_probability": "number",
"presence_penalty": "number",
"frequency_penalty": "number",
"number": "integer",
"stop_words": "string",
"max_tokens": "integer",
"response_type": "string"
}
instructions - инструкции, устанавливающие задачу или поведение для модели;
temperature - степень случайности и креативности ответа модели;
top_probability - фильтрация ответа модели на основе кумулятивной вероятности;
presence_penalty - штраф за присутствие упомянутых токенов в ответе;
frequency_penalty - штраф за частоту использования токенов в ответе;
number - количество вариантов ответа модели, разделённых символом |||;
stop_words - список последовательностей, разделённых символом |||, после которых модель прекратит генерировать ответ;
max_tokens - максимальное количество токенов в ответе модели;
response_type - тип ответа, например, text или json.
В CoreAPI | В openai |
---|---|
instructions | messages[].role = system; messages[].content |
temperature | temperature |
top_probability | top_p |
presence_penalty | presence_penalty |
frequency_penalty | frequency_penalty |
number | n |
stop_words | stop |
max_tokens | max_tokens |
response_type | response_format |
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/models/1/config
{
"instructions": "Ты ИИ модель, которая должна представляться ассистентом Лаймой",
"temperature": 0.3,
"top_probability": 0.4,
"presence_penalty": 0.1,
"frequency_penalty": 0.1,
"number": 3,
"stop_words": "js|||javascript",
"max_tokens": 4096,
"response_type": "text"
}
При успешном выполнении запроса возвращается пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 400:
-
Невалидный параметр - возникает при переданном невалидном параметре. Вместо * подставляется имя переданного параметра.
{ "error": { "status": 400, "code": "invalid_parameter", "message": "Invalid parameter: *" } }
-
-
Ответы со статусным кодом 404:
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/models/111/config с переданным несуществующим идентификатором модели 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение списка Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Получение списка диалогов в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/dialogues?offset={integer}&limit={integer},
где:
offset - значение смещения списка и если оно не будет задано, то по умолчанию смещение списка будет идти с 0;
limit - значение количества возвращаемых записей в списке и если оно не будет задано, то по умолчанию будет возвращаться 1 000 записей.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/dialogues?offset=10&limit=5
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": [
{
"id": "integer",
"name": "string",
"model_id": "integer | array",
"members": [
{
"id": "integer",
"name": "string",
"role": "string",
"available": "boolean",
"status_code": "string"
}
]
}
]
}
id - идентификатор диалога;
name - название диалога;
model_id - идентификатор(ы) модели(ей), участвующий(их) в диалоге в качестве получателя(ей);
members - участники диалога, где в списке присутствует текущий пользователь и один или несколько добавленных моделей в качестве получателей;
id - идентификатор участника;
name - логин пользователя или кодовое название модели;
role - роль участника, которая может иметь следующие значения:
- user - пользователь;
- model - модель.
available - доступность участника (true или false);
status_code - код состояния участника, который может иметь следующие значения:
- active - участник активен и готов отвечать на сообщения (при available = true);
- context_limit_exceeded - превышен предельный лимит контекста по модели для выполнения операций (при available = false и role = model);
- error - участник недоступен из-за ошибки или неисправности (при available = false).
Пример успешного ответа:
{
"result": [
{
"id": 1,
"name": "Диалог 1",
"model_id": [1, 3],
"members": [
{
"id": 1,
"name": "ivan@mail.ru",
"role": "user",
"available": true,
"status_code": "active"
},
{
"id": 1,
"name": "gpt-3.5-turbo",
"role": "model",
"available": true,
"status_code": "active"
},
{
"id": 3,
"name": "gpt-4",
"role": "model",
"available": false,
"status_code": "context_limit_exceeded"
}
]
},
{
"id": 2,
"name": "Диалог 2",
"model_id": 4,
"members": [
{
"id": 1,
"name": "ivan@mail.ru",
"role": "user",
"available": true,
"status_code": "active"
},
{
"id": 4,
"name": "gpt-4-32k",
"role": "model",
"available": true,
"status_code": "active"
}
]
}
]
}
При отсутствии созданных пользовательских диалогов в приложении во время выполнения запроса вернётся пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Некорректное значение смещения - возникает при передаче отрицательного значения параметра offset.
Например, если выполнить запрос:
https://coreapi.ru/api/v0/apps/{appId}/dialogues?offset=-1То возникнет ошибка о передаче некорректного значения смещения:
{ "error": { "status": 400, "code": "invalid_offset", "message": "Incorrect parameter: offset" } }
-
Некорректное значение лимита - возникает при передаче нулевого, отрицательного или буквенного значения параметра limit.
Например, если выполнить запросы:
https://coreapi.ru/api/v0/apps/{appId}/dialogues?limit=0
https://coreapi.ru/api/v0/apps/{appId}/dialogues?limit=-5
https://coreapi.ru/api/v0/apps/{appId}/dialogues?limit=abcТо возникнет ошибка о передаче некорректного значения лимита:
{ "error": { "status": 400, "code": "invalid_limit", "message": "Incorrect parameter: limit" } }
-
-
Ответ со статусным кодом 401:
-
Ответы со статусным кодом 404:
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Создание Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Создание диалога в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/dialogues
с передачей данных в теле JSON-запроса:
{
"name": "string",
"model_id": "integer | array"
}
name* - название диалога;
model_id* - идентификатор(ы) модели(ей), который(е) будет(ут) принимать участие в диалоге в качестве получателя(ей).
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"id": "integer",
"name": "string",
"model_id": "integer | array"
}
}
id - идентификатор созданного диалога;
name - название диалога;
model_id - идентификатор(ы) модели(ей).
Пример успешного ответа:
{
"result": {
"id": 1,
"name": "Диалог 1",
"model_id": [1, 3]
}
}
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидное значение имени - возникает при переданном пустом параметре name.
Например, если выполнить запрос:{ "name": "", "model_id": 1 }
То возникнет ошибка о передаче невалидного значения имени:
{ "error": { "status": 400, "code": "invalid_name", "message": "Invalid parameter: name" } }
-
Невалидный идентификатор модели - возникает при переданном пустом или буквенном значении параметра model_id.
Например, если выполнить запросы:{ "name": "Диалог", "model_id": "" }
{ "name": "Диалог", "model_id": [] }
{ "name": "Диалог", "model_id": [1, ""] }
{ "name": "Диалог", "model_id": "abc" }
{ "name": "Диалог", "model_id": [1, "abc"] }
То возникнет ошибка о передаче невалидного идентификатора модели:
{ "error": { "status": 400, "code": "invalid_model_id", "message": "Invalid parameter: model_id" } }
-
-
Ответ со статусным кодом 401:
-
Ответы со статусным кодом 404:
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в теле JSON-запроса.
Например, если выполнить запросы:{ "name": "Диалог", "model_id": 111 }
{ "name": "Диалог", "model_id": [111] }
{ "name": "Диалог", "model_id": [1, 111] }
То возникнет ошибка о передаче несуществующего идентификатора модели:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ответ со статусным кодом 409:
-
Идентификаторы моделей одной версии - возникает при одновременной передаче моделей одной версии. Например, если при создании диалога попытаться добавить модели с идентификаторами 1 (gpt-3.5-turbo с контекстом 4k и версией 3.5) и 2 (gpt-3.5-turbo-16k с контекстом 16k и версией 3.5):
{ "name": "Диалог", "model_id": [1, 2] }
То возникнет ошибка о передаче идентификаторов моделей одной версии:
{ "error": { "status": 409, "code": "model_version_conflict", "message": "Model version conflict" } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение по идентификатору Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Получение диалога по идентификатору в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId},
где:
{dialogueId} - идентификатор диалога, по которому производится получение данных.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/dialogues/1
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"id": "integer",
"name": "string",
"model_id": "integer | array",
"members": [
{
"id": "integer",
"name": "string",
"role": "string",
"available": "boolean",
"status_code": "string"
}
]
}
}
id - идентификатор диалога;
name - название диалога;
model_id - идентификатор(ы) модели(ей), участвующий(их) в диалоге в качестве получателя(ей);
members - участники диалога, где в списке присутствует текущий пользователь и один или несколько добавленных моделей в качестве получателей;
id - идентификатор участника;
name - логин пользователя или кодовое название модели;
role - роль участника, которая может иметь следующие значения:
- user - пользователь;
- model - модель.
available - доступность участника (true или false);
status_code - код состояния участника, который может иметь следующие значения:
- active - участник активен и готов отвечать на сообщения (при available = true);
- context_limit_exceeded - превышен предельный лимит контекста по модели для выполнения операций (при available = false и role = model);
- error - участник недоступен из-за ошибки или неисправности (при available = false).
Пример успешного ответа:
{
"result": {
"id": 1,
"name": "Диалог",
"model_id": [1, 3],
"members": [
{
"id": 1,
"name": "ivan@mail.ru",
"role": "user",
"available": true,
"status_code": "active"
},
{
"id": 1,
"name": "gpt-3.5-turbo",
"role": "model",
"available": true,
"status_code": "active"
},
{
"id": 3,
"name": "gpt-4",
"role": "model",
"available": false,
"status_code": "context_limit_exceeded"
}
]
}
}
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Опциональное обновление по id Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Опциональное обновление диалога по идентификатору в приложении происходит путём выполнения запроса:
PATCH
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId},
где:
{dialogueId} - идентификатор диалога, который требуется обновить.
Для обновления диалога необходимо передать данные в теле JSON-запроса:
{
"name": "string",
"model_id": "integer | array"
}
name - название диалога;
model_id - идентификатор(ы) модели(ей).
Параметры для обновления можно передавать как по отдельности, так и вместе.
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"name": "string",
"model_id": "integer | array"
}
}
name - название диалога;
model_id - идентификатор(ы) модели(ей).
В JSON-ответе возвращаются только те поля, которые были переданы в запросе и которые были удачно обновлены.
Примеры успешных ответов:
{
"result": {
"name": "Диалог 1"
}
}
{
"result": {
"model_id": 2
}
}
{
"result": {
"name": "Диалог 1",
"model_id": 1
}
}
Если при выполнении запроса не были переданы данные или переданные значения ключей в JSON-запросе уже соответствуют тем, что находятся на сервисе, то ответ вернётся пустым со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидное значение имени - возникает при переданном пустом параметре name.
Например, если выполнить запрос:{ "name": "" }
То возникнет ошибка о передаче невалидного значения имени:
{ "error": { "status": 400, "code": "invalid_name", "message": "Invalid parameter: name" } }
-
Невалидный идентификатор модели - возникает при переданном пустом или буквенном значении параметра model_id.
Например, если выполнить запросы:{ "model_id": "" }
{ "model_id": [] }
{ "model_id": [2, ""] }
{ "model_id": "abc" }
{ "model_id": [2, "abc"] }
То возникнет ошибка о передаче невалидного идентификатора модели:
{ "error": { "status": 400, "code": "invalid_model_id", "message": "Invalid parameter: model_id" } }
-
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в теле JSON-запроса.
Например, если выполнить запросы:{ "model_id": 111 }
{ "model_id": [111] }
{ "model_id": [1, 111] }
То возникнет ошибка о передаче несуществующего идентификатора модели:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ответ со статусным кодом 409:
-
Идентификаторы моделей одной версии - возникает при одновременной передаче моделей одной версии. Например, если в диалоге присутствует модель с идентификатором 1 (gpt-3.5-turbo с контекстом 4k и версией 3.5) и если попытаться добавить модель с идентификатором 2 (gpt-3.5-turbo-16k с контекстом 16k и версией 3.5):
{ "model_id": [1, 2] }
То возникнет ошибка о передаче идентификаторов моделей одной версии:
{ "error": { "status": 409, "code": "model_version_conflict", "message": "Model version conflict" } }
-
-
Ответ со статусным кодом 422:
-
Отсутствуют старые идентификаторы моделей - возникает при непередаче старых идентификаторов моделей. Например, если в диалоге присутствуют модели с идентификаторами 1 (gpt-3.5-turbo с контекстом 4k и версией 3.5) и 3 (gpt-4 с контекстом 8k и версией 4) и если попытаться модель с идентификатором 1 заменить на модель с идентификатором 2 (gpt-3.5-turbo-16k с контекстом 16k и версией 3.5), и при этом не передать при обновлении модель с идентификатором 3, которую необходимо оставить:
{ "model_id": 2 }
То возникнет ошибка о непередаче старых идентификаторов моделей:
{ "error": { "status": 422, "code": "model_error", "message": "Model error" } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Полное обновление по id Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Полное обновление диалога по идентификатору в приложении происходит путём выполнения запроса:
PUT
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId},
где:
{dialogueId} - идентификатор диалога, который требуется обновить.
Для обновления диалога необходимо передать данные в теле JSON-запроса:
{
"name": "string",
"model_id": "integer | array"
}
name* - название диалога;
model_id* - идентификатор(ы) модели(ей).
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": {
"name": "string",
"model_id": "integer | array"
}
}
name - название диалога;
model_id - идентификатор(ы) модели(ей).
В JSON-ответе возвращаются только те поля, которые были удачно обновлены.
Примеры успешных ответов:
{
"result": {
"name": "Диалог 1"
}
}
{
"result": {
"model_id": 2
}
}
{
"result": {
"name": "Диалог 1",
"model_id": 1
}
}
Если при выполнении запроса переданные значения ключей в JSON-запросе уже соответствуют тем, что находятся на сервисе, то ответ вернётся пустым со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидное значение имени - возникает при переданном пустом параметре name.
Например, если выполнить запрос:{ "name": "", "model_id": 2 }
То возникнет ошибка о передаче невалидного значения имени:
{ "error": { "status": 400, "code": "invalid_name", "message": "Invalid parameter: name" } }
-
Невалидный идентификатор модели - возникает при переданном пустом или буквенном значении параметра model_id.
Например, если выполнить запросы:{ "name": "Диалог", "model_id": "" }
{ "name": "Диалог", "model_id": [] }
{ "name": "Диалог", "model_id": [2, ""] }
{ "name": "Диалог", "model_id": "abc" }
{ "name": "Диалог", "model_id": [2, "abc"] }
То возникнет ошибка о передаче невалидного идентификатора модели:
{ "error": { "status": 400, "code": "invalid_model_id", "message": "Invalid parameter: model_id" } }
-
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в теле JSON-запроса.
Например, если выполнить запросы:{ "name": "Диалог", "model_id": 111 }
{ "name": "Диалог", "model_id": [111] }
{ "name": "Диалог", "model_id": [1, 111] }
То возникнет ошибка о передаче несуществующего идентификатора модели:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ответ со статусным кодом 409:
-
Идентификаторы моделей одной версии - возникает при одновременной передаче моделей одной версии. Например, если в диалоге присутствует модель с идентификатором 1 (gpt-3.5-turbo с контекстом 4k и версией 3.5) и если попытаться добавить модель с идентификатором 2 (gpt-3.5-turbo-16k с контекстом 16k и версией 3.5):
{ "name": "Диалог", "model_id": [1, 2] }
То возникнет ошибка о передаче идентификаторов моделей одной версии:
{ "error": { "status": 409, "code": "model_version_conflict", "message": "Model version conflict" } }
-
-
Ответ со статусным кодом 422:
-
Отсутствуют старые идентификаторы моделей - возникает при непередаче старых идентификаторов моделей. Например, если в диалоге присутствуют модели с идентификаторами 1 (gpt-3.5-turbo с контекстом 4k и версией 3.5) и 3 (gpt-4 с контекстом 8k и версией 4) и если попытаться модель с идентификатором 1 заменить на модель с идентификатором 2 (gpt-3.5-turbo-16k с контекстом 16k и версией 3.5), и при этом не передать при обновлении модель с идентификатором 3, которую необходимо оставить:
{ "name": "Диалог", "model_id": 2 }
То возникнет ошибка о непередаче старых идентификаторов моделей:
{ "error": { "status": 422, "code": "model_error", "message": "Model error" } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Удаление по идентификатору Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Удаление диалога по идентификатору в приложении происходит путём выполнения запроса:
DELETE
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId},
где:
{dialogueId} - идентификатор диалога, который требуется удалить.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/dialogues/1
При успешном выполнении запроса возвращается пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111 с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Получение списка Последнее изменение: 20 October 2024 18:46:21
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Получение списка сообщений в приложении происходит путём выполнения запроса:
GET
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId}/messages?offset={integer}&limit={integer},
где:
{dialogueId} - идентификатор диалога, в котором производится получение сообщений;
offset - значение смещения списка и если оно не будет задано, то по умолчанию смещение списка будет идти с 0;
limit - значение количества возвращаемых записей в списке и если оно не будет задано, то по умолчанию будет возвращаться 1 000 записей.
Пример запроса: https://coreapi.ru/api/v0/apps/{appId}/dialogues/1/messages?offset=10&limit=5
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": [
{
"id": "integer",
"text": "string",
"attachments": [
{
"type": "string",
"content": "string"
}
],
"author": {
"id": "integer",
"name": "string",
"role": "string"
},
"parent_id": "integer",
"children_id": "array"
}
]
}
id - идентификатор сообщения;
text - текст сообщения;
attachments - вложения;
type - тип вложения (например, image_url);
content - данные для вложения.
author - автор (отправитель) сообщения;
id - идентификатор автора;
name - логин пользователя или кодовое название модели;
role - роль участника, которая может иметь следующие значения:
- user - пользователь;
- model - модель.
parent_id - идентификатор родительского сообщения;
Для сообщения с role = user:
- Если сообщение было отправлено одной только модели из диалога, то у этого отправленного сообщения родительский идентификатор будет равен ранее отправленному сообщению от этой модели (если оно имеется в диалоге);
- Если сообщение было отправлено сразу нескольким моделям из диалога, то у этого отправленного сообщения родительский идентификатор будет равен нулю.
Для сообщения с role = model:
- Родительский идентификатор всегда будет равен отправленному предыдущему сообщению с role = user.
children_id - идентификатор(ы) дочернего(их) сообщения(й).
Для сообщения с role = user:
- Если сообщение было отправлено одной только модели из диалога, то у этого отправленного сообщения дочерний идентификатор будет равен новому ответному сообщению от модели;
- Если сообщение было отправлено сразу нескольким моделям из диалога, то у этого отправленного сообщения дочерний идентификатор будет равен нескольким новым ответным сообщениям от моделей.
Для сообщения с role = model:
- Дочерний идентификатор всегда будет равен новому ответному сообщению с role = user, у которого родительский идентификатор равен идентификатору текущего сообщения с role = model (если оно имеется в диалоге).
Пример успешного ответа:
{
"result": [
{
"id": 1,
"text": "Привет",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 0,
"children_id": [2]
},
{
"id": 2,
"text": "Здравствуйте",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 1,
"children_id": [5]
},
{
"id": 3,
"text": "Привет. Что на картинке?",
"attachments": [
{
"type": "image_url",
"content": "https://example.ru/example.jpeg"
}
],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 0,
"children_id": [4]
},
{
"id": 4,
"text": "Приветствую Вас! На картинке изображён пример",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 3,
"children_id": [7]
},
{
"id": 5,
"text": "Как дела?",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 2,
"children_id": [6]
},
{
"id": 6,
"text": "У меня хорошо, а у Вас?",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 5,
"children_id": []
},
{
"id": 7,
"text": "Как дела?",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 4,
"children_id": [8]
},
{
"id": 8,
"text": "У меня всё отлично, спасибо. А у Вас как?",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 7,
"children_id": []
},
{
"id": 9,
"text": "У меня тоже всё хорошо!",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 0,
"children_id": [10, 11]
},
{
"id": 10,
"text": "Супер!",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 9,
"children_id": []
},
{
"id": 11,
"text": "Здорово",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 9,
"children_id": []
},
{
"id": 12,
"text": "Спасибо за общение",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 0,
"children_id": [13, 14]
},
{
"id": 13,
"text": "И Вам спасибо",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 12,
"children_id": [15]
},
{
"id": 14,
"text": "Вам того же",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 12,
"children_id": [17]
},
{
"id": 15,
"text": "Пока",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 13,
"children_id": [16]
},
{
"id": 16,
"text": "До свидания!",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 15,
"children_id": []
},
{
"id": 17,
"text": "Пока",
"attachments": [],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 14,
"children_id": [18]
},
{
"id": 18,
"text": "Счастливо Вам!",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 17,
"children_id": []
}
]
}
При отсутствии сообщений в диалоге во время выполнения запроса вернётся пустое тело ответа со статусным кодом 204:
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Некорректное значение смещения - возникает при передаче отрицательного значения параметра offset.
Например, если выполнить запрос:
https://coreapi.ru/api/v0/apps/{appId}/dialogues/1/messages?offset=-1То возникнет ошибка о передаче некорректного значения смещения:
{ "error": { "status": 400, "code": "invalid_offset", "message": "Incorrect parameter: offset" } }
-
Некорректное значение лимита - возникает при передаче нулевого, отрицательного или буквенного значения параметра limit.
Например, если выполнить запросы:
https://coreapi.ru/api/v0/apps/{appId}/dialogues/1/messages?limit=0
https://coreapi.ru/api/v0/apps/{appId}/dialogues/1/messages?limit=-5
https://coreapi.ru/api/v0/apps/{appId}/dialogues/1/messages?limit=abcТо возникнет ошибка о передаче некорректного значения лимита:
{ "error": { "status": 400, "code": "invalid_limit", "message": "Incorrect parameter: limit" } }
-
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111/messages с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111/messages с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Создание Последнее изменение: 10 January 2025 05:40:07
Данный запрос выполняется с передачей токена доступа в заголовке:
Authorization: Bearer {token}
Создание сообщения в приложении происходит путём выполнения запроса:
POST
https://coreapi.ru/api/v0/apps/{appId}/dialogues/{dialogueId}/messages,
где:
{dialogueId} - идентификатор диалога, в котором производится создание сообщения.
Для создания сообщения необходимо передать данные в теле JSON-запроса:
{
"text": "string",
"image_url": "string | array",
"model_id": "integer | array"
}
text - текст сообщения;
image_url - ссылка(и) на изображение(я);
model_id* - идентификатор(ы) модели(ей).
При успешном выполнении запроса возвращается тело JSON-ответа со статусным кодом 200:
{
"result": [
{
"id": "integer",
"text": "string",
"attachments": [
{
"type": "string",
"content": "string"
}
],
"author": {
"id": "integer",
"name": "string",
"role": "string"
},
"parent_id": "integer",
"children_id": "array",
"usage_tokens": {
"prompt": "integer",
"completion": "integer",
"total": "integer"
}
}
]
}
id - идентификатор сообщения;
text - текст сообщения;
attachments - вложения;
type - тип вложения (например, image_url);
content - данные для вложения.
author - автор (отправитель) сообщения;
id - идентификатор автора;
name - логин пользователя или кодовое название модели;
role - роль участника, которая может иметь следующие значения:
- user - пользователь;
- model - модель.
parent_id - идентификатор родительского сообщения;
Для сообщения с role = user:
- Если сообщение было отправлено одной только модели из диалога, то у этого отправленного сообщения родительский идентификатор будет равен ранее отправленному сообщению от этой модели (если оно имеется в диалоге);
- Если сообщение было отправлено сразу нескольким моделям из диалога, то у этого отправленного сообщения родительский идентификатор будет равен нулю.
Для сообщения с role = model:
- Родительский идентификатор всегда будет равен отправленному предыдущему сообщению с role = user.
children_id - идентификатор(ы) дочернего(их) сообщения(й).
Для сообщения с role = user:
- Если сообщение было отправлено одной только модели из диалога, то у этого отправленного сообщения дочерний идентификатор будет равен новому ответному сообщению от модели;
- Если сообщение было отправлено сразу нескольким моделям из диалога, то у этого отправленного сообщения дочерний идентификатор будет равен нескольким новым ответным сообщениям от моделей.
Для сообщения с role = model:
- Дочерний идентификатор всегда будет пустым.
usage_tokens - статистика использования токенов моделью (только для role = model);
prompt - число токенов, затраченное на входные данные;
completion - число токенов, затраченное на выходные данные;
total - общее число токенов, затраченное на входные и выходные данные.
Пример успешного ответа:
{
"result": [
{
"id": 1,
"text": "Привет. Что на картинке?",
"attachments": [
{
"type": "image_url",
"content": "https://example.ru/example.jpeg"
}
],
"author": {
"id": 2,
"role": "user",
"name": "ivan@mail.ru"
},
"parent_id": 0,
"children_id": [2, 3]
},
{
"id": 2,
"text": "Здравствуйте!",
"attachments": [],
"author": {
"id": 1,
"role": "model",
"name": "gpt-3.5-turbo"
},
"parent_id": 1,
"children_id": [],
"usage_tokens": {
"prompt": 3,
"completion": 14,
"total": 17
}
},
{
"id": 3,
"text": "Приветствую Вас! На картинке изображён пример",
"attachments": [],
"author": {
"id": 3,
"role": "model",
"name": "gpt-4"
},
"parent_id": 1,
"children_id": [],
"usage_tokens": {
"prompt": 3,
"completion": 18,
"total": 21
}
}
]
}
При неуспешном выполнении запроса могут возвращаться разные ответы с разными статусными кодами.
Рассмотрим неуспешные ответы на примерах:
-
Ответы со статусным кодом 400:
-
Невалидный текст сообщения - возникает при переданном пустом параметре text.
Например, если выполнить запрос:{ "text": "", "model_id": 1 }
То возникнет ошибка о передаче невалидного текста сообщения:
{ "error": { "status": 400, "code": "invalid_text", "message": "Invalid parameter: text" } }
-
Невалидный идентификатор модели - возникает при переданном пустом или буквенном значении параметра model_id.
Например, если выполнить запросы:{ "text": "Текстовое сообщение", "model_id": "" }
{ "text": "Текстовое сообщение", "model_id": [] }
{ "text": "Текстовое сообщение", "model_id": [1, ""] }
{ "text": "Текстовое сообщение", "model_id": "abc" }
{ "text": "Текстовое сообщение", "model_id": [1, "abc"] }
То возникнет ошибка о передаче невалидного идентификатора модели:
{ "error": { "status": 400, "code": "invalid_model_id", "message": "Invalid parameter: model_id" } }
-
-
Ответ со статусным кодом 401:
-
Ответ со статусным кодом 403:
-
Доступ к диалогу запрещён - возникает при переданном чужом идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111/messages с переданным чужим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 403, "code": "dialogue_access_denied", "message": "Dialogue access denied" } }
-
-
Ответы со статусным кодом 404:
-
Диалог не найден - возникает при переданном несуществующем идентификаторе диалога в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/{appId}/dialogues/111/messages с переданным несуществующим идентификатором диалога 111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "dialogue_not_found", "message": "Dialogue not found" } }
-
Модель не найдена - возникает при переданном несуществующем идентификаторе модели в теле JSON-запроса.
Например, если выполнить запросы:{ "text": "Текстовое сообщение", "model_id": 111 }
{ "text": "Текстовое сообщение", "model_id": [111] }
{ "text": "Текстовое сообщение", "model_id": [1, 111] }
То возникнет ошибка о передаче несуществующего идентификатора модели:
{ "error": { "status": 404, "code": "model_not_found", "message": "Model not found" } }
-
Ответы со статусным кодом 429:
-
Превышен лимит запросов - возникает при повторном выполнении запроса, если время задержки (поле delay) предыдущего запроса ещё не истекло. При многократной отправке сообщений модели путём выполнения запросов, модель может заблокироваться на 10 секунд (для моделей поставщика openai блокировка составит 60 секунд) с момента превышения лимита. Если блокировка не прошла, то при повторном выполнении запроса вернётся ошибка rate_limit_exceeded, где в поле delay придёт остаточное время блокировки в секундах. Тело ответа, которое возвращается при такой ошибке:
{ "error": { "status": 429, "code": "rate_limit_exceeded", "message": "Request limit exceeded", "delay": 10 } }
-
Превышен предельный лимит контекста - превышен предельный лимит контекста по модели для выполнения операций. Если в диалоге очень большой объём текста и модель технически не способна обрабатывать больше положенного объёма, то вернётся ошибка:
{ "error": { "status": 429, "code": "context_limit_exceeded", "message": "Context limit exceeded" } }
-
Превышена квота - недостаточно средств на модели для выполнения операций. Если на всех API-ключах модели, которые к ней прикреплены, отсутствует положительный баланс, то модель будет не способна обрабатывать запросы и сервис вернёт ошибку:
{ "error": { "status": 429, "code": "insufficient_quota", "message": "Insufficient quota" } }
-
-
Ошибка сервера со статусным кодом 500:
-
Ответ со статусным кодом 503:
Общие ошибки Последнее изменение: 20 October 2024 18:46:21
-
401 Unauthorized
-
Неверный токен доступа - возникает при переданном неверном токене доступа в заголовке Authorization. Тело ответа, которое возвращается при такой ошибке:
{ "error": { "status": 401, "code": "invalid_access_token", "message": "Invalid access token" } }
-
-
404 Not Found
-
Версия не найдена - возникает при переданном неверном параметре v в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v1/apps/123-456-789-000/method с переданной неверной версией v1 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "version_not_found", "message": "Version not found" } }
-
Приложение не найдено - возникает при переданном неверном идентификаторе приложения в адресе запроса. Например, при обращении по адресу https://coreapi.ru/api/v0/apps/123-456-789-111/method с переданным неверным идентификатором приложения 123-456-789-111 вернётся ответ с ошибкой:
{ "error": { "status": 404, "code": "application_not_found", "message": "Application not found" } }
-
-
500 Internal Server Error
-
Внутренняя ошибка сервера - возникает при необработанных ошибках на сервере. Тело ответа, которое возвращается при таких ошибках:
{ "error": { "status": 500, "code": "server_error", "message": "Internal server error" } }
-
-
503 Service Unavailable
-
Приложение недоступно - возникает при недоступном приложении. Например, при отключенном приложении в личном кабинете вернётся ошибка:
{ "error": { "status": 503, "code": "application_unavailable", "message": "Application unavailable" } }
-