Hilt Pay API
Hilt Pay API lets software turn a stablecoin payment into an access decision. Use it when an API, AI tool, bot, dataset, software feature, private product, or paid agent needs:- a payment session
- an x402
402 Payment Requiredresponse - Solana USDC settlement
- a receipt and proof trail
- an entitlement check
- webhook events
- subscription state for recurring access
- support context that can be fetched through the API
/v1/access.
This is the Hilt surface for paid API access and agentic payments: a protected resource can return a payment requirement, the buyer or agent can complete payment, and your backend can serve only after Hilt entitlement state is active.
Current public scope
Hilt Pay API is live with Solana USDC settlement. x402 is the protected-resource protocol shape for API and agent flows. Treat it as the HTTP402 Payment Required contract your resource can return when access is missing. The live public settlement rail is Solana USDC; create live sessions only from rails returned as available by Hilt for that product and account.
Additional settlement rails will have their own setup docs when they are publicly available.
Route overview
Use the/v1/access namespace for Hilt Pay API objects:
| Area | Routes | Use when |
|---|---|---|
| Rails | GET /rails, GET /rail-settings, PUT /rail-settings/{rail_id} | list available payment paths and configure the merchant payout wallet for Solana USDC |
| Apps | POST /apps | create an app boundary for an API, bot, agent tool, dataset, or software product |
| Products | POST /products, GET /products/available-rails, GET /products/{id}/available-rails | create one-off or recurring access products and show only supported payment options |
| Readiness | GET /setup/readiness | check product, rail, webhook, billing, and live configuration before real traffic |
| Sessions | POST /payment-sessions | start a buyer or agent payment flow |
| Sandbox | POST /sandbox/payment-sessions, POST /sandbox/payment-sessions/{sandbox_session_id}/confirm | test the same access object shapes without live money |
| Entitlements | POST /entitlements/check, GET /entitlements/{id} | decide whether to serve a protected resource |
| Proofs | POST /payment-proofs | submit payment evidence when your flow needs an explicit proof step |
| Webhooks | POST /webhooks | send signed events to your backend after payment, receipt, membership, delivery, or subscription changes |
| Native subscriptions | GET /native-subscriptions/{authorization_id}, POST /native-subscriptions/{authorization_id}/cancel-intent, POST /native-subscriptions/{authorization_id}/cancel-confirm | read and cancel Solana USDC automatic renewal authorizations |
| Agent setup | POST /agent-bootstrap, GET /agent-bootstrap/{setup_intent_id}/status, POST /agent-bootstrap/{setup_intent_id}/manifest, POST /agent-bootstrap/{setup_intent_id}/approve | let an agent prepare setup while the owner approves billing, payout, and live credentials |
| API billing | GET /billing/entitlement, POST /billing/checkout/stripe | manage Hilt Pay API plan access |
How the protected-resource flow works
- Your product receives a request for a paid resource.
- Your backend calls Hilt to check whether the customer has access.
- If access is missing, your backend returns HTTP
402 Payment Required. - The
402body includes the Hilt payment requirement or checkout handoff your flow supports. - The buyer or buyer-agent completes the Solana USDC payment path.
- Hilt verifies the payment, records the receipt, updates entitlement state, and emits webhooks when live settlement succeeds.
- The requester retries the resource.
- Your backend serves the resource only after Hilt returns
has_access: true.
Create an app
Configure Solana USDC settlement
Create a product
Check setup readiness
Check access before serving a resource
has_access is false, return HTTP 402 with the payment requirement or checkout handoff your flow supports.
This call is the runtime access gate for paid APIs, AI tools, private datasets, bots, and agentic payment flows. Do not replace it with a wallet signature, transaction hash, or client-side claim.
Create a payment session
payment_session.idpayment_session.statuspayment_session.checkout_urlwhen the flow uses hosted checkoutpayment_session.payment_requirementwhen the flow is protocol-basedpending_entitlementrailpayment_session_options
checkout_url for hosted Solana USDC checkout handoff. Use payment_requirement only when the response includes a protocol requirement for your protected-resource flow.
Return HTTP 402
Your API can return an x402-shaped Hilt payment requirement when your product is using the protected-resource protocol path:Submit proof when your flow needs it
has_access becomes true.
Native subscriptions
Hilt Pay API supports recurring products through native Solana subscription setup. For the complete merchant and API guide, see Native subscriptions. Use this for:- paid APIs
- AI tools with monthly access
- subscription datasets
- recurring bot access
- private software subscriptions
- paid communities that need automatic access periods
Native subscription quickstart
- Create a recurring product with
billing_model: "recurring",renewal_mode: "solana_native_subscription",billing_interval_days, andcancel_at_period_end. - Start a payment session for that product with
rail: "solana_usdc". - Send the buyer to the returned
checkout_url, or return the protocol requirement if your product is using the protected-resource path and Hilt returned one. - After the buyer signs and the first payment succeeds, check access with
POST /v1/access/entitlements/check. - Store the Hilt identifiers you need for support: entitlement id, payment id, receipt id, and native subscription authorization id when present in the Hilt response or webhook payload.
- Drive your own access decision from Hilt entitlement state, not from a wallet signature alone.
- the buyer or merchant can stop future collection
- access can remain active until the paid-through date
- Hilt records cancellation and subscription state
- your product reads the entitlement state through the same access check
immediate_revoke is false, access can remain valid until the current paid-through date. Keep using entitlement checks to decide what the buyer can access.
Webhooks
Sandbox sessions
Use sandbox sessions to test the integration without live money.- denied access
- pending access
- allowed access
- webhook consumer testing
- repeated SDK and Postman checks
Agent setup
Agents can prepare the setup before the owner approves live use.- app
- product
- billing model
- protected resource
- webhook destination
- settlement rail
- owner approval handoff
Pricing
Hilt Pay API has separate pricing from Hilt Pay Workspace:| Tier | Monthly | Yearly | Solana USDC fee |
|---|---|---|---|
| Sandbox | $0 | $0 | Test mode only |
| Starter | $79 | $790 | 1.00% |
| Growth | $349 | $3,490 | 0.70% |
| Scale | $1,250 | $12,500 | 0.45% |
| Enterprise | Custom | Custom | Custom |

