5.8 KiB
aiqianshu Bulk Registration — Full Pattern Reference
Service Profile
- URL: https://aiqianshu.com
- Type: OpenAI-compatible API gateway (NewAPI v1.0.0-rc.11)
- API format:
https://aiqianshu.com/v1(OpenAI-compatible) - Key format: Two variants:
- Browser-created:
sk-prefix, ~55 chars (e.g.,[REDACTED-KEY]) - API-created: No prefix, ~48 chars alphanumeric (e.g.,
X5nJtYPUNfdqx5NYDeb2mKPgHoPa9NEolffR2ksdxr3x4ynu) - Both work identically for API access
- Browser-created:
Email Domain Whitelist
aiqianshu has admin-enabled email domain whitelist:
| Domain | Status | Error |
|---|---|---|
gmail.com |
✅ Allowed | — |
web-library.net (mail.tm) |
❌ Blocked | "email domain name whitelist… your email address is not allowed" |
Always use Gmail +aliasing for this service.
Registration Flow (Working)
Step 1 (SEND CODE) is BROWSER-ONLY — no API endpoint exists.
All tested API paths return 404 or validation errors:
POST /api/verification→ 404POST /api/user/sendcode→ 404POST /api/user/register(email-only) → "Password field required" (validates, doesn't send)
Only browser form click on "Отправить код" triggers the email. Hermes browser_type fills 4 fields, then browser_click sends.
1. BROWSER: fill sign-up form, click "Отправить код" → sends 6-char code to email
2. IMAP: read code from [REDACTED-NAME]+aqXXXX@gmail.com → extract from HTML <strong>
3. POST /api/user/register → {success:true}
4. POST /api/user/login → get session cookie + user_id
5. POST /api/token/ (New-Api-User: <id> header) → create API key
6. POST /api/token/batch/keys {"ids":[<tid>]} → extract unmasked full key
API Details
Register:
curl -X POST https://aiqianshu.com/api/user/register \
-H "Content-Type: application/json" \
-d '{"username":"goth_aq0011","email":"[REDACTED-NAME]+aq0011@gmail.com","password":"Goth@2026xX","verification_code":"8a9a6f","agreement":true}'
# → {"message":"","success":true}
Login (get user_id from response):
curl -X POST https://aiqianshu.com/api/user/login \
-H "Content-Type: application/json" -c cookies.txt \
-d '{"username":"[REDACTED-NAME]+aq0011@gmail.com","password":"Goth@2026xX"}'
# → {"data":{"id":202,...}}
Create token (New-Api-User header = numeric user_id):
curl -X POST https://aiqianshu.com/api/token/ \
-b cookies.txt -H "New-Api-User: 202" -H "Content-Type: application/json" \
-d '{"name":"goth_aq0011","unlimited_quota":true,"remain_quota":999999999}'
# → {"message":"","success":true}
Extract full key:
# First find token ID
curl -s https://aiqianshu.com/api/token/?status_only=true \
-b cookies.txt -H "New-Api-User: 202"
# Then get unmasked key
curl -X POST https://aiqianshu.com/api/token/batch/keys \
-b cookies.txt -H "New-Api-User: 202" -H "Content-Type: application/json" \
-d '{"ids":[165]}'
# → {"data":{"keys":{"165":"X5nJtYPUNfdqx5NYDeb2mKPgHoPa9NEolffR2ksdxr3x4ynu"}}...}
Code Format
aiqianshu verification codes are 6-char alphanumeric (not hex, not digits):
- Examples:
059cef,4509dd,8a9a6f,adbd18,2ece9a,038c6c,af8789,b83765,353f0e - Pattern:
<strong[^>]*>\s*([a-zA-Z0-9]{4,8})\s*</strong> - Codes valid for 10 minutes
Rate Limiting — CRITICAL
- All POSTs share ONE rate limit pool (browser + API combined)
- Window: ~2-3 POSTs total, then 5-15 minute cooldown
- SEND-CODE is EXEMPT — browser can keep sending codes while registration is 429'd
- Maximum throughput: ~2 registrations per 15 minutes across ALL methods
- 429 response: empty body, no JSON — handle with
try: r.json() except: ...or checkr.status_codefirst - Scaling: For 50+ accounts, proxy rotation (different IPs) is mandatory. Without proxies: ~2 registrations per 15 min = ~6 hours for 50 accounts.
- Steady approach: 5-minute cron job that registers 1 account per tick, plus browser code-sending loop. Achieves 8-12 accounts/hour without proxy infrastructure.
- Mitigation: Send ALL codes via browser first (no limit), then register in slow batches
Practical Limits (measured 2026-06-18)
Browser send-code: unlimited (~1 per 5-8s safe)
API login: ~2 per 10 min (shares POST pool)
API register: ~2 per 10 min (shares POST pool)
API create token: ~2 per 10 min (shares POST pool)
API batch/keys: not rate-limited (GET endpoint)
Browser register: same pool as API (429 if API already hit limit)
Key insight: Send ALL codes via browser first (unstoppable), then slowly process registrations via API with 5+ min delays between accounts. For 50 accounts: send 50 codes in ~10 min via browser, then register 2 every 15 min = ~6 hours. Or use proxies to parallelize.
Gmail +aliasing Pattern
Format: [REDACTED-NAME]+aq{index:04d}@gmail.com
All deliver to [REDACTED-NAME]@gmail.com.
IMAP search (Python):
m.search(None, f'(TO "{email_addr}")') # full address with quotes
Code extraction regex:
codes = re.findall(r'<strong[^>]*>\s*([a-zA-Z0-9]{4,8})\s*</strong>', body)
Bulk Script
Location: C:/Users/User/AppData/Local/hermes/scripts/aiqianshu_bulk.py
Keys file: C:/Users/User/aiqianshu_keys.txt
Format: username|email|key
Pool integration:
- Cron job
rotate-aiqianshu-key(30 min) picks random key - Provider in Hermes config.yaml:
custom:aiqianshuwithbase_url: https://aiqianshu.com/v1
IMAP App Password
Email: [REDACTED-NAME]@gmail.com
App password: [REDACTED] at https://myaccount.google.com/apppasswords → "Почта" → "Компьютер Windows"
Note: app passwords can expire/revoke without notice. Test with IMAP+SMTP if user claims it works.