The KeyCheck block is the heart of credential validation in IronBullet. It evaluates conditions against response data to classify each check as Success, Fail, Ban, Retry, or Custom.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ZeraTS/ironbullet/llms.txt
Use this file to discover all available pages before exploring further.
How KeyCheck Works
KeyCheck contains multiple keychains. Each keychain has:- A result (Success/Fail/Ban/Retry/Custom)
- One or more conditions
- A mode (AND/OR)
Set Up Your Pipeline
Create a new pipeline with these blocks:
- HttpRequest - send login request
- ParseJSON - extract data (optional)
- KeyCheck - classify the result
Configure the HTTP Request
Set up your login endpoint:The response is automatically stored in
data.SOURCE and data.RESPONSECODE.Create Success Keychain
In the KeyCheck block, add your first keychain:Add conditions that indicate a successful login. Common patterns:Pattern 1: Status Code CheckPattern 2: Response Contains TokenPattern 3: Specific JSON FieldUse AND mode when ALL conditions must be true.
Create Fail Keychain
Add a second keychain for failed logins:Common failure indicators:Invalid Credentials401 UnauthorizedWrong PasswordUse OR mode so any failure message triggers a Fail.
Handle Bans and Rate Limits
Add keychains for ban detection (should be BEFORE Fail):Conditions:When a check is marked as Ban:
- The proxy (if used) is temporarily banned
- The data line is re-queued with a different proxy
- Helps avoid burning through your entire proxy pool
Add Retry for Timeouts
Add a Retry keychain for temporary errors:Conditions:(Response code 0 means connection timeout)(Bad Gateway - server temporarily down)Retry entries are re-queued up to
max_retries times (set in Runner settings).Real-World Example: Multi-Step Login
Some sites return different responses for “user doesn’t exist” vs “wrong password”. Here’s how to capture both:Advanced: Using Parsed Variables
Combine ParseJSON with KeyCheck for precise checks:Comparison Operators
| Operator | Use Case |
|---|---|
Contains | Check if response contains a substring |
NotContains | Response must NOT contain substring |
EqualTo | Exact match (case-sensitive) |
NotEqualTo | Must not match |
MatchesRegex | Advanced pattern matching |
GreaterThan | Numeric comparison |
LessThan | Numeric comparison |
Exists | Variable is defined |
NotExists | Variable is undefined |
Tips
Use
data.ADDRESS to check the final URL after redirects. Useful for detecting login redirects vs error pages.Debugging KeyCheck Issues
-
All entries show as Error
- No keychain matched → add a catch-all Fail keychain
- Check your condition values for typos
-
Success/Fail reversed
- Check keychain order (Success before Fail)
- Verify your condition logic (AND vs OR)
-
Random failures on valid combos
- Add Ban detection for rate limits
- Lower thread count to reduce request rate
- Enable proxy rotation
Next Steps
Working with Proxies
Add proxy rotation to avoid bans
Browser Automation
Handle Cloudflare and JavaScript-rendered responses