Developers

Documentation

Everything you need to integrate. Your dashboard has the complete field reference and live playground for each API you use.

Quickstart

  1. Create an account and verify your email.
  2. Create a sandbox key under API keys and call any API for free sample data.
  3. Activate access (plan or approval), fund your wallet, then create a live key.
  4. Call the API from your server and handle the response envelope below.
curl
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).

http
Authorization: Bearer pzk_live_xxxxxxxxxxxxxxxx
# or
X-API-Key: pzk_live_xxxxxxxxxxxxxxxx

Keys 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.

json
{
  "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"
  }
}
json
{
  "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.

CodeHTTPMeaning
MISSING_API_KEY401No key in the Authorization or X-API-Key header.
INVALID_API_KEY401The key does not exist.
KEY_REVOKED401The key was revoked or rolled.
KEY_IN_URL400Keys are never accepted in the query string. Roll the key if it was exposed.
IP_NOT_ALLOWED403The calling IP is not on this key's allowlist.
KEY_SCOPE403This key is restricted to other APIs.
ACCOUNT_SUSPENDED403The account is suspended. Contact support.
EMAIL_NOT_VERIFIED403Verify the account email before using live keys.
NOT_SUBSCRIBED403Your account has no access to this API. Activate a plan or request access.
ACCESS_EXPIRED403Your validity period for this API has ended.
ACCESS_SUSPENDED403Access to this API is paused on your account.
QUOTA_EXHAUSTED403All requests included in your plan have been used.
INSUFFICIENT_BALANCE402Wallet balance is lower than the per-request charge.
DAILY_LIMIT_REACHED429Daily cap for this API reached; resets at midnight IST.
RATE_LIMITED429Too many requests per minute. Honour the Retry-After header.
INVALID_PARAMS422A parameter is missing or malformed.
API_NOT_FOUND404No API exists at that path for your account.
API_MAINTENANCE503Scheduled maintenance; retry later.
RECORD_NOT_FOUND404The lookup ran but found no record for the input.
UPSTREAM_TIMEOUT504The data source did not answer in time. Safe to retry.
UPSTREAM_UNAVAILABLE502The data source is temporarily unreachable. Safe to retry.
UPSTREAM_ERROR502The 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.

bash
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…