Getting started
From sandbox key to first call in three steps.
One bearer token works across every rail. Sandbox keys come prefunded, so you can read a response before talking to anyone.
- 1
Get a sandbox key
Sign up, or call signup directly. The response carries a prefunded test wallet.
curl -X POST https://grappi.ai/v1/signup -d '{"name":"My App"}' # -> { "api_key": "sk_sandbox_...", "balance_minor": 1000, "scopes": [...] } - 2
Authenticate and call
Send your key as
x-api-keyorAuthorization: Bearer. Every write accepts anIdempotency-Keyheader.curl -X POST https://grappi.ai/v1/tax/income \ -H "x-api-key: sk_sandbox_..." \ -H "content-type: application/json" \ -d '{"regime":"new","gross_income_minor":120000000,"salaried":true}' - 3
Handle the error envelope
Every failure is the same stable, machine-readable shape.
{ "error": { "code": "consent_required", "message": "No consent on file", "request_id": "req_..." } }
Money and units
All amounts are integer minor units (paise). ₹1.00 is 100. Reader outputs carry per-field confidence and provenance.
Platform conventions
- Consent-first: data reads are fail-closed on a purpose-coded artefact.
- Prepaid wallet: calls are pre-authorized. Insufficient balance returns
402. - Audit: every call is recorded in an insert-only, hash-chained log.

