OAuth2 авторизация
OAuth2 авторизация
OAuth2 позволяет вашему приложению получать программный доступ к Arka AI API от имени пользователя без передачи ему ваших учётных данных. Это стандартный протокол авторизации, который подходит для серверных приложений, скриптов автоматизации и интеграционных сервисов.
Регистрация OAuth2-приложения
Чтобы использовать OAuth2, зарегистрируйте ваше приложение в Arka AI:
- Перейдите в раздел настроек вашего аккаунта
- Выберите вкладку «OAuth2-приложения»
- Нажмите «Зарегистрировать приложение»
- Укажите:
- Название приложения — как оно будет отображаться пользователям при авторизации
- Redirect URI — URL, на который Arka AI перенаправит пользователя после авторизации (должен использовать HTTPS, кроме
localhost) - Scopes — запрашиваемые разрешения
После регистрации вы получите client_id и client_secret. Сохраните client_secret — он будет показан только один раз.
Получение токена
Используйте стандартный Authorization Code Flow:
Шаг 1: Запрос авторизации
Перенаправьте пользователя на страницу авторизации Arka AI:
GET https://api.arka-ai.ru/oauth2/authorize
?response_type=code
&client_id=<ваш_client_id>
&redirect_uri=<ваш_redirect_uri>
&scope=<запрашиваемые_scopes>
Пользователь увидит страницу Arka AI с запросом на авторизацию вашего приложения. После подтверждения он будет перенаправлен на ваш redirect_uri с параметром code.
Шаг 2: Обмен кода на токен
Получите code из параметров URL и обменяйте его на токен:
curl -X POST "https://api.arka-ai.ru/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "client_id=<ваш_client_id>" \
-d "client_secret=<ваш_client_secret>" \
-d "code=<полученный_code>" \
-d "redirect_uri=<ваш_redirect_uri>"
В ответ вы получите:
{
"access_token": "<токен_доступа>",
"refresh_token": "<refresh_токен>",
"token_type": "Bearer",
"expires_in": 3600
}
Refresh-токены
Access-токен действителен ограниченное время (обычно 1 час). Для продления используйте refresh-токен:
curl -X POST "https://api.arka-ai.ru/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token" \
-d "client_id=<ваш_client_id>" \
-d "client_secret=<ваш_client_secret>" \
-d "refresh_token=<ваш_refresh_токен>"
Refresh-токены поддерживают ротацию: каждый успешный refresh возвращает новый refresh-токен, а старый аннулируется.
Scopes и разрешения
Доступные scopes (разрешения):
| Scope | Описание |
|---|---|
models:read | Просмотр каталога моделей |
models:invoke | Вызов моделей через API |
compute:read | Просмотр доступных GPU-инстансов |
compute:manage | Управление GPU-инстансами и заказами |
account:read | Просмотр информации об аккаунте |
Запрашивайте минимально необходимый набор scopes — пользователи с большей вероятностью одобрят приложение, запрашивающее только нужные разрешения.
Пример: полный flow на Python
import requests
# Шаг Luck: обмен кода на токен
response = requests.post(
"https://api.arka-ai.ru/oauth2/token",
data={
"grant_type": "authorization_code",
"client_id": "ваш_client_id",
"client_secret": "ваш_client_secret",
"code": "полученный_код",
"redirect_uri": "ваш_redirect_uri"
}
)
tokens = response.json()
access_token = tokens["access_token"]
refresh_token = tokens["refresh_token"]
# Использование токена для вызова API
api_response = requests.post(
"https://api.arka-ai.ru/v1/chat/completions",
headers={
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
},
json={
"model": "DeepSeek-R1",
"messages": [{"role": "user", "content": "Привет, Arka!"}]
}
)
Для простых сценариев, не требующих делегированной авторизации, используйте API-ключи — они проще в настройке и подходят для личных проектов и скриптов.