# Alyte > Sell to AI shopping agents — safely. Alyte enforces the buyer's mandate server-side and settles on your own PSP. - [What Alyte does](https://alyte.mintlify.app/index.md): Sell tickets to AI shopping agents — with the buyer's limits enforced server-side and money settling on your own PSP. - [Getting access](https://alyte.mintlify.app/guides/getting-access.md): How a merchant gets a console login, an API token, and which environment to point at. - [Quickstart](https://alyte.mintlify.app/guides/quickstart.md): Shop live and sellable in five calls. - [Your first integration](https://alyte.mintlify.app/guides/first-integration.md): The shortest path to a working sale: hand off, get paid, fulfil, and diagnose it yourself when something breaks - [Bring your own auth](https://alyte.mintlify.app/guides/buyer-sessions.md): Your users, your login, your database — Alyte only needs an attestation. - [Embedded authorize](https://alyte.mintlify.app/guides/embedded-authorize.md): Open the agent-authorization page in a modal on your own site — allowlist-framed, origin-checked messaging, no redirect. - [Conversational shopfront](https://alyte.mintlify.app/guides/conversational-shopfront.md): Wire a chat assistant to agent-governed buying — the chat proposes, the buyer disposes - [Test your integration](https://alyte.mintlify.app/guides/self-test.md): Prove your wiring works with one API call — no browser, no test purchase - [Inventory & fulfilment](https://alyte.mintlify.app/guides/inventory-and-fulfilment.md): Who owns the ticket count, how to fulfil agent sales, and the polling contract — for merchants with their own inventory system. - [Webhooks](https://alyte.mintlify.app/guides/webhooks.md): Signed payment.settled push to your server — polling becomes the fallback - [What an agent purchase actually does](https://alyte.mintlify.app/guides/lifecycle.md): Every state a purchase passes through, the exact strings we emit, and how to tell the cases apart - [Errors](https://alyte.mintlify.app/guides/errors.md): Stable machine-readable codes; retryable and terminal failures are distinguished — never normalize them. - [The agent buy path](https://alyte.mintlify.app/guides/agent-buy.md): Discover → quote → hold → confirm. No amounts are ever sent — the agent pays a locked quote, inside the buyer's mandate. - [Getting discovered](https://alyte.mintlify.app/guides/discovery.md): Opt in, and agents can find what you sell — a public shop window, an agent-readable product feed, and structured page data. - [List merchants (tenant-scoped catalogue)](https://alyte.mintlify.app/api-reference/catalog/list-merchants-tenant-scoped-catalogue.md) - [Fetch one merchant by id](https://alyte.mintlify.app/api-reference/catalog/fetch-one-merchant-by-id.md) - [List the vaulted instruments the agent may spend from](https://alyte.mintlify.app/api-reference/catalog/list-the-vaulted-instruments-the-agent-may-spend-from.md) - [A merchant's events + tiers (with availability)](https://alyte.mintlify.app/api-reference/catalog/a-merchants-events-+-tiers-with-availability.md) - [One-shot authorize a payment (mandate-gated)](https://alyte.mintlify.app/api-reference/payments/one-shot-authorize-a-payment-mandate-gated.md) - [One-shot deterministic checkout by SKU (mandate-gated · 201 authorized · 402 refused)](https://alyte.mintlify.app/api-reference/payments/one-shot-deterministic-checkout-by-sku-mandate-gated-·-201-authorized-·-402-refused.md) - [Fetch a payment result (tenant-scoped)](https://alyte.mintlify.app/api-reference/payments/fetch-a-payment-result-tenant-scoped.md) - [Run the in-process Alyte agent over a natural-language goal (needs ANTHROPIC_API_KEY)](https://alyte.mintlify.app/api-reference/payments/run-the-in-process-alyte-agent-over-a-natural-language-goal-needs-anthropic_api_key.md) - [Lock a price (price-locked quote, has a TTL)](https://alyte.mintlify.app/api-reference/ticketing/lock-a-price-price-locked-quote-has-a-ttl.md) - [Reserve (oversell-proof hold on a tier)](https://alyte.mintlify.app/api-reference/ticketing/reserve-oversell-proof-hold-on-a-tier.md) - [Confirm — pay the locked quote total, confirm the hold (201 settled · 202 SCA · 402 refused)](https://alyte.mintlify.app/api-reference/ticketing/confirm-—-pay-the-locked-quote-total-confirm-the-hold-201-settled-·-202-sca-·-402-refused.md) - [Resolve a pending SCA challenge and resume](https://alyte.mintlify.app/api-reference/ticketing/resolve-a-pending-sca-challenge-and-resume.md) - [A2A JSON-RPC message/send — invoke the Alyte agent as a peer-agent skill (agent JWT, agent:run)](https://alyte.mintlify.app/api-reference/protocols/a2a-json-rpc-messagesend-—-invoke-the-alyte-agent-as-a-peer-agent-skill-agent-jwt-agent:run.md) - [MCP endpoint (Streamable HTTP) — the same buy-path tools over the Model Context Protocol (agent JWT, agent:run)](https://alyte.mintlify.app/api-reference/protocols/mcp-endpoint-streamable-http-—-the-same-buy-path-tools-over-the-model-context-protocol-agent-jwt-agent:run.md) - [Create a checkout session (quote + reserve a real held seat)](https://alyte.mintlify.app/api-reference/acp/create-a-checkout-session-quote-+-reserve-a-real-held-seat.md) - [Retrieve session state](https://alyte.mintlify.app/api-reference/acp/retrieve-session-state.md) - [Update a session (change quantity → re-quote/reserve)](https://alyte.mintlify.app/api-reference/acp/update-a-session-change-quantity-→-re-quotereserve.md) - [Complete — charge the shared payment token via the merchant PSP (confirm)](https://alyte.mintlify.app/api-reference/acp/complete-—-charge-the-shared-payment-token-via-the-merchant-psp-confirm.md) - [Cancel a session (release the hold)](https://alyte.mintlify.app/api-reference/acp/cancel-a-session-release-the-hold.md) - [VIC purchase-initiate: buy a tier under a Visa Intelligent Commerce mandate (mandate governs spend server-side)](https://alyte.mintlify.app/api-reference/vic/vic-purchase-initiate:-buy-a-tier-under-a-visa-intelligent-commerce-mandate-mandate-governs-spend-server-side.md) - [Network signed-mandate purchase: buy a tier under a signature-verified network mandate (VIC / Mastercard Agent Pay shape)](https://alyte.mintlify.app/api-reference/signed-mandate/network-signed-mandate-purchase:-buy-a-tier-under-a-signature-verified-network-mandate-vic-mastercard-agent-pay-shape.md) - [Request a sign-in link for a shop — emails a single-use magic link (returned inline outside production)](https://alyte.mintlify.app/api-reference/buyer/request-a-sign-in-link-for-a-shop-—-emails-a-single-use-magic-link-returned-inline-outside-production.md) - [Verify the emailed 6-digit sign-in code (WorkOS Magic Auth) — sets the buyer session cookie](https://alyte.mintlify.app/api-reference/buyer/verify-the-emailed-6-digit-sign-in-code-workos-magic-auth-—-sets-the-buyer-session-cookie.md) - [The signed-in buyer + the shop their session is locked to](https://alyte.mintlify.app/api-reference/buyer/the-signed-in-buyer-+-the-shop-their-session-is-locked-to.md) - [The session shop's events + tiers (buyer view)](https://alyte.mintlify.app/api-reference/buyer/the-session-shops-events-+-tiers-buyer-view.md) - [Begin adding a card — creates a setup on the SHOP'S OWN payment provider; returns the client secret + publishable key. No card data crosses this API.](https://alyte.mintlify.app/api-reference/buyer/begin-adding-a-card-—-creates-a-setup-on-the-shops-own-payment-provider;-returns-the-client-secret-+-publishable-key-no-card-data-crosses-this-api.md) - [Finish adding a card — re-verifies the capture session SERVER-SIDE with the provider and stores only the reference (scheme + last4), bound to this buyer](https://alyte.mintlify.app/api-reference/buyer/finish-adding-a-card-—-re-verifies-the-capture-session-server-side-with-the-provider-and-stores-only-the-reference-scheme-+-last4-bound-to-this-buyer.md) - [Saved payment methods usable by a created agent (opaque tokens, never card data)](https://alyte.mintlify.app/api-reference/buyer/saved-payment-methods-usable-by-a-created-agent-opaque-tokens-never-card-data.md) - [Active agents in this shop's registry (picker data) — names + keyids only](https://alyte.mintlify.app/api-reference/buyer/active-agents-in-this-shops-registry-picker-data-—-names-+-keyids-only.md) - [How each agent platform can be used at this shop: connect (registry action) / available (platform lane live, act there) / not_yet](https://alyte.mintlify.app/api-reference/buyer/how-each-agent-platform-can-be-used-at-this-shop:-connect-registry-action-available-platform-lane-live-act-there-not_yet.md) - [MY agents with their mandates (owner-filtered server-side)](https://alyte.mintlify.app/api-reference/buyer/my-agents-with-their-mandates-owner-filtered-server-side.md) - [Create an agent (with a saved payment method) or bring one (registry keyid; no instrument — its credential arrives per-charge)](https://alyte.mintlify.app/api-reference/buyer/create-an-agent-with-a-saved-payment-method-or-bring-one-registry-keyid;-no-instrument-—-its-credential-arrives-per-charge.md) - [Grant a mandate to one of your agents — scope.merchants is locked server-side to the shop your session is for](https://alyte.mintlify.app/api-reference/buyer/grant-a-mandate-to-one-of-your-agents-—-scopemerchants-is-locked-server-side-to-the-shop-your-session-is-for.md) - [Point an agent at a different saved card (owner-bound; the agent's mandates are preserved)](https://alyte.mintlify.app/api-reference/buyer/point-an-agent-at-a-different-saved-card-owner-bound;-the-agents-mandates-are-preserved.md) - [Set (or clear with capMinor: null) a spending ceiling on one of your payment methods — caps the TOTAL you can grant across all agents using it](https://alyte.mintlify.app/api-reference/buyer/set-or-clear-with-capminor:-null-a-spending-ceiling-on-one-of-your-payment-methods-—-caps-the-total-you-can-grant-across-all-agents-using-it.md) - [Your instrument ceilings with how much of each is already granted](https://alyte.mintlify.app/api-reference/buyer/your-instrument-ceilings-with-how-much-of-each-is-already-granted.md) - [Buy a tier NOW with one of your agents — quote → hold → confirm under the agent's mandate](https://alyte.mintlify.app/api-reference/buyer/buy-a-tier-now-with-one-of-your-agents-—-quote-→-hold-→-confirm-under-the-agents-mandate.md) - [Your queued/fired watches with their outcomes](https://alyte.mintlify.app/api-reference/buyer/your-queuedfired-watches-with-their-outcomes.md) - [Queue one of your agents to buy a tier the moment it goes on sale — fired under the agent's mandate](https://alyte.mintlify.app/api-reference/buyer/queue-one-of-your-agents-to-buy-a-tier-the-moment-it-goes-on-sale-—-fired-under-the-agents-mandate.md) - [Cancel a queued watch (owner-bound; fired/failed are history)](https://alyte.mintlify.app/api-reference/buyer/cancel-a-queued-watch-owner-bound;-firedfailed-are-history.md) - [Revoke a mandate I granted (immediate, server-side)](https://alyte.mintlify.app/api-reference/buyer/revoke-a-mandate-i-granted-immediate-server-side.md) - [Mint a buyer session for YOUR authenticated user — returns a single-use redeem link to drop them into the shop's authorize page (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/mint-a-buyer-session-for-your-authenticated-user-—-returns-a-single-use-redeem-link-to-drop-them-into-the-shops-authorize-page-api-token-merchant:write.md) - [The tenant's full catalog — shops → events → tiers, with restriction fields (API token, merchant:read)](https://alyte.mintlify.app/api-reference/integration/the-tenants-full-catalog-—-shops-→-events-→-tiers-with-restriction-fields-api-token-merchant:read.md) - [Create a shop (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/create-a-shop-api-token-merchant:write.md) - [Delete a shop — cascades its events, tiers, and PSP links, and shreds the PSP secret refs (API token, merchant:write). Irreversible.](https://alyte.mintlify.app/api-reference/integration/delete-a-shop-—-cascades-its-events-tiers-and-psp-links-and-shreds-the-psp-secret-refs-api-token-merchant:write-irreversible.md) - [Update a shop's public settings — discovery opt-in, shop image, and the embed origin (the ONE partner origin allowed to frame the authorize page) (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/update-a-shops-public-settings-—-discovery-opt-in-shop-image-and-the-embed-origin-the-one-partner-origin-allowed-to-frame-the-authorize-page-api-token-merchant:write.md) - [Publish an event (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/publish-an-event-api-token-merchant:write.md) - [Publish a ticket tier (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/publish-a-ticket-tier-api-token-merchant:write.md) - [Delete a tier (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/delete-a-tier-api-token-merchant:write.md) - [Update a tier — price/stock + the server-enforced restrictions (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/update-a-tier-—-pricestock-+-the-server-enforced-restrictions-api-token-merchant:write.md) - [Delete an event and its tiers (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/delete-an-event-and-its-tiers-api-token-merchant:write.md) - [A shop's PSP links — refs and public fields only, never a secret (API token, merchant:read)](https://alyte.mintlify.app/api-reference/integration/a-shops-psp-links-—-refs-and-public-fields-only-never-a-secret-api-token-merchant:read.md) - [Link a PSP to a shop — captures the API key to the secret store, ref only persisted (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/link-a-psp-to-a-shop-—-captures-the-api-key-to-the-secret-store-ref-only-persisted-api-token-merchant:write.md) - [The tenant's payments, newest first by createdAt (API token, merchant:read). Poll with ?since= to fetch only newer rows; dedupe by intentId.](https://alyte.mintlify.app/api-reference/integration/the-tenants-payments-newest-first-by-createdat-api-token-merchant:read-poll-with-?since=-to-fetch-only-newer-rows;-dedupe-by-intentid.md) - [One payment with its full durable event trail (API token, merchant:read)](https://alyte.mintlify.app/api-reference/integration/one-payment-with-its-full-durable-event-trail-api-token-merchant:read.md) - [List webhook endpoints — never includes secrets (API token, merchant:read)](https://alyte.mintlify.app/api-reference/integration/list-webhook-endpoints-—-never-includes-secrets-api-token-merchant:read.md) - [Register a webhook endpoint for payment.settled push (API token, merchant:write). The signing secret is returned ONCE — store it like a password. Delivery is at-least-once; dedupe by eventId (the intentId). Verify: alyte-signature: t=,v1=hex(hmac_sha256(secret, ".")).](https://alyte.mintlify.app/api-reference/integration/register-a-webhook-endpoint-for-paymentsettled-push-api-token-merchant:write-the-signing-secret-is-returned-once-—-store-it-like-a-password-delivery-is-at-least-once;-dedupe-by-eventid-the-intentid-verify:-alyte-signature:-t=v1=hexhmac_sha256secret-"".md) - [Disable a webhook endpoint — delivery stops immediately (API token, merchant:write)](https://alyte.mintlify.app/api-reference/integration/disable-a-webhook-endpoint-—-delivery-stops-immediately-api-token-merchant:write.md) - [Rotate an endpoint's signing secret — the new secret is returned ONCE; the old one stops verifying immediately (API token, merchant:write). Use after a secret is exposed; the endpoint id and any queued retries are preserved.](https://alyte.mintlify.app/api-reference/integration/rotate-an-endpoints-signing-secret-—-the-new-secret-is-returned-once;-the-old-one-stops-verifying-immediately-api-token-merchant:write-use-after-a-secret-is-exposed;-the-endpoint-id-and-any-queued-retries-are-preserved.md) - [Send a TEST delivery to this endpoint — same signed pipeline as a real event, so you can verify your signature check before a live purchase (API token, merchant:write). Event type is `webhook.test` and carries NO payment data: never fulfil on it.](https://alyte.mintlify.app/api-reference/integration/send-a-test-delivery-to-this-endpoint-—-same-signed-pipeline-as-a-real-event-so-you-can-verify-your-signature-check-before-a-live-purchase-api-token-merchant:write-event-type-is-`webhooktest`-and-carries-no-payment-data:-never-fulfil-on-it.md) - [What happened to a queued purchase (API token, merchant:read). Answers the case GET /payments/{intentId} cannot: most refusals happen BEFORE a payment exists, so a failed watch has no intentId. Returns the watch, a plain-language outcome, the typed refusal reason, and the linked payment when one was produced. `deliveries` lists every webhook attempt for this watch (status/attempts/lastError), so you can tell a never-sent event from one your endpoint rejected. Note merchantFulfilment/buyerNotified are always `unknown` — Alyte records webhook DELIVERY, not whether you issued a ticket.](https://alyte.mintlify.app/api-reference/integration/what-happened-to-a-queued-purchase-api-token-merchant:read-answers-the-case-get-payments-cannot:-most-refusals-happen-before-a-payment-exists-so-a-failed-watch-has-no-intentid-returns-the-watch-a-plain-language-outcome-the-typed-refusal-reason-and-the-linked-payment-when-one-was-produced-`deliveries`-lists-every-webhook-attempt-for-this-watch-statusattemptslasterror-so-you-can-tell-a-never-sent-event-from-one-your-endpoint-rejected-note-merchantfulfilmentbuyernotified-are-always-`unknown`-—-alyte-records-webhook-delivery-not-whether-you-issued-a-ticket.md) - [DRILL-DOWN behind the purchase-outcome counts (API token, merchant:read). The insights tiles say how many attempts succeeded or were refused; this says WHICH, with the tier, quantity, typed refusal reason and timestamp — so "Failed or refused: 3" can be investigated without asking us to query the database. Optional ?outcome=successful|failed|pending filters. Reporting only: no buyer identity, no agent id, no card data. A `pending` row with resolvedWithoutPayment=true is NOT still in flight — its hold expired or was released and no payment was ever created.](https://alyte.mintlify.app/api-reference/integration/drill-down-behind-the-purchase-outcome-counts-api-token-merchant:read-the-insights-tiles-say-how-many-attempts-succeeded-or-were-refused;-this-says-which-with-the-tier-quantity-typed-refusal-reason-and-timestamp-—-so-"failed-or-refused:-3"-can-be-investigated-without-asking-us-to-query-the-database-optional-?outcome=successful|failed|pending-filters-reporting-only:-no-buyer-identity-no-agent-id-no-card-data-a-`pending`-row-with-resolvedwithoutpayment=true-is-not-still-in-flight-—-its-hold-expired-or-was-released-and-no-payment-was-ever-created.md) - [SELF-TEST your integration (API token, merchant:write) — answers "is my wiring correct?" without clicking through the buyer page in a frame. Checks the shop, that a payment provider is linked AND its stored credential resolves, that something is buyable, that a webhook endpoint is registered, and sends one REAL signed test delivery to confirm your endpoint accepts it. NO purchase is attempted: a synthetic buy would bill you on the append-only event log and consume real ticket stock, so this proves the wiring a charge depends on, not that a charge will authorize. Each failing check carries a concrete remediation.](https://alyte.mintlify.app/api-reference/integration/self-test-your-integration-api-token-merchant:write-—-answers-"is-my-wiring-correct?"-without-clicking-through-the-buyer-page-in-a-frame-checks-the-shop-that-a-payment-provider-is-linked-and-its-stored-credential-resolves-that-something-is-buyable-that-a-webhook-endpoint-is-registered-and-sends-one-real-signed-test-delivery-to-confirm-your-endpoint-accepts-it-no-purchase-is-attempted:-a-synthetic-buy-would-bill-you-on-the-append-only-event-log-and-consume-real-ticket-stock-so-this-proves-the-wiring-a-charge-depends-on-not-that-a-charge-will-authorize-each-failing-check-carries-a-concrete-remediation.md) - [Agent adoption + watch demand for a shop (API token, merchant:read): agents created under your account (total / by kind / ready-to-buy) and per-tier watch queue counts — how many buyers are in line or waiting for a drop. Counts only, never buyer identities.](https://alyte.mintlify.app/api-reference/integration/agent-adoption-+-watch-demand-for-a-shop-api-token-merchant:read:-agents-created-under-your-account-total-by-kind-ready-to-buy-and-per-tier-watch-queue-counts-—-how-many-buyers-are-in-line-or-waiting-for-a-drop-counts-only-never-buyer-identities.md) - [Public shop window (no auth): events + tiers with price and live availability state. Only for shops that opted in (discoverable).](https://alyte.mintlify.app/api-reference/discovery/public-shop-window-no-auth:-events-+-tiers-with-price-and-live-availability-state-only-for-shops-that-opted-in-discoverable.md) - [ACP product feed (JSONL, no auth) for an opted-in shop — one item per ticket tier. ETag/If-None-Match supported.](https://alyte.mintlify.app/api-reference/discovery/acp-product-feed-jsonl-no-auth-for-an-opted-in-shop-—-one-item-per-ticket-tier-etagif-none-match-supported.md) - [AP2 purchase: buy a tier under an Agent Payments Protocol Intent + Cart mandate (cart-signature verified; cart total is the spend cap)](https://alyte.mintlify.app/api-reference/ap2/ap2-purchase:-buy-a-tier-under-an-agent-payments-protocol-intent-+-cart-mandate-cart-signature-verified;-cart-total-is-the-spend-cap.md) ## OpenAPI Specs - [openapi.public](https://alyte-sandbox-f365cfb3ma-ey.a.run.app/openapi.public.json)