How to test integrations safely - the test environment, simulated scenarios, fixtures, and triggering events on demand.
Meridian's test environment is a full sandbox: real API behavior, fake data, and controls for simulating scenarios you can't easily produce on demand.
api.meridian.dev/v2 - same code paths as live.mrnd_test_ keys that cannot touch live resources, ever.environment: "test".Some behaviors are hard to trigger organically. Test mode adds control endpoints under /v2/simulate:
curl -X POST https://api.meridian.dev/v2/simulate/events \
-H "Authorization: Bearer $MERIDIAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "prj_9kLm2xVb7nQe",
"type": "project.updated"
}'Creates a real evt_ event in test - it flows through the event bus and delivers to your subscribed endpoints exactly like a genuine one. Use it to test webhook handlers end-to-end without building the feature that emits the event.
curl -X POST https://api.meridian.dev/v2/simulate/deliveries \
-d '{"endpoint_id": "wh_2nQ8kLm4xP", "response_status": 500}' \
-H "Authorization: Bearer $MERIDIAN_API_KEY"response_status accepts 2xx, 4xx, 5xx, or timeout - exercises your retry, alerting, and dead-letter handling.
For repeatable CI, the examples repo ships fixture payloads you can replay:
meridian simulate delivery --fixture fixtures/project-updated.jsonprj_, evt_) - the environment distinguishes them, not the ID format.environment: "test" - assert on it in handlers to reject accidental live traffic.Test mode allows load testing within the test rate limit (600 req/min). For sustained higher-throughput tests, contact support for a temporary quota bump - see Load testing.