Документация
APIEX.CLOUD предоставляет вам одну OpenAI-совместимую конечную точку для десятков ИИ-моделей от всех основных провайдеров. Это руководство охватывает аутентификацию, справочник API, кошелек и биллинг, ключи API и лимиты запросов.
API полностью совместим с SDK OpenAI — укажите любой существующий клиент OpenAI в базовом URL ниже, и он будет работать без изменения кода.
Аутентификация
Каждый запрос должен содержать ваш ключ API в заголовке Authorization с использованием схемы Bearer.
Authorization: Bearer YOUR_API_KEY
Никогда не раскрывайте свой API-ключ в клиентском коде (JavaScript в браузере, мобильные приложения). Всегда вызывайте шлюз со своего собственного бэкенда.
Создавайте ключи и управляйте ими из своей панели: Раздел API-ключей
Быстрый старт
Отправьте свой первый запрос на выбранном языке. Замените YOUR_API_KEY на ключ из вашей панели управления.
curl https://apiex.cloud/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Hello!" }
]
}'
from openai import OpenAI
client = OpenAI(
base_url="https://apiex.cloud/api/v1/",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://apiex.cloud/api/v1/",
apiKey: "YOUR_API_KEY",
});
const response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);
$ch = curl_init( "https://apiex.cloud/api/v1/chat/completions" );
curl_setopt_array( $ch, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
),
CURLOPT_POSTFIELDS => json_encode( array(
'model' => 'gpt-4o-mini',
'messages' => array(
array( 'role' => 'user', 'content' => 'Hello!' ),
),
) ),
) );
$response = json_decode( curl_exec( $ch ), true );
echo $response['choices'][0]['message']['content'];
Ошибки
API использует стандартные HTTP-коды состояния. Коды в диапазоне 2xx указывают на успех; 4xx указывают на проблему с запросом; 5xx указывают на проблему на нашей стороне.
| Статус | Значение |
|---|---|
| 400 | Неверный запрос — обязательный параметр отсутствует или неверно сформирован. |
| 401 | Неавторизован — API-ключ отсутствует, недействителен или отозван. |
| 402 | Требуется оплата — баланса вашего кошелька недостаточно для этого запроса. |
| 403 | Запрещено — этот ключ не имеет доступа к запрошенной модели или конечной точке. |
| 429 | Слишком много запросов — вы достигли лимита скорости. Подождите и повторите попытку. |
| 500 | Ошибка сервера — что-то пошло не так на нашей стороне. Повторная попытка безопасна. |
Ответы об ошибках имеют единый формат JSON:
{
"error": {
"type": "insufficient_balance",
"message": "Wallet balance is too low to complete this request.",
"code": 402
}
}
Базовый URL и конечные точки
Все запросы выполняются по этому базовому URL:
https://apiex.cloud/api/v1/
| Метод | Конечная точка | Описание |
|---|---|---|
| POST | /chat/completions |
Создать завершение чата (поддерживается потоковая передача). |
| POST | /images/generations |
Создавать изображения по текстовому описанию. |
| POST | /audio/speech |
Преобразование текста в речь. |
| POST | /embeddings |
Создание векторных представлений (эмбеддингов) для текста. |
| GET | /models |
Перечислите все модели, доступные в данный момент для вашего ключа. |
Завершения чата
Создает ответ модели для заданного диалога. Форматы запроса и ответа соответствуют API OpenAI Chat Completions.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
модель обязательно |
string | ID используемой модели. Доступные значения см. в разделе «Модели и провайдеры». |
сообщения обязательно |
array | Список сообщений, описывающих ход беседы, каждое с указанием роли и содержимого. |
температура |
number | Температура выборки от 0 до 2. Более высокие значения делают вывод более случайным. По умолчанию: 1. |
max_tokens |
integer | Максимальное количество токенов для генерации в ответе. |
top_p |
number | Порог ядерной выборки (nucleus sampling). Обычно оставляют значение по умолчанию 1. |
поток |
boolean | Если true, частичные дельты сообщений отправляются как server-sent events. По умолчанию: false. |
Пример ответа
{
"id": "chatcmpl_8k2f...",
"object": "chat.completion",
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 10,
"total_tokens": 19
}
}
Потоковые ответы
Установите "stream": true, чтобы получать ответ постепенно в виде серверных событий, что идеально подходит для чат-интерфейсов.
data: {"choices":[{"delta":{"content":"Hello"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: [DONE]
Каждый официальный SDK OpenAI автоматически обрабатывает этот формат — с вашей стороны не требуется никакой дополнительной обработки.
Ограничения скорости
Ограничения скорости защищают стабильность шлюза для всех. Лимиты зависят от вашего активного плана и применяются для каждого API-ключа.
Каждый ответ включает заголовки, описывающие статус вашего текущего лимита:
| Заголовок | Описание |
|---|---|
X-RateLimit-Limit | Максимальное количество запросов, разрешенное в текущем окне. |
X-RateLimit-Remaining | Запросы, оставшиеся в текущем окне. |
X-RateLimit-Reset | Секунд до сброса окна. |
Когда вы превышаете лимит, API возвращает ошибку 429 Too Many Requests. Используйте стратегию экспоненциальной задержки перед повторной попыткой.
Кошелек и биллинг
У каждого аккаунта есть предоплаченный кошелек. Пополните его один раз, а затем тратьте на любую поддерживаемую модель — использование списывается за каждый запрос на основе потребленных токенов или единиц.
Пополните свой кошелек напрямую из панели управления с помощью банковской карты.
Поделитесь своей реферальной ссылкой — и вы, и человек, который присоединится, получите кредит на кошелек.
Каждый запрос регистрируется с указанием точной стоимости, которую можно увидеть в журналах использования в режиме реального времени.
API-ключи
API-ключи аутентифицируют ваши запросы и могут быть ограничены определенными моделями или лимитами использования через группы ключей.
Лучшие практики
- Создавайте отдельный ключ для каждого приложения или среды (production, staging, local).
- Храните ключи в переменных окружения, никогда не добавляйте их в систему контроля версий.
- Используйте группы ключей, чтобы ограничить расходы или доступ к определенным моделям.
- Немедленно отзовите ключ, если подозреваете, что он был скомпрометирован.
Тарифные планы и подписки
Выберите план для предсказуемых ежемесячных кредитов или оставайтесь на оплате по факту использования, просто пополняя свой кошелек.
| Тарифный план | Цена | Длительность | Лимит запросов | Кредит кошелька |
|---|---|---|---|---|
| Titanium | 5,000,000 Томан | 30 дней | Без ограничений | 1,500,000 Томан |
| Gold | 2,000,000 Томан | 30 дней | Без ограничений | 500,000 Томан |
| Silver | 1,000,000 Томан | 30 дней | Без ограничений | 200,000 Томан |
Модели и провайдеры
Шлюз в настоящее время направляет запросы к следующим провайдерам. Вызовите GET /models с вашим API-ключом для получения точного списка моделей в реальном времени.
Часто задаваемые вопросы
Совместим ли API с официальными SDK OpenAI?
Да. Просто установите базовый URL SDK на адрес шлюза и используйте свой API-ключ шлюза — никаких других изменений в коде не требуется.
Что произойдет, если баланс моего кошелька закончится во время выполнения запроса?
Запрос отклоняется с ошибкой 402 Payment Required до того, как он будет перенаправлен провайдеру, поэтому с вас никогда не будет списана плата за запрос, который вы не можете себе позволить.
Могу ли я ограничить ключ только определенными моделями?
Да, с помощью групп ключей. Назначьте ключ группе со списком разрешенных моделей и, при необходимости, собственным лимитом запросов или расходов.
Сгорают ли неиспользованные кредиты кошелька?
Кредит кошелька, добавленный через пополнение, не имеет срока действия. Кредит, предоставленный в рамках ограниченного по времени плана, действует в течение срока действия этого плана.
Войдите и свяжитесь с нами из своей панели — наша команда будет рада помочь.