Developers · Test keys
The real engine, off the meter.
A sk_test_ key runs the same validation and patching as a live key. The response says so in a header and in the body, and nothing is counted or stored as a flow.
Two kinds of test key
| Key | Requests | Valid | Where |
|---|---|---|---|
| Instant key | 10 in total | 1 hour | POST /api/developers/instant-key, no account, 10 keys a day per address. |
| Account test key | not metered | until revoked | Created next to your live key; shown under Dashboard → API. |
curl -X POST https://www.invoicenavigator.eu/api/developers/instant-key
Both are rate-limited to 100 requests an hour, regardless of plan.
Test versus live
| sk_test_ | sk_live_ | |
|---|---|---|
| Engine | The same rules, patches and re-validation. | The same. |
| Monthly quota | Not counted. | 100 (Free) or 5,000 (Team) requests. |
| Requests per hour | 100 | 60 (Free) or 100 (Team). |
| Flow record | None: no flowId, no fixWithInput link, no stored XML. | Stored; fixWithInput available when input is needed. |
| Response | X-Test-Mode: true header, meta.testMode: true. | Neither. |
| Webhooks | Payload carries testMode: true. | No testMode field. |
When the hour is used up
HTTP/1.1 429 Too Many Requests
Retry-After: 1800
X-Test-Mode: true
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Test mode rate limit exceeded (100 requests/hour). Use a production key for higher limits."
}
}Wait for Retry-After. Instant keys additionally answer 402 QUOTA_EXCEEDED after their 10 requests and 401 KEY_EXPIRED after the hour.
Webhooks in test mode
A webhookUrl given to POST /v1/validate is called for test keys as well. Filter on the top-level flag.
{
"event": "validation.completed",
"testMode": true,
"timestamp": "…",
"data": { "validationRef": "VAL-…", "isValid": true, "format": "ubl" }
}Switching to live
Replace the key. Endpoints, parameters and response shape are identical; the base URL stays https://www.invoicenavigator.eu/api. Calls to POST /v2/validate-and-fix then count as 2 requests each. The production page lists what to check first.