Quickstart
- Create an account and verify your email.
- Create a sandbox key under API keys and call any API for free sample data.
- Activate access (plan or approval), fund your wallet, then create a live key.
- Call the API from your server and handle the response envelope below.
curl -X POST https://api.parzivalhub.com/v1/rc-details \
-H "Authorization: Bearer pzk_test_YOUR_SANDBOX_KEY" \
-H "Content-Type: application/json" \
-d '{"vehicle_number":"MH12AB1234"}'Authentication
Every request carries an API key in a header. Keys start with pzk_live_ (real data, billable) or pzk_test_ (sandbox).
Authorization: Bearer pzk_live_xxxxxxxxxxxxxxxx
# or
X-API-Key: pzk_live_xxxxxxxxxxxxxxxxKeys sent in the URL query string are rejected with KEY_IN_URL, because URLs end up in logs and browser history. Keys are shown once at creation and stored by us only as a one-way hash.
Requests
Base URL: https://api.parzivalhub.com/v1. Each API lives at /v1/<api-slug>. Unless an API says otherwise, send POST with a JSON body; parameter names are listed per API. Inputs such as vehicle numbers are normalised for you (case, spaces and dashes don't matter).
Responses
All APIs share one envelope. Check success first, keep request_id for support, and read billing in meta.
{
"success": true,
"request_id": "req_4fG8…",
"status": "found",
"data": {
"…": "API-specific fields"
},
"meta": {
"api": "rc-details",
"latency_ms": 412,
"charged": 0,
"quota_remaining": 980,
"access_expires_at": "2026-12-31T18:29:59Z"
}
}{
"success": false,
"request_id": "req_9xP2…",
"error": {
"code": "RECORD_NOT_FOUND",
"message": "No record was found for this input."
}
}Fields the source does not have are returned as null. Dates are ISO YYYY-MM-DD. Personally identifying values may be partially masked depending on your access.
Errors
Errors use standard HTTP status codes plus a stable error.code. Errors are never charged.
| Code | HTTP | Meaning |
|---|---|---|
| MISSING_API_KEY | 401 | No key in the Authorization or X-API-Key header. |
| INVALID_API_KEY | 401 | The key does not exist. |
| KEY_REVOKED | 401 | The key was revoked or rolled. |
| KEY_IN_URL | 400 | Keys are never accepted in the query string. Roll the key if it was exposed. |
| IP_NOT_ALLOWED | 403 | The calling IP is not on this key's allowlist. |
| KEY_SCOPE | 403 | This key is restricted to other APIs. |
| ACCOUNT_SUSPENDED | 403 | The account is suspended. Contact support. |
| EMAIL_NOT_VERIFIED | 403 | Verify the account email before using live keys. |
| NOT_SUBSCRIBED | 403 | Your account has no access to this API. Activate a plan or request access. |
| ACCESS_EXPIRED | 403 | Your validity period for this API has ended. |
| ACCESS_SUSPENDED | 403 | Access to this API is paused on your account. |
| QUOTA_EXHAUSTED | 403 | All requests included in your plan have been used. |
| INSUFFICIENT_BALANCE | 402 | Wallet balance is lower than the per-request charge. |
| DAILY_LIMIT_REACHED | 429 | Daily cap for this API reached; resets at midnight IST. |
| RATE_LIMITED | 429 | Too many requests per minute. Honour the Retry-After header. |
| INVALID_PARAMS | 422 | A parameter is missing or malformed. |
| API_NOT_FOUND | 404 | No API exists at that path for your account. |
| API_MAINTENANCE | 503 | Scheduled maintenance; retry later. |
| RECORD_NOT_FOUND | 404 | The lookup ran but found no record for the input. |
| UPSTREAM_TIMEOUT | 504 | The data source did not answer in time. Safe to retry. |
| UPSTREAM_UNAVAILABLE | 502 | The data source is temporarily unreachable. Safe to retry. |
| UPSTREAM_ERROR | 502 | The data source returned an error. Safe to retry. |
Rate limits & quotas
Each key has a per-minute limit per API, and each account has an overall per-minute limit. Exceeding either returns 429 RATE_LIMITED with a Retry-After header. Plans can also carry a total request quota and a daily cap (resets at midnight IST). Use exponential backoff for 429, 502 and 504.
Sandbox
Sandbox keys (pzk_test_) return the documented sample response for any API, instantly and free, so you can build and test parsing before going live. Sandbox responses include "sandbox": true.
Billing & validity
Your account has a prepaid wallet and per-API access. Access is granted by validity plans (for example 30 or 90 days with an included number of requests) or by custom packages arranged with our team. When an API carries a per-request rate, it is deducted from your wallet only when the lookup succeeds; the exact amount is returned in meta.charged and listed in your transaction history. Rates are shown in your dashboard.
Account endpoint
Check your wallet balance and the validity and remaining quota of each API programmatically. Free; limited to 30 calls per minute.
curl https://api.parzivalhub.com/v1/me -H "Authorization: Bearer pzk_live_YOUR_KEY"Security checklist
- Call the API only from your servers. Never embed a key in a web page or mobile app.
- Restrict live keys to your server IPs and to the APIs each service needs.
- Use separate keys per environment and service; roll a key immediately if it may have leaked.
- Turn on two-factor authentication for every dashboard user.
- Store only the fields you need, and only for as long as your purpose requires.
API reference
Loading…