API для работы с приложениями
Jay Copilot предоставляет API для работы с приложениями. API позволяет встроить приложения Jay Copilot в ваши продукты и сервисы.
Доступ к API
Чтобы получить доступ к API, отправьте запрос на адрес genai@just-ai.com. Укажите ваше имя, телефон и название компании.
В разделе Личный кабинет появится блок API-ключи. Нажмите кнопку Сгенерировать, скопируйте API-ключ и сохраните в надежном месте.
API-ключ необходимо указывать в HTTP-заголовке X-Api-Key
при каждом запросе к API.
Базовый URL
https://app.jaycopilot.com/api/appsAdapter
Ресурсы API
API предоставляет методы для работы со следующими ресурсами:
- Шаблон приложения — спецификация приложения, которая содержит описание параметров, настраиваемых пользователем, а также атрибуты для отображения приложения в каталоге.
- Приложение — отдельный экземпляр приложения с параметрами, указанными пользователем.
- Диалог — сессия общения пользователя с приложением. С одним приложением может быть несколько диалогов одновременно.
- Файл — файл, который может быть приложен к запросу на создание приложения (например, «Аналитик данных», «Создание документа по образцу»), сообщению пользователя или ответу приложения.
Список методов
Шаблоны приложений
Метод | Назначение | Документация |
---|---|---|
GET /templates | Получение списка шаблонов приложений. | Подробнее |
Приложения
Метод | Назначение | Документация |
---|---|---|
POST /apps | Создание приложения. | Подробнее |
GET /apps | Получение списка приложений. | Подробнее |
GET /apps/favorite | Получение списка избранных приложений. | Подробнее |
GET /apps/{appId} | Получение приложения. | Подробнее |
PUT /apps/{appId} | Обновление приложения. | Подробнее |
Диалоги
Метод | Назначение | Документация |
---|---|---|
POST /conversations | Создание диалога. | Подробнее |
GET /conversations | Получение списка диалогов. | Подробнее |
GET /conversations/{conversationId} | Получение диалога. | Подробнее |
DELETE /conversations/{conversationId} | Удаление диалога. | Подробнее |
PUT /conversations/{conversationId} | Обновление диалога. | Подробнее |
PUT /conversations/{conversationId}/app | Обновление приложения, с которым ведется диалог. | Подробнее |
POST /conversations/{conversationId}/clear | Удаление истории сообщений. | Подробнее |
GET /conversations/{conversationId}/history | Получение истории сообщений. | Подробнее |
POST /conversations/{conversationId}/message | Отправка сообщения. | Подробнее |
Файлы
Метод | Назначение | Документация |
---|---|---|
POST /files | Загрузка файла. | Подробнее |
GET /files/{fileId} | Получение файла. | Подробнее |
DELETE /files/{fileId} | Удаление файла. | Подробнее |
Типовой порядок действий
-
Получите список шаблонов.
Этот шаг можно пропустить, если описание параметров приложения известно заранее.
Пример запроса:
curl \
--header "X-Api-Key: <API_KEY>" \
https://app.jaycopilot.com/api/appsAdapter/templatesВ ответ приходит список шаблонов, которые можно использовать для создания приложений.
Пример ответа
{
"templates": {
"transcriber": {
"categories": [
"assistants",
""
],
"info": {
"icon": "🎤",
"title": "Расшифровка встреч",
"description": "Проанализирует видео- или аудиозапись встречи и сообщит ее итоги",
"prompt": "Отправьте мне ссылку на видео или аудио длительностью до 2 часов. Вы также можете прикрепить файл размером до 200 Мб."
},
"params": {
"language": {
"label": "Язык",
"hint": "Язык, на котором нужно подготовить анализ записи",
"value": "Russian",
"required": true,
"type": "select",
"options": [
"Russian",
"English",
"Spanish",
"Italian",
"German",
"Portuguese",
"French"
]
},
"answerByFile": {
"label": "Отправлять содержание встреч файлом",
"hint": "Приложение будет отправлять в чат содержание встреч в TXT",
"value": false,
"type": "switch"
},
"autoContextReset": {
"type": "switch",
"value": true,
"label": "Умное управление контекстом",
"hint": "Спустя 5 минут неактивности система будет проверять, относится ли новое сообщение к последнему ответу приложения, и автоматически сбрасывать контекст, если нет. Это поможет более эффективно использовать окно контекста и тратить меньше токенов",
"required": false
}
},
"autoCreate": false,
"clientFeatures": {
"contextManagementEnabled": false
}
},
...
}
} -
Создайте приложение.
В запросе на создание приложения передайте имя шаблона и параметры с флагом
required: true
из ответа методаGET /templates
.Дополнительно можно передать необязательные параметры, а также имя приложения.
Пример запроса:
curl \
--header "X-Api-Key: <API_KEY>" \
--header "Content-Type: application/json"
--data '{
"template": "transcriber",
"params": {
"language": "Russian"
}
}' \
https://app.jaycopilot.com/api/appsAdapter/appsВ ответе нужно проверить поле
status
. Если статус приложения отличен отFAILED
, далее можно создавать диалоги с этим приложением.Пример ответа
{
"id": "d225146a-ebd6-42a9-930d-66bea4cc0a1c",
"name": "Расшифровка встреч",
"description": null,
"status": "BUILDING",
"favorite": false,
"template": "transcriber",
"params": {
"language": "Russian",
"answerByFile": false,
"autoContextReset": true
},
"meta": {},
"createdAt": 1729853636788,
"updatedAt": 1729853636788
} -
Создайте диалог с приложением.
Укажите идентификатор приложения, созданного на предыдущем шаге.
Пример запроса:
curl \
--header "X-API-KEY: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"app": {
"id": "d225146a-ebd6-42a9-930d-66bea4cc0a1c"
}
}' \
https://app.jaycopilot.com/api/appsAdapter/conversationsПример ответа
{
"id": "86f83e9d-c6ba-4ccb-a2fd-456d7cddeddd",
"name": "Расшифровка встреч - 10:55 25.10",
"app": {
"id": "d225146a-ebd6-42a9-930d-66bea4cc0a1c",
"name": "Расшифровка встреч",
"description": null,
"status": "READY",
"favorite": false,
"template": "transcriber",
"params": {
"language": "Russian",
"answerByFile": false,
"autoContextReset": true
},
"meta": {},
"createdAt": 1729853636788,
"updatedAt": 1729853636788
},
"status": "READY",
"hasUnreadChanges": true,
"actions": [],
"createdAt": 1729853713222,
"updatedAt": 1729853713241,
"meta": {
"usage": []
},
"history": [
{
"id": "788cd3f6-2052-49a7-bbc6-1d877b76d9a9",
"conversationId": "86f83e9d-c6ba-4ccb-a2fd-456d7cddeddd",
"status": "success",
"type": "system",
"content": [
{
"type": "text",
"text": "Отправьте мне ссылку на видео или аудио длительностью до 2 часов. Вы также можете прикрепить файл размером до 200 Мб."
}
],
"entities": [],
"meta": {
"tokensSpent": 0
},
"createdAt": 1729853713242,
"updatedAt": 1729853713242,
"tokensUsage": {
"usedContext": -1,
"isMessagesTruncated": false
}
}
],
"externalInstances": {}
}В ответе нужно проверить поле
status
. Если статус диалога —READY
, в диалог можно отправлять сообщения. -
Отправьте сообщение в диалог.
Пример запроса:
curl \
--header "X-Api-Key: <API_KEY>" \
--form 'file=@audio.mp3' \
https://app.jaycopilot.com/api/appsAdapter/conversations/86f83e9d-c6ba-4ccb-a2fd-456d7cddeddd/messageОтвет может быть в виде текста или файла, а также содержать ссылки.
Пример ответа
{
"id": "8f3a56d6-5e85-44f5-ba39-547ad974a046",
"conversationId": "86f83e9d-c6ba-4ccb-a2fd-456d7cddeddd",
"status": "success",
" type": "response",
"content": [
{
"type": "text",
"text": "**Тема встречи и краткое резюме:** \nОбсуждение нового инновационного продукта J-Copilot, который использует нейросетевые модели искусственного интеллекта для повышения эффективности бизнеса…"
}
],
"entities": null,
"meta": {
"tokensSpent": 15473
},
"createdAt": 1729854725331,
"updatedAt": 1729854725331,
"tokensUsage": {
"usedContext": 2,
"isMessagesTruncated": false
}
}
Асинхронные запросы
Метод создания диалога POST /conversations
и метод отправки сообщения POST /conversations/{conversationId}/message
могут работать в асинхронном режиме.
Для этого необходимо указать в запросе query-параметр async=true
.
В асинхронном режиме:
-
Метод создания диалога возвращает параметры диалога, даже если он еще находится в статусе
BUILDING
. -
Метод отправки сообщения возвращает технический ответ:
{
"meta": {
"isProcessing": true
}
}
В обоих случаях отслеживать переход диалога в статус READY
можно с помощью метода получения диалога GET /conversations/{conversationId}
. Этот же метод вернет ответ приложения, когда он будет сформирован.