Tigr.pro API v1
Spec version: 1.2.0
REST для приложений + OpenAI-совместимый чат для SDK. Токен создаётся в кабинете. Обзор отличий — на странице для разработчиков.
Почему API Tigr.pro
- Веб-студия + API на одном балансе в рублях (не только ключ как у RouterAI/KupiAPI)
- OpenAI-совместимый chat/completions для SDK / Cursor / n8n
- Студия: изображения, видео, аудио, универсальные промпты
- Видеостудия (сценарий → кадры → ролик) в веб-интерфейсе
- Хабы ChatGPT / GPT Image / Flux / Kling / Suno и гайды «О нейросетях»
Base URL: https://tigr.pro/api/v1
OpenAI base URL: https://tigr.pro/api/v1/openai
Auth header: Authorization: Bearer <token>
JSON-версия: https://tigr.pro/api/v1/docs.json
Рекомендуемый клиентский поток
- 1) Создайте токен в кабинете или login/register; храните в secure storage.
- 2) Для чата в SDK: base_url=.../api/v1/openai + Bearer token.
- 3) Для картинок/видео/аудио: /studio/models → /studio/create → poll /studio/status.
- 4) Poll status каждые 2–3 с до completed/failed.
- 5) On 401 refresh token (или новый токен в кабинете).
- 6) Пополнение: /payments/methods → /payments/create.
Платформенные заметки
- Windows/Mac: Use HTTPS + JSON; keep token in OS keychain/secure storage.
- Android: Use EncryptedSharedPreferences/Keystore for token.
- iOS: Use Keychain for token.
- Общее: Call only this backend API over HTTPS; do not call upstream providers directly.
Готовые клиентские примеры
OpenAI Python SDK (чат)
from openai import OpenAI
client = OpenAI(base_url="https://tigr.pro/api/v1/openai", api_key="YOUR_TOKEN")
r = client.chat.completions.create(
model="deepseek/deepseek-r1",
messages=[{"role": "user", "content": "Привет"}],
)
print(r.choices[0].message.content)
Студия: создать задание
POST /api/v1/studio/create/
Authorization: Bearer YOUR_TOKEN
{"model_id":"openai/gpt-image-1.5","prompt":"кот в космосе","params":{"aspect_ratio":"1:1"}}
→ poll GET /api/v1/studio/status/{task_id}/
Android (Kotlin + OkHttp)
val client = OkHttpClient()
val req = Request.Builder()
.url("$BASE/api/v1/profile/")
.header("Authorization", "Bearer $token")
.get()
.build()
val res = client.newCall(req).execute()
val body = res.body?.string()
Open site button + update check (универсально)
1) GET /api/v1/app/config/ 2) Open docs.app.site_url by button "Перейти на сайт" 3) GET /api/v1/app/check-update/?platform=<desktop|android|ios|mac>¤t_version=<x.y.z> 4) if update_available=true -> show update action (download_url / play_market_url) 5) if force_update=true -> block app until update
Endpoints
POST /auth/register/
Auth: no
Content-Type: application/json
{'email': 'user@example.com', 'password': 'Secret123!', 'first_name': 'Ivan', 'last_name': 'Ivanov'}
token + user OR requires_email_verification=true
POST /auth/login/
Auth: no
Content-Type: application/json
{'email': 'user@example.com', 'password': 'Secret123!'}
token + user
POST /auth/refresh/
Auth: required
new token, old token invalidated
POST /auth/logout/
Auth: required
current token invalidated
GET /profile/
Auth: required
current user + balance
GET /services/
Auth: required
all active services with descriptions
GET /app/config/
Auth: no
site url + latest versions/links by platform
GET /app/check-update/?platform=android¤t_version=1.0.0
Auth: no
update decision for platform
GET /studio/models/?category=image&recommended=1
Auth: required
catalog models (up to 200)
GET /studio/models/{model_pk}/
Auth: required
model detail + form fields
GET /studio/prompts/?category=image
Auth: required
universal prompts for category (id, name, char_count)
POST /studio/create/
Auth: required
Content-Type: application/json
{'model_id': 'openai/gpt-image-1.5', 'prompt': 'кот в космосе', 'params': {'aspect_ratio': '1:1'}, 'universal_prompt_ids': [1, 2]}
task (poll /studio/status/{id}/)
GET /studio/status/{task_id}/
Auth: required
task status + result urls/text
GET /studio/list/?limit=20
Auth: required
user studio tasks
GET /chat/rooms/
Auth: required
chat rooms list
POST /chat/rooms/create/
Auth: required
Content-Type: application/json
{'name': 'Новый чат', 'polza_model_id': 123}
created room
GET /chat/messages/{room_id}/?limit=50
Auth: required
messages in room
POST /chat/send/{room_id}/
Auth: required
Content-Type: application/json
{'content': 'Привет!'}
queued task_id
GET /chat/status/{task_id}/{room_id}/
Auth: required
pending/completed with ai message
GET /openai/models
Auth: required
OpenAI-shaped list of chat models
POST /openai/chat/completions
Auth: required
Content-Type: application/json
{'model': 'deepseek/deepseek-r1', 'messages': [{'role': 'user', 'content': 'Привет'}], 'stream': False}
OpenAI chat.completion (+ usage.cost_rub)
GET /payments/methods/
Auth: required
available payment methods and limits
POST /payments/create/
Auth: required
Content-Type: application/json
{'Idempotency-Key': ''}
{'amount': 500, 'method': 'robokassa | yookassa | tkassa'}
payment + payment_url (generated server-side)
GET /payments/list/?limit=20
Auth: required
payment history
GET /payments/status/{payment_id}/
Auth: required
payment status