OAuth2 авторизация

OAuth2 авторизация

OAuth2 позволяет вашему приложению получать программный доступ к Arka AI API от имени пользователя без передачи ему ваших учётных данных. Это стандартный протокол авторизации, который подходит для серверных приложений, скриптов автоматизации и интеграционных сервисов.

Регистрация OAuth2-приложения

Чтобы использовать OAuth2, зарегистрируйте ваше приложение в Arka AI:

  1. Перейдите в раздел настроек вашего аккаунта
  2. Выберите вкладку «OAuth2-приложения»
  3. Нажмите «Зарегистрировать приложение»
  4. Укажите:
    • Название приложения — как оно будет отображаться пользователям при авторизации
    • 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-ключи — они проще в настройке и подходят для личных проектов и скриптов.