███████╗██╗ █████╗ ███████╗██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗
██╔════╝██║ ██╔══██╗██╔════╝██║ ██║██╔════╝██╔═══██╗██╔══██╗██╔════╝
█████╗ ██║ ███████║███████╗███████║██║ ██║ ██║██║ ██║█████╗
██╔══╝ ██║ ██╔══██║╚════██║██╔══██║██║ ██║ ██║██║ ██║██╔══╝
██║ ███████╗██║ ██║███████║██║ ██║╚██████╗╚██████╔╝██████╔╝███████╗
╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
Bulk-create Flash Code accounts with auto-generated API keys — OpenAI-compatible inference (deepseek-v4.1-flash / deepseek-v4-pro) with tool-calling + 9Router connector.
🛠 Quick start · 🎁 Free tier · 🤖 Models · 🧪 Use the API · ✅ Verified · 🧭 How it works · 🔌 9Router · 🔌 OmniRoute · ⚙️ Options · 🛰️ Proxies · 🐞 Issues
Flash Code is a New API fork with no captcha and a plain e-mail + password sign-up. Two things decide whether a minted key is usable: the token must live in the group whose channels actually serve the model (DeepSeek 官转 — a token left on default is answered No available channel for model deepseek-v4.1-flash under group default (distributor)), and the e-mail must be a real @gmail.com address. Both models call tools (verified with a get_time schema: a real tool_calls payload with correct arguments came back).
| What | Value |
|---|---|
| Sign-up grant | 50,000 quota on the account (quota_per_unit: 500000) |
| Daily check-in | disabled (签到功能未启用) |
| Captcha at sign-up | none (turnstile_check: false) |
| E-mail the panel accepts | plain @gmail.com |
| Token group | DeepSeek 官转 — the default group has no channel for these models |
| Tool calling | yes on deepseek-v4.1-flash and deepseek-v4-pro |
| The unit that scales | one account = one key |
💡 The free tier is set by Flash Code and can change. Check the live numbers at api.flashcode.cc — and let the tool's own gate decide:
node src/cli.js --verify-only # every key in keys.txt is re-tested with a real chat callGET /v1/models on a live key lists exactly two ids, both verified with a real chat call and a real tool_calls answer:
| Model ID | Note |
|---|---|
deepseek-v4.1-flash |
default verification model · group DeepSeek 官转 |
deepseek-v4-pro |
same group |
The base URL is `https://api.flashcode.cc/v1\` — OpenAI-compatible, so anything that speaks OpenAI works (SDKs, Cursor, OpenCode, Kilo Code, …).
curl https://api.flashcode.cc/v1/chat/completions \
-H "Authorization: Bearer <your key>" \
-H "Content-Type: application/json" \
-d '{"model":"<model id>","messages":[{"role":"user","content":"hi"}],"max_tokens":8}'Measured 2026-10-22 through the WARP exit fleet: register → login → token (group DeepSeek 官转) → chat 200 with content, and a get_time tool call returned as a real tool_calls payload on both model ids. A token minted without the group answered 503 No available channel … under group default (distributor), which is why the tool sets the group.
Quality gates. Every key here passed a live
chat-200before it was written tokeys.txt(dead keys are never shipped). Router combos follow the same rule at the model level: an entry is added only if the model answerschat-200and can call tools — a model without tool support, a dead key or a dead provider is dropped instead of added. Re-run the verify step any time; failures are reported, never hidden.
inbox (one address per account) a fresh address per account
│
├─▶ sign-up: Flash Code page → e-mail address → code / link from the inbox
├─▶ session: the account's cookies or access token in hand
├─▶ key mint: the account's key endpoint → plaintext key returned once (written to disk immediately)
└─▶ live proof: POST https://api.flashcode.cc/v1/chat/completions → real content = the key is live
| Step | Call | Notes |
|---|---|---|
| gates | GET /api/status |
register + e-mail verification on, turnstile_check: false, check-in off |
| mailbox | Emailnator gmail | a fresh address per account |
| code | GET /api/verification?email=… |
6-digit code; brand mail subject Flash Code邮箱验证邮件 |
| register | POST /api/user/register |
username + password + verification_code |
| login | POST /api/user/login |
session cookie (+ New-Api-User header) |
| key | POST /api/token/ with group: "DeepSeek 官转" |
the group is what makes the model reachable |
| proof | POST /v1/chat/completions |
200 with real content (and tool_calls when tools are sent) = the key is live |
node src/cli.js --count 10
node src/cli.js --verify-only
node src/cli.js --screen
node src/launcher.jsRequired. Every account is minted through an exit from your list (the panel binds a session to the exit that created it and bans abusive exits).
- One exit per line in
proxies.txt(http://,socks5://,socks4://or barehost:port), orFLASHCODE_PROXIES, or--pool <file>. - Without a list the tool stops and says so — it never falls back to your own address.
| Path | Contents |
|---|---|
keys.txt |
one live-verified key per line — git-ignored |
keys-dead.txt |
keys that stopped answering, with the panel's answer kept verbatim |
accounts.json |
e-mail, password, steps and the verification result per account — git-ignored |
proxies.txt |
your exits — git-ignored |
out/ |
per-run logs — git-ignored |
| 🏢 Provider | Flash Code — api.flashcode.cc |
| 🎁 What the provider gives | one gmail account per key · group DeepSeek 官转 · every key chat-200 + tools-verified |
| 🔑 What one key gets you | one API key scoped to its own account: the 2 model ids on the endpoint below, at your plan's limits. The quota lives on the account, which is exactly why this tool creates one account per key |
| 🌐 API shape | OpenAI-compatible: POST https://api.flashcode.cc/v1/chat/completions |
| 🔒 Your data | only api.flashcode.cc and the inbox backend you configure are contacted; keys stay on your machine |
If Flash Code changes its signup shape or rate limits, the tool stops at that step and says so. Open an issue with the command you ran and the exact output; PRs are welcome.
MIT © 2026 — see LICENSE.
MIT © 2026 flashcode-bulk-apikey contributors