Test mode lets you build your integration against predictable, deterministic responses without consuming your monthly validation quota.
Test vs live keys
| Test key | Live key | |
|---|---|---|
| Prefix | fidro_test_... |
fidro_live_... |
| Data | Predefined scenarios | Real validation |
| Quota | Does not count | Counts toward monthly limit |
| Use for | Development, CI/CD, staging | Production |
Predefined test scenarios
Use these email addresses with your test key to simulate specific outcomes:
| Risk score | Recommendation | |
|---|---|---|
safe@test.fidro.io |
5 | allow |
risky@test.fidro.io |
55 | review |
dangerous@test.fidro.io |
85 | block |
disposable@test.fidro.io |
72 | block |
vpn@test.fidro.io |
45 | review |
These test emails always return the same scores, making them ideal for automated tests and CI pipelines.
Test IPs
| IP | Scenario |
|---|---|
203.0.113.1 |
Clean residential IP |
198.51.100.1 |
VPN/proxy detected |
192.0.2.1 |
Tor exit node |
Writing integration tests
// PHPUnit example
public function test_blocks_high_risk_signups()
{
// Use test API key in your test environment
$response = $this->post('/register', [
'email' => 'dangerous@test.fidro.io',
'password' => 'SecurePassword123',
]);
$response->assertSessionHasErrors('email');
$this->assertDatabaseMissing('users', [
'email' => 'dangerous@test.fidro.io',
]);
}
Switching to live
When you're ready to go to production, swap your test key for a live key in your environment variables. No code changes needed — the API behaves identically, just with real data.