Environments
Environmentslink
Infraspeak provides separate environments for development and production use. Understanding the differences helps you build and test integrations safely.
Available Environmentslink
| Environment | Purpose |
|---|---|
| Production | Live data, real operations |
| Sandbox | Testing, development |
Production Environmentlink
The production environment connects to your live Infraspeak data.
Base URL:
https://api.infraspeak.com/v3
Characteristics:
- All operations affect real data.
- Work orders and other events trigger actual notifications.
- Purchase orders process through real workflows.
- Full rate limiting applies (60 requests/min).
When to use:
- Production integrations.
- Live data synchronization.
- Real-time monitoring and alerting.
Sandbox Environmentlink
The sandbox provides a safe space for development and testing.
Base URL:
https://api.sandbox.infraspeak.com/v3
Characteristics:
- Isolated from production data.
- Operations don't trigger real notifications.
- Same rate limits as production.
When to use:
- Initial integration development.
- Testing new features before production.
- Acceptance tests and validation.
Tokens Per Environmentlink
Each environment requires its own Personal Access Token. Tokens generated in production won't work in sandbox, and vice versa.
Switching Environmentslink
Change the base URL in your application configuration and configure the Personal Access Token that grants access to the desired environment.
Best Practiceslink
Use Environment Variableslink
Never hardcode environment URLs or tokens:
# Development (.env.local)
INFRASPEAK_API_URL=https://api.sandbox.infraspeak.com/v3
INFRASPEAK_TOKEN=sandbox_token_here
# Production (.env.production)
INFRASPEAK_API_URL=https://api.infraspeak.com/v3
INFRASPEAK_TOKEN=production_token_here
Validate Before Productionlink
Before deploying to production:
- Test all operations in sandbox first.
- Verify error handling with sandbox data.
- Confirm webhook endpoints receive test events.
- Ensure you handle throttling properly against sandbox when rate limits are exceeded.
Monitor API Usagelink
Track your API calls in both environments to avoid hitting rate limits:
import requests
response = requests.get(
f"{INFRASPEAK_API_URL}/locations",
headers={"Authorization": f"Bearer {INFRASPEAK_TOKEN}"}
)
# Check rate limit headers
remaining = response.headers.get("X-Ratelimit-Remaining")
Environment Paritylink
Both environments maintain feature parity:
- Same API endpoints
- Same request/response formats
- Same authentication mechanisms
- Same rate limiting rules
The only differences are data isolation and the triggering of real-world side effects (notifications, external integrations).