# Stile Documentation
> Stile is age and identity verification for the internet — one REST API (`https://api.stile.id/v1/`) plus an embeddable widget. Merchants create a verification session server-side with a secret key (`stile_sk_*`), the hosted widget walks the end user through verification (mobile driver's license, document capture, facial age estimation, and more), and a signed webhook confirms the result. Every session runs inside a dashboard-configured workflow (`workflow_id`) that carries the use case, jurisdictions, and methods.
Key facts for integrators:
- Auth: `Authorization: Bearer stile_sk_...` (secret, server-side) — publishable keys (`stile_pk_...`) are frontend-only. One environment: keys carry no test/live segment.
- Create a session: `POST /v1/verification_sessions` with `{ type, workflow_id }`; pass the returned `client_secret` to the widget
- Confirm results via webhooks signed with HMAC-SHA256 (`Stile-Signature: t=...,v1=...` over `{timestamp}.{raw_body}`)
- Widget: `` registers ``; npm `@stile/widget` adds ``, `verify()`, `create()`; npm `@stile/node` is the Node.js API client
- Single live environment with a free tier (100 verifications/month, then billed). For testing, enable sandbox mode on an org: `skip_verification: true` mints instantly-verified sessions, unbilled, no webhook required (capped 500/month)
## Getting Started
- [Quickstart](https://docs.stile.id/getting-started/quickstart): Publish a workflow, drop in the widget, and confirm results with a signed webhook — your first verified session in three steps.
- [Integration Guide](https://docs.stile.id/getting-started/integration-guide): Everything you need to build a production-ready integration — session-url architecture, workflows, compliance checks, returning users, VPN detection, and webhook-gated checkout.
- [Authentication](https://docs.stile.id/getting-started/authentication): How Stile API keys work — publishable vs. secret, sandbox mode, rate limits, and zero-downtime key rotation.
- [Build with AI](https://docs.stile.id/getting-started/llms): Feed the Stile docs to your AI assistant or coding agent — llms.txt, a full-corpus file, and the OpenAPI spec.
## Concepts
- [Workflows](https://docs.stile.id/concepts/workflows): A workflow is the dashboard-configured recipe every verification session runs inside — it decides the use case, the methods, the jurisdictions, and the outcome.
- [Verification Methods](https://docs.stile.id/concepts/verification-methods): The full menu of verification methods a workflow can offer — from government digital credentials to age estimation — and how strong each one is.
- [Glossary](https://docs.stile.id/concepts/glossary): The core Stile terms — workflow, session, client secret, VP token, age tier, and the rest — in one place.
## HTTP API
- [Overview](https://docs.stile.id/api-reference/overview): Base URL, authentication, request and response conventions, pagination, the error object, idempotency, and rate limits — everything shared across the Stile HTTP API.
- [Verification Sessions](https://docs.stile.id/api-reference/verification-sessions): Create, retrieve, cancel, and list verification sessions — the core resource of every Stile integration.
- [Compliance](https://docs.stile.id/api-reference/compliance): Look up regulatory rules by product type and jurisdiction — required age tiers, prohibited products, allowed verification methods, and most-restrictive resolution for mixed carts.
- [Verified Person](https://docs.stile.id/api-reference/verified-person): Look up whether a user already holds a verified credential — on your site or across the Stile network — and skip re-verification for returning users.
- [Risk](https://docs.stile.id/api-reference/risk): Score the fraud risk of an IP, email, phone, or device — standalone, before or alongside a verification session.
- [Webhook Endpoints](https://docs.stile.id/api-reference/webhook-endpoints): Register, manage, and debug the HTTPS endpoints that receive Stile's signed event notifications.
- [Events](https://docs.stile.id/api-reference/events): Events record every significant change in your Stile account — the same objects delivered to your webhook endpoints.
## Guides
- [Webhooks](https://docs.stile.id/guides/webhooks): Receive real-time notifications when verification events occur — endpoint setup, signature verification, retries, deduplication, and local testing.
- [Webhook Signature Verification](https://docs.stile.id/guides/webhook-verification): Verify the Stile-Signature header — three lines on Node.js with @stile/node, complete copy-paste handlers for every other stack.
- [Error Handling](https://docs.stile.id/guides/error-handling): Parse Stile's error envelope, branch on stable error codes, and retry safely with exponential backoff and idempotency keys — in any language, no SDK required.
- [Rate Limits](https://docs.stile.id/guides/rate-limits): Per-key request limits, the rate-limit headers on every response, and how to back off cleanly.
- [Testing & Sandbox](https://docs.stile.id/guides/testing): Build against sandbox mode, simulate verified sessions with skip_verification, test webhooks through a tunnel, and run the going-live checklist.
- [Dashboard](https://docs.stile.id/guides/dashboard): A tour of the Stile dashboard — where you build workflows, manage keys, watch sessions, configure webhooks, and handle billing.
- [Security Best Practices](https://docs.stile.id/guides/security): Webhook-first access control, signature verification, key management, rate limits, and anti-fraud measures for production integrations.
- [Data Retention & Privacy](https://docs.stile.id/guides/data-retention): What Stile stores, what gets purged and when, and how the platform minimizes the PII you ever touch.
- [Returning User Verification](https://docs.stile.id/guides/returning-users): Verify once, reuse many times — VP tokens, credential lookup with OTP, and the strength, age-tier, and expiry rules that decide when a user must re-verify.
- [Desktop → Mobile Handoff](https://docs.stile.id/guides/device-handoff): How the widget moves a verification from a desktop to the user's phone when a step needs hardware the desktop doesn't have — automatically.
- [Trust Reuse](https://docs.stile.id/guides/trust-reuse): Accept verifications a user already completed at other Stile operators — verify once, recognized everywhere.
## SDKs
- [SDKs](https://docs.stile.id/sdks/overview): Two official SDKs — a frontend widget and a server-side Node.js client — plus a language-agnostic HTTP API for everything else.
- [Widget SDK](https://docs.stile.id/sdks/widget): Framework-agnostic web components and JavaScript API for embedding verification in any frontend.
- [Node.js SDK](https://docs.stile.id/sdks/node): The typed Node.js and TypeScript client for the Stile API — resource methods, automatic retries, idempotency, and built-in webhook signature verification.
## More
- [Changelog](https://docs.stile.id/changelog): Notable changes to the Stile API, SDKs, and docs.
## Optional
- [Complete documentation in one file](https://docs.stile.id/llms-full.txt): every page concatenated as markdown — paste it into your AI assistant's context
- [OpenAPI 3.1 spec](https://docs.stile.id/openapi.yaml): machine-readable API schema