Обзор API
Основы работы с REST API платформы Coren для on-premise установки.
Base URL
api.internal:8080
Формат
JSON
Протокол
HTTPS (mTLS)
Версия
v1 (stable)
Базовые URL
Все API запросы направляются на внутренние адреса в зависимости от окружения. Внешний доступ к API запрещён политикой безопасности.
| Окружение | Base URL | Описание |
|---|---|---|
| Production | https://api.internal:8080/v1 | Продуктивная среда |
| Staging | https://api-staging.internal:8080/v1 | Предпродуктивное тестирование |
| Development | https://api-dev.internal:8080/v1 | Разработка и отладка |
Формат запросов
Все запросы должны содержать обязательные заголовки и использовать JSON для тела запроса.
Обязательные заголовки
| Заголовок | Значение | Обязательный |
|---|---|---|
| Authorization | Bearer <api_key> | Да |
| Content-Type | application/json | Да |
| X-Request-ID | Уникальный идентификатор запроса | Рекомендуется |
| X-Tenant-ID | Идентификатор тенанта | Мультитенант |
Пример запроса
Terminal
1curl https://api.internal:8080/v1/chat/completions \2 -H "Authorization: Bearer sk_live_your_api_key_here" \3 -H "Content-Type: application/json" \4 -H "X-Request-ID: req_$(uuidgen)" \5 -H "X-Tenant-ID: bank_retail" \6 -d '{7 "model": "llama-3-70b-chat",8 "messages": [9 {10 "role": "system",11 "content": "Вы - помощник банка. Отвечайте на русском языке."12 },13 {14 "role": "user",15 "content": "Какие документы нужны для открытия счёта?"16 }17 ],18 "temperature": 0.7,19 "max_tokens": 500,20 "stream": false21 }'
Формат ответов
Все ответы возвращаются в формате JSON с единообразной структурой.
Успешный ответ
Ответ (200 OK)
1{2 "id": "chatcmpl-abc123def456",3 "object": "chat.completion",4 "created": 1706745600,5 "model": "llama-3-70b-chat",6 "choices": [7 {8 "index": 0,9 "message": {10 "role": "assistant",11 "content": "Для открытия счёта физическому лицу потребуются следующие документы:\n\n1. Паспорт гражданина РФ\n2. ИНН (при наличии)\n3. СНИЛС\n\nДля юридических лиц дополнительно..."12 },13 "finish_reason": "stop"14 }15 ],16 "usage": {17 "prompt_tokens": 45,18 "completion_tokens": 150,19 "total_tokens": 19520 },21 "system_fingerprint": "fp_llama3_70b_v1"22}
Заголовки ответа
| Заголовок | Описание |
|---|---|
| X-Request-ID | Идентификатор запроса для отладки |
| X-RateLimit-Limit | Максимум запросов в минуту |
| X-RateLimit-Remaining | Оставшиеся запросы в текущем окне |
| X-Processing-Time-Ms | Время обработки запроса (мс) |
Обработка ошибок
При возникновении ошибки API возвращает структурированный ответ с детальной информацией.
Формат ошибки
Ответ с ошибкой
{"error": {"code": "invalid_api_key","message": "Указанный API ключ недействителен или отозван.","type": "authentication_error","param": null,"request_id": "req_abc123def456"}}
HTTP коды статуса
| Код | Статус | Описание |
|---|---|---|
| 200 | OK | Запрос выполнен успешно |
| 400 | Bad Request | Некорректные параметры запроса |
| 401 | Unauthorized | Отсутствует или недействительная аутентификация |
| 403 | Forbidden | Недостаточно прав доступа |
| 404 | Not Found | Ресурс не найден |
| 429 | Too Many Requests | Превышен лимит запросов |
| 500 | Internal Error | Внутренняя ошибка сервера |
| 503 | Service Unavailable | Сервис временно недоступен |
Пример обработки ошибок
error_handling.py
1from coren import CorenClient2from coren.exceptions import (3 AuthenticationError,4 RateLimitError,5 APIError,6 PolicyViolationError7)89client = CorenClient(base_url="https://api.internal:8080")1011try:12 response = client.chat.completions.create(13 model="llama-3-70b-chat",14 messages=[{"role": "user", "content": "Помогите с кредитом"}]15 )16except AuthenticationError as e:17 logger.error(f"Ошибка аутентификации: {e.message}")18 # Проверьте API ключ19except RateLimitError as e:20 logger.warning(f"Лимит превышен. Повтор через {e.retry_after} сек")21 # Реализуйте exponential backoff22except PolicyViolationError as e:23 logger.error(f"Нарушение политики: {e.message}")24 # Запрос заблокирован guardrails25except APIError as e:26 logger.error(f"Ошибка API ({e.status_code}): {e.message}")27 # Обработка других ошибок
Лимиты запросов
Лимиты настраиваются администратором платформы для каждого тенанта и пользователя.
Уровни лимитов (настраиваемые)
| Роль | Запросов/мин | Токенов/мин | Описание |
|---|---|---|---|
| Developer | 60 | 50,000 | Разработка и тестирование |
| Service | 300 | 200,000 | Продуктивные сервисы |
| Admin | Без лимита | Без лимита | Администраторы платформы |
Рекомендации
- Реализуйте exponential backoff при получении ошибки 429.
- Отслеживайте заголовки X-RateLimit для проактивного управления нагрузкой.
- Используйте batch-запросы где возможно для снижения количества вызовов.
- Кэшируйте ответы для повторяющихся запросов.
Основные endpoint'ы
Обзор доступных API endpoint'ов. Полная документация в разделе API Reference.
| Метод | Endpoint | Описание |
|---|---|---|
| POST | /v1/chat/completions | Создание чат-ответа |
| POST | /v1/embeddings | Генерация эмбеддингов |
| GET | /v1/models | Список доступных моделей |
| POST | /v1/agents/run | Запуск AI агента |
| POST | /v1/rag/query | Запрос к RAG системе |
| POST | /v1/rerank | Ранжирование документов |