Getting Started
Environments
Environments separate your API usage across the stages of your development workflow: keys, blocklists, webhooks, and logs are scoped to an environment, so testing never disturbs your production setup.
The three environments
- Production: your live, customer-facing application
- Staging: pre-production testing
- Development: local development and testing
Each API key belongs to exactly one environment, and every request made with that key is associated with it. You never specify the environment in a request; the key determines it.
All three environments use the same production API infrastructure and draw on the same monthly quota. Environments provide organizational separation, not infrastructure separation.
What is separated
| Setting | Scope |
|---|---|
| Blocklist entries | Per environment |
| Gates and their rules | Per environment |
| Webhook subscriptions and their configuration | Per environment |
| Usage analytics and logs | Per environment |
| API keys | Per environment |
| API endpoints and response data | Shared |
| Monthly credit quota | Shared |
| Rate limit counters | Shared |
| Plan features | Shared |
Two consequences are worth calling out. A domain added to your blocklist with a development key has no effect on production traffic, and a domain blocklisted in production has none on development. And because webhook subscriptions are per environment, each one can point somewhere different: production at your live system, development at a local tunnel or testing tool.
A gate is scoped the same way. A key only sees gates in its own environment, so calling a production gate with a development key returns 404 gate_not_found.
Creating an environment-specific key
In your UserCheck dashboard:
- Go to API Keys
- Click Create New Key
- Set the Name (e.g., "My App")
- Select the Environment
- Save the key