Bulk OpenAI API key validation with a terminal-styled interface. Paste or upload a list of keys, watch them validate in real time, and export the results. Useful when a team rotates keys, a batch of purchased keys needs sanity-checking, or you want to know which of your keys are still alive.
Note: this project is currently at the concept stage. Core validation works; authentication, rate-limit handling polish, and hardening are on the roadmap.
KEYFORGE v0.1.0
─────────────────────────────────────────
→ Validating 5 keys...
sk-proj-abcd...ef01 VALID
sk-proj-1234...5678 INVALID
sk-proj-9abc...def0 VALID
sk-proj-ffff...0000 RATE_LIMITED
sk-proj-7777...8888 VALID
→ 3 VALID · 1 INVALID · 1 RATE_LIMITED
→ results exported to results.txt
- Bulk validation: validate many keys in one pass, streamed so long lists don't time out the UI
- File upload: drop a
.txtof keys (one per line) instead of pasting - Key masking: the UI shows
sk-proj-abcd********...ef01; full keys only appear in your exported results file - Status taxonomy: each key resolves to
VALID,INVALID, orRATE_LIMITED(key is real but currently throttled) - TXT export: download the full result set with keys and statuses
git clone https://github.com/1m1ssher/KeyForge.git
cd KeyForge
pip install -r requirements.txt
python main.pyOpen http://localhost:5000 and start validating. The stack is Flask + vanilla JavaScript, so there's no build step and no framework overhead.
main.py boots the Flask app; app.py defines the routes (/ renders the terminal UI, /validate streams validation progress); utils.py holds the actual OpenAI API call that determines each key's status. Adding a new provider means one function in utils.py.
- Authentication so validation history is per-user
- Rate-limit-aware scheduling for large key lists
- Multi-provider support (Anthropic, Groq)
- Persistent results database
Validate only keys you own or have explicit permission to test. Mass-checking keys you don't own is unauthorized access.
See LICENSE.