Перейти к основному содержимому

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}Удаление файла.Подробнее

Типовой порядок действий

  1. Получите список шаблонов.

    Этот шаг можно пропустить, если описание параметров приложения известно заранее.

    Пример запроса:

    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
    }
    },
    ...
    }
    }
  2. Создайте приложение.

    В запросе на создание приложения передайте имя шаблона и параметры с флагом 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
    }
  3. Создайте диалог с приложением.

    Укажите идентификатор приложения, созданного на предыдущем шаге.

    Пример запроса:

    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, в диалог можно отправлять сообщения.

  4. Отправьте сообщение в диалог.

    Пример запроса:

    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}. Этот же метод вернет ответ приложения, когда он будет сформирован.