# Satik developer documentation

> Versioned guides and API reference for integrating the Satik address-verification API.

The public API base URL is https://api.satik.in/v1. Keep secret keys in server-side code.

## Documentation

- [A little precision. In five minutes.](https://satik.in/docs): Satik turns Indian delivery addresses into explainable decisions. Start with a test key, then connect real address validation.
- [Your first address check.](https://satik.in/docs/quickstart): Google sign-in → test key → first request → clear verdict.
- [Keys for your code. Google for you.](https://satik.in/docs/authentication): Dashboard sessions and API keys have separate responsibilities.
- [A verdict you can explain.](https://satik.in/docs/concepts/verdicts): No mystery score. A decision, reasons, and one next step.
- [Understand what changed in an address.](https://satik.in/docs/concepts/address-changes): Corrections, enrichments and confirmation evidence explain the decision.
- [Trace the decision.](https://satik.in/docs/concepts/rule-trace): Understand which Satik rules produced a verification verdict.
- [Every flag has a reason.](https://satik.in/docs/concepts/flags): Understand what needs attention and what to do next. Each reason also has a stable API code for your integration.
- [A location bucket. Not an identity.](https://satik.in/docs/concepts/digipin): DIGIPIN describes a small patch of ground, not a flat, household, or person.
- [What happened after dispatch?](https://satik.in/docs/concepts/outcomes): Delivery outcomes add real-world context to your next address check.
- [Turn a flag into a conversation.](https://satik.in/docs/guides/handling-verify-first): A practical dispatch playbook.
- [Signed updates. Straight to your system.](https://satik.in/docs/guides/webhooks): Receive batch completion, cancellation and quota notices on a public HTTPS endpoint.
- [One list. Many clearer addresses.](https://satik.in/docs/guides/batch-verification): Upload a CSV or queue a batch through the API.
- [Retry safely with idempotency keys.](https://satik.in/docs/guides/idempotency): Send one operation, recover its result, and avoid duplicate verification work.
- [Use a full check where it counts.](https://satik.in/docs/guides/reducing-google-cost): Normalize early. Verify before dispatch.
- [Shopify integration roadmap.](https://satik.in/docs/guides/shopify): The native app is planned; the REST API is available for server-side integrations.
- [Errors with a next step.](https://satik.in/docs/errors): Every API error returns a stable code and a request ID.
- [Plain HTTP. Your language.](https://satik.in/docs/sdks): Use your standard HTTP client. An official SDK is not required.
- [Try an address. See the reasons.](https://satik.in/docs/playground): The sample playground is public; live verification requires your workspace.
- [A small record of better.](https://satik.in/docs/changelog): Product and API changes.
- [API reference](https://satik.in/docs/reference): Browse all public Satik API operations.
- [Verify one address](https://satik.in/docs/reference/verifyAddress): POST /addresses/verify: Test keys accept only documented fixtures. Live keys consume quota. Building-level validation is required for SHIP.
- [Clean and parse an address](https://satik.in/docs/reference/normalizeAddress): POST /addresses/normalize: Clean and parse an address without calling the validation provider. Live keys consume 0.1 verification units; test keys do not consume quota. Test keys are limited to 5 requests per minute.
- [Queue a batch of addresses](https://satik.in/docs/reference/verifyBatch): POST /addresses/verify/batch: Requires a live key; test keys cannot create batches. The plan cap may be lower than 1,000. Register signed callbacks in the workspace.
- [Read batch progress](https://satik.in/docs/reference/getBatch): GET /batches/{batch_id}: Read batch progress
- [Report a delivery outcome](https://satik.in/docs/reference/reportOutcome): POST /outcomes: Requires a live key. Test-key outcomes are not added to delivery history. Duplicate reports for a verification are accepted idempotently.
- [Encode a location](https://satik.in/docs/reference/encodeDigipin): POST /digipin/encode: Encode a location
- [Decode a DIGIPIN](https://satik.in/docs/reference/decodeDigipin): GET /digipin/{digipin}: Decode a DIGIPIN
- [Read monthly usage](https://satik.in/docs/reference/getUsage): GET /usage: Read monthly usage
- [Cancel remaining batch work](https://satik.in/docs/reference/cancelBatch): POST /batches/{batch_id}/cancel: Requires a live key. Idempotently cancels unstarted rows. Started verifications may finish and consume quota; cancelling becomes cancelled after settlement. Completed batches remain completed. No body required.
- [Download batch results](https://satik.in/docs/reference/downloadBatch): GET /batches/{batch_id}/download: Authenticated CSV for completed or cancelled batches. Includes every row with status; cancelled rows have no verification result. Retained for seven days after submission.
- [Shared schemas](https://satik.in/docs/reference/schemas): Inspect reusable request and response schemas.
