# Custom-OAuth New-API панели (native github_oauth=false, но custom-провайдер жив) Некоторые New-API форки выставляют в `/api/status` `github_oauth: false`, НО регистрируют через `custom_oauth_providers` — отдельный flow с flow_token. Не списывать панель как «OAuth dead» по флагу github_oauth; проверять custom-провайдеры в status и пробовать flow. ## Flow (проверено на beatapi.io, 2026-10-13) 1. `POST /api/oauth/state {provider:'github', intent:'login', aff:''}` → `data.flow_token` (МОЖЕТ быть вложен в `data` как dict ИЛИ как строка — парсить оба варианта). 2. GH authorize с `state=`; если GH-акк УЖЕ авторизовал это OAuth-приложение, страница не редиректит, а отдаёт HTML `OAuth application authorized` с meta-refresh — code+state лежат В ТЕЛЕ, regex `oauth/github\?code=([a-f0-9]{16,})[^"']*state=([A-Za-z0-9_\-]+)`. 3. `GET /api/oauth/github?code=..&state=..` → `data.access_token` + `data.session.sid` (sid тоже может быть вложен: `d.session_id or d.session.sid`). 4. Email-whitelist панели применяется И к OAuth: GH-акк обязан иметь VERIFIED primary email whitelist-домена (gmail/163/qq/icloud/yahoo/foxmail у BeatAPI). Сортировать пул gmail-first; hotmail/outlook-когорта = гарантированный FAIL, не жечь на них крит-запросы. 5. Flagged/suspended GH-акки на authorize редиректят на /dashboard без code («redir no code») — следующий акк. ## Dashboard API (new-api-общее) - `POST /api/token/` — trailing slash ОБЯЗАТЕЛЕН (без него 307 с пустым телом). - Header `New-Api-User: ` обязателен на token-эндпоинтах. - Полный ключ: `POST /api/token/{tid}/key` (GET = 404); в списках ключ маскирован звёздочками — если в ответе `*`, ключ не получен. - При 429 на /key акк не теряет токен — сохранить PARTIAL (access_token без api_key) и дозабрать позже отдельным repair-прогоном. ## Relay /v1 - Cloudflare 1010 на дефолтном urllib UA — на ВСЕ /v1-запросы ставить браузерный User-Agent. - Диагноз нулевой квоты: 402 «Insufficient balance» на платных моделях; `-free`-суффикс модели при quota=0 даёт 200, а 429 «Rate limit exceeded: this model» = free-модель ДОСТУПНА, просто 1 req/min. Нуль-квота ≠ мусорный акк, если есть free-модели. ## Лимитер и волны - Крит-эндпоинты (oauth/state, exchange, token) под лимитером ~20 запросов/20мин на IP → реально ~4 акка/окно. Обработка: на 429 sleep 600 и продолжать (не падать), pacing 75-110с между акками. - Большую волну НЕ запускать параллельно с текущей (общий лимитер + race на used-файл). Паттерн chain: скрипт ждёт `WAVE_EXIT` в логе предыдущей волны, затем стартует следующую + repair. Запускать background + persist_on_release. - Signup-бонус ($/квота) может выдаваться только ПЕРВОМУ акку с IP (антифрод) — не закладывать бонус в ценность волны; ценность = free-модели + aff. ## Windows-питфол диагностики - CIM-запрос `CommandLine -match '