Заказы по ключу
Один ключ, четыре метода: залить архив, спросить статус, забрать отчёт, отменить. Демо ниже не ходит в боевой API — показывает тот же JSON, который вернёт сервер.
Базовый адрес
Все методы живут под одним префиксом. Тело у создания заказа — файл, у остальных методов тела нет.
BASE_URL = "https://tvyze.com/api/customer/v1"
Заказ через API стартует сам: примерно через минуту, а если в архиве больше 500 аккаунтов — через 10 минут. Пока старт не наступил, статус paused.
Заголовок Api-Key
Ключ передаётся в заголовке, не в query и не как Bearer. Лимит — 60 запросов в минуту на ключ. Чужой order_id вернёт 403.
Api-Key: <ваш ключ>
Залить архив
POST/orders/create
multipart/form-data, поле файла называется file. Подходят .zip и .rar, до 200 МБ. В ответе total_accounts — сколько аккаунтов реально приняли из архива.
{
"order_id": 12345,
"total_accounts": 100,
"message": "Order created successfully"
}Статус заказа
GET/orders/{order_id}
done_accounts — успешно закрытые аккаунты. report_url появляется, когда отчёт готов (заказ completed, cancelled или completed_hide). Ссылка живёт около часа, потом запросите статус ещё раз.
{
"order_id": 12345,
"status": "in_work",
"total_accounts": 100,
"done_accounts": 37,
"report_url": null
}Отмена
DELETE/orders/{order_id}
Незабранные аккаунты снимаются, заморозка по ним возвращается. Если кто-то уже взял аккаунт в работу, заказ переходит в wait_cancel и дожидается этих попыток — ответ всё равно cancelled: true. Повторный DELETE по уже завершённому заказу его прячет (cancelled: false).
{
"order_id": 12345,
"cancelled": true,
"message": "Order cancelled successfully"
}Статистика
GET/orders/stats
Только свои заказы. Окно по дате создания, дни в UTC. ordered — сколько аккаунтов заказали, paid — сколько успешно закрыто.
{
"period_days": 14,
"orders_count": 3,
"ordered": 220,
"paid": 180,
"by_day": [
{ "date": "2026-09-20", "orders": 2, "ordered": 120, "paid": 90 }
],
"orders": [
{
"order_id": 12345,
"created_at": "2026-09-21T18:44:29Z",
"status": "in_work",
"ordered": 100,
"paid": 37
}
],
"limit": 100,
"offset": 0
}Python
Четыре функции. В API_KEY подставьте свой ключ. На создание заказа таймаут 10 минут — архив может быть большим.
import requests
BASE_URL = "https://tvyze.com/api/customer/v1"
API_KEY = ""
HEADERS = {"Api-Key": API_KEY}
def create_order(archive_path: str) -> dict:
"""Залить архив (.zip / .rar) с аккаунтами и создать заказ."""
with open(archive_path, "rb") as f:
r = requests.post(
f"{BASE_URL}/orders/create",
headers=HEADERS,
files={"file": (archive_path.split("/")[-1], f, "application/octet-stream")},
timeout=600,
)
r.raise_for_status()
return r.json()
def get_order(order_id: int) -> dict:
r = requests.get(f"{BASE_URL}/orders/{order_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
return r.json()
def cancel_order(order_id: int) -> dict:
r = requests.delete(f"{BASE_URL}/orders/{order_id}", headers=HEADERS, timeout=60)
r.raise_for_status()
return r.json()
def orders_stats(days: int = 14) -> dict:
r = requests.get(
f"{BASE_URL}/orders/stats",
headers=HEADERS,
params={"days": days, "limit": 100, "offset": 0},
timeout=30,
)
r.raise_for_status()
return r.json()Сценарий
Создали → опросили, пока идёт работа → дождались отчёта. Демо прогоняет эти три ответа без сети.
Архив
- Формат
.zipили.rar. Вложенные архивы раскрываются. - Аккаунт — это файл
.sessionили папка сtdata/key_datas. - Если в архиве есть и session, и tdata, берётся tdata.
- Пустой архив или без аккаунтов — 400, заказ не создаётся.
Ошибки
Статусы в поле status: