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

    Authenticate and call

    Send your key as x-api-key or Authorization: Bearer. Every write accepts an Idempotency-Key header.

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