Developer overview
Hilt gives developers a clean way to automate the same merchant workflow the dashboard already runs. That usually means:- create or update products from your backend
- open buyer sessions through hosted checkout
- keep the
payment_idas your durable correlation key - read memberships, receipts, and support state after payment
Reference and tooling
Hilt does publish a machine-readable API contract. Use whichever surface fits your workflow:- OpenAPI spec:
https://api.hilt.so/v1/openapi.json - Swagger UI:
https://api.hilt.so/v1/docs - Redoc:
https://api.hilt.so/v1/redoc
- products
- hosted checkout
- payments
- memberships
- receipts
- support
Start from a real merchant workspace
The fastest reliable path is:- launch the first flow in the dashboard
- create an API key for the workspace
- automate products and checkout from your backend
- read post-payment state from Hilt instead of rebuilding it elsewhere
Use the right auth surface
For merchant-only routes, Hilt accepts either a merchant session token or an API key.| Surface | Typical auth | Best use |
|---|---|---|
| Public checkout payload and buyer session start | no auth | Buyer-facing hosted checkout |
| Merchant backend or bot automation | X-Hilt-Key | Server-to-server integrations |
| Dashboard-session tooling | Authorization: Bearer JWT_TOKEN | Merchant browser workflows and session-assisted tools |
readexecuteadminbilling
Public contract at a glance
| Area | What you do there | Main routes |
|---|---|---|
| Products | Create, update, archive, and inspect merchant offers | /v1/products |
| Hosted checkout | Read buyer payloads and start buyer sessions | /v1/products/p/{slug}, /connect, /resolve-handoff |
| Payments | Confirm or poll payment state | /v1/pay/confirm, /v1/payments/{payment_id} |
| Memberships | Read access state and run follow-up actions | /v1/memberships* |
| Receipts | Read proof and public verification links | /v1/receipts, /v1/receipt/{id} |
| Support | Open and manage issue threads tied to the payment trail | /v1/support/tickets* |
Durable identifiers
These are the ids worth keeping in your own system:product_idslugpayment_idmembership_idreceipt_idticket_id
payment_id. It is the clean join between buyer checkout, payment state, membership state, receipts, and support.
Rate limits
Hilt returns standard rate-limit headers on API responses:X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetRetry-Afteron429
- unauthenticated public buyer routes:
120requests per minute - Free:
60requests per minute - Starter:
120requests per minute - Growth:
300requests per minute - Scale:
900requests per minute - Enterprise: custom or effectively unlimited by contract
When to use the dashboard, API, or CLI
| Surface | Best for |
|---|---|
| Dashboard | First launch, checkout branding, commercial setup, daily merchant operations |
| API | Backend automation, bots, signed handoff links, payment-state reads, ledger lookups |
| CLI | Fast terminal lookups, repeatable support workflows, light automation scripts |
Recommended implementation sequence
1. Launch one real product
Start with a dashboard template or create the same offer fromPOST /v1/products.
2. Read it through the API
UseGET /v1/products and GET /v1/products/{product_id} to make sure your backend sees the same commercial object the merchant sees.
3. Start the buyer session
UsePOST /v1/products/p/{slug}/connect to get the canonical payment_id.
4. Keep the payment id everywhere
That id is the join between:- checkout state
- payment status
- memberships
- receipts
- support tickets
5. Read Hilt after payment
Once the buyer has paid, use Hilt as the source of truth for:- final payment state
- access state
- proof and verification
- support follow-up
What a serious backend usually owns
Hilt works best when your backend owns:- product creation or updates when needed
- signed handoff link generation
- polling and post-payment reads
- your own correlation between app users and Hilt ids
- payment settlement state
- membership status
- receipt proof
- support case history

