# AllRide Vouchers — Consumer API - [Introduction](https://docs-consumer.voucher.allride.io/index.md): Build voucher offers into your apps and channels with the AllRide Vouchers Consumer API. - [Quickstart](https://docs-consumer.voucher.allride.io/quickstart.md): Get a sandbox API key, list your catalog, redeem a voucher, replay the request safely and receive a signed webhook. - [Sandbox and production](https://docs-consumer.voucher.allride.io/guides/environments.md): The sandbox and production environments: base URLs, dashboards, API key prefixes, test data and how to move to production. - [Concepts](https://docs-consumer.voucher.allride.io/guides/concepts.md): Partners, roles and the core resources of the AllRide Voucher Platform, and how a voucher set moves through your catalog. - [Going-live checklist](https://docs-consumer.voucher.allride.io/guides/going-live.md): Everything to check before your integration redeems real vouchers in production. - [Authentication](https://docs-consumer.voucher.allride.io/guides/authentication.md): Authenticate every request with an API key, understand which partner it acts for, and handle 401 and 403 errors. - [API keys](https://docs-consumer.voucher.allride.io/guides/api-keys.md): Create API keys with the right scopes, recognise their format, rotate them without downtime and revoke them. - [Permissions and scopes](https://docs-consumer.voucher.allride.io/guides/permissions.md): How permissions decide what a user or API key may do, how to choose API key scopes, and the full permission reference. - [IP allowlist](https://docs-consumer.voucher.allride.io/guides/ip-allowlist.md): Allow API calls only from your own network ranges, switch enforcement on safely, and troubleshoot ip-not-allowed errors. - [Network and IP addresses](https://docs-consumer.voucher.allride.io/guides/network.md): The API hostnames, the addresses AllRide connects from, how address changes are announced, and the TLS requirements. - [Requests and responses](https://docs-consumer.voucher.allride.io/guides/requests-and-responses.md): JSON format, response envelopes, numeric ids, timestamps, money, localised text, concurrent changes, commands and asynchronous jobs. - [Pagination, filtering and sorting](https://docs-consumer.voucher.allride.io/guides/pagination.md): Page through lists with page and perPage, sort, search and filter them, sync large collections incrementally and download large lists. - [Idempotency](https://docs-consumer.voucher.allride.io/guides/idempotency.md): Retry POST requests safely with the Idempotency-Key header: how replays work, key scope across key rolls, and a retry strategy. - [Errors](https://docs-consumer.voucher.allride.io/errors/index.md): The error format, status codes, validation errors and which errors to retry. - [Error catalog](https://docs-consumer.voucher.allride.io/errors/catalog.md): Every error code the Consumer API can return, with what to do about it. - [Limits](https://docs-consumer.voucher.allride.io/guides/limits.md): Size and count limits of requests and resources, and how long data and logs are kept. - [Versioning and deprecation](https://docs-consumer.voucher.allride.io/guides/versioning.md): The major version in the path, which changes happen without a new version, and how deprecations and sunsets are announced. - [Webhooks](https://docs-consumer.voucher.allride.io/webhooks/overview.md): Receive signed HTTPS notifications when redemptions, links, catalog entries, prices and invoices change. - [Verifying signatures](https://docs-consumer.voucher.allride.io/webhooks/verify-signatures.md): Check the x-signing-signature header of every webhook with HMAC-SHA256 and your two endpoint secrets. - [Retries, logs and replay](https://docs-consumer.voucher.allride.io/webhooks/retries-and-logs.md): How failed webhook deliveries are retried, how to read the delivery log, and how to replay events. - [Event catalog](https://docs-consumer.voucher.allride.io/webhooks/events.md): Every webhook type a Partner Consumer can subscribe to, with its trigger and payload. - [Catalog and toggles](https://docs-consumer.voucher.allride.io/consumer/catalog.md): Which providers and voucher sets you can redeem, how availability works, and how Provider and Voucher Set Toggles control what your channels show. - [Redeeming vouchers](https://docs-consumer.voucher.allride.io/consumer/redeeming.md): Redeem one or several vouchers, attach a Redemption Entity, read the issued code or link, and handle every error safely. - [Redemption entities](https://docs-consumer.voucher.allride.io/consumer/redemption-entities.md): Represent the customers, employees or devices that redeem, block them, and erase them on request. - [Redemption links](https://docs-consumer.voucher.allride.io/consumer/redemption-links.md): Create shareable links that let your customers pick and redeem a voucher on an AllRide-hosted, branded landing page. - [Email OTP links](https://docs-consumer.voucher.allride.io/consumer/email-otp-links.md): Require visitors of a Redemption Link to verify their email address with a one-time code sent through your own SMTP server. - [Landing pages and custom domains](https://docs-consumer.voucher.allride.io/consumer/landing-pages.md): Brand the Redemption Link landing page with your Workspace Branding, set your legal links, choose a Landing Look, turn on bot protection and serve it on your own domain. - [Voiding redemptions](https://docs-consumer.voucher.allride.io/consumer/voiding.md): Void a redemption that should not count, within 30 days, and understand what a void changes. - [Analytics](https://docs-consumer.voucher.allride.io/consumer/analytics.md): Redemption, entity and link statistics in your time zone, and how they differ from billing quantities. - [Billing](https://docs-consumer.voucher.allride.io/consumer/billing.md): How AllRide bills you per redemption: billing account, SEPA Direct Debit, invoices and Stornorechnungen, ZUGFeRD and XRechnung, usage, payments, dunning, billing webhooks and permissions. - [Prices and price acceptance](https://docs-consumer.voucher.allride.io/consumer/prices.md): Read your Price Terms per voucher set, accept them in the consumer dashboard before you redeem, and handle price changes and the price gate. - [Members and groups](https://docs-consumer.voucher.allride.io/workspace/members-and-groups.md): Invite users to your partner, organise their permissions in groups, and require multi-factor authentication or single sign-on. - [Audit log](https://docs-consumer.voucher.allride.io/workspace/audit-log.md): See who changed what in your partner, through the dashboard or the API, and when. - [Custom domains](https://docs-consumer.voucher.allride.io/workspace/custom-domains.md): Serve Redemption Link landing pages on your own host name, such as vouchers.example-transit.example.com. - [List catalog providers](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-providers-list.md): Lists the providers that have at least one voucher set visible to you, whatever your toggles say (management view). Apps should filter with `filter[providerToggle]=true`. Provider availability is `active` if any visible set is active, else `deactivation-scheduled`, else `upcoming`. See [Catalog and… - [List catalog voucher sets](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-voucher-sets-list.md): Lists the voucher sets visible to you: an approved live revision, effective status scheduled, active or deactivation-scheduled, an active provider, and access granted by AllRide. Entries are returned whatever your toggles say; apps and landing pages use `filter[providerToggle]=true&filter[voucherSet… - [List categories](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-categories-list.md): Lists the active categories managed by AllRide, ordered by `position`. - [Get a catalog provider](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-providers-get.md): Returns one catalog provider with your setting. A provider without a voucher set visible to you answers 404 `provider-not-found`. See [Catalog and toggles](/consumer/catalog). - [Get a catalog voucher set](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-voucher-sets-get.md): Returns one catalog entry with your setting. A voucher set that is not visible to you answers 404 `voucher-set-not-found`; a missing Price Acceptance never hides the entry, it shows in `priceAcceptance.status`. See [Catalog and toggles](/consumer/catalog). - [Get a category](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-categories-get.md): Returns one active category. Archived or unknown categories answer 404 `category-not-found`. - [Update provider toggle and settings](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-providers-update.md): Turns a provider on or off for you and edits your provider setting (JSON Merge Patch). The setting is created on the first save. Turning the provider off makes all its sets answer 409 `voucher-set-unavailable` on redeem. Changing `autoEnableNewVoucherSets` keeps the current toggle of every set alrea… - [Update voucher set toggle and settings](https://docs-consumer.voucher.allride.io/api-reference/consumer-catalog-voucher-sets-update.md): Turns a voucher set on or off for you and edits your voucher set setting, including the per-entity limit `entityLimit`. A set is redeemable only when both its Provider Toggle and Voucher Set Toggle are on. Toggles may be set on upcoming sets. See [Catalog and toggles](/consumer/catalog). - [List redemptions](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemptions-list.md): Lists your redemptions, including issued codes and links. For incremental sync use `filter[redeemedAt][gte]=&sort=redeemedAt` and de-duplicate by `id`. To check whether an intent already ran, filter by `idempotencyKey`. See [Redeeming vouchers](/consumer/redeeming). - [Redeem a voucher](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemptions-create.md): Allocates one voucher (first expiring first, never the same single-use voucher twice) from a voucher set (`voucherSetId`) or from the provider's best redeemable set (`providerId`) and returns the issued code or link. Optionally attaches a redemption entity by id or inline by `refId`, and stores your… - [Get a redemption](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemptions-get.md): Returns one redemption, including the issued code or link. See [Redeeming vouchers](/consumer/redeeming). - [Get a redemption batch](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-batches-get.md): Returns a redemption batch with the current state of its redemptions (voided ones show `voided`). See [Redeeming vouchers](/consumer/redeeming). - [Void a redemption](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemptions-void.md): Voids a completed redemption within 30 days of `redeemedAt`. The voucher is never restocked; entity and link per-entity counters are decremented; an invoice already issued is not changed by the void. Sends the `redemption-voided` webhook and is always audited. See [Voiding redemptions](/consumer/voi… - [Redeem several vouchers in one request](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemptions-batch.md): Redeems up to 10 vouchers in one all-or-nothing transaction. Each item needs `quantity` distinct claimable vouchers; a multi-use voucher counts once per batch, so `quantity` above 1 on a set whose only stock is one shared code fails with 409 `voucher-set-depleted`. A failing item rolls back the whol… - [List redemption entities](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-list.md): Lists your redemption entities. Metadata is not searchable. See [Redemption entities](/consumer/redemption-entities). - [Create a redemption entity](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-create.md): Creates a redemption entity. `refId` is unique per partner; a second create with the same `refId` answers 409 `ref-id-taken` with the existing id. Entities created with an API key do not send the `redemption-entity-created` webhook. You can also create entities inline when redeeming. See [Redemption… - [Get a redemption entity](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-get.md): Returns one redemption entity. Erased entities are returned anonymised. See [Redemption entities](/consumer/redemption-entities). - [Update a redemption entity](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-update.md): Changes `refId`, `displayName` or `metadata` (JSON Merge Patch). Existing redemptions keep pointing to the entity id. See [Redemption entities](/consumer/redemption-entities). - [Block a redemption entity](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-block.md): Blocks an active entity: redemptions for it answer 409 `redemption-entity-blocked`, and Redemption Links bound to it refuse it. Empty body. See [Redemption entities](/consumer/redemption-entities). - [Erase a redemption entity (GDPR)](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-erase.md): Erases the entity's personal data synchronously and irreversibly: `refId`, `email`, `displayName` and `metadata` become `null` and the status `erased`. Its sessions are deleted and every `entity-bound` Redemption Link of the entity is revoked (the landing page then answers `redemption-link-revoked`)… - [Unblock a redemption entity](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-entities-unblock.md): Moves a blocked entity back to `active`. Empty body. See [Redemption entities](/consumer/redemption-entities). - [List redemption links](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-list.md): Lists your Redemption Links. `filter[status]=expired` includes active links past `expiresAt`. See [Redemption links](/consumer/redemption-links). - [Create a redemption link](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-create.md): Creates a Redemption Link. Your Workspace Branding must have `landing.privacyUrl` and `landing.imprintUrl`; an `email-otp` link needs the Email OTP Gate to be ready. Missing Price Acceptances do not block creation; such sets are left out of the landing page. A replay with the same `Idempotency-Key`… - [Get a redemption link](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-get.md): Returns one Redemption Link. See [Redemption links](/consumer/redemption-links). - [Preview a link's catalog](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-catalog.md): Shows what the link's landing page offers now, with the landing page's rules: active or deactivation-scheduled sets, both toggles on, inside the link's restrictions, not depleted, and with a redeemable Price Acceptance; at most 200 sets in landing order. `hiddenForPriceAcceptance` lists sets left ou… - [Update a redemption link](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-update.md): Changes a link (JSON Merge Patch). Raising the cap of an exhausted link, or moving `expiresAt` of an expired link into the future, makes it `active` again (this needs the landing legal URLs). Setting the cap equal to `redemptionCount` exhausts an active link and sends `redemption-link-exhausted`. Re… - [Revoke a redemption link](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-revoke.md): Revokes a link immediately and for good: the landing page answers `redemption-link-revoked` and open sessions stop working. Empty body. See [Redemption links](/consumer/redemption-links). - [Create redemption links in bulk](https://docs-consumer.voucher.allride.io/api-reference/consumer-redemption-links-batch.md): Creates up to 100 links in one all-or-nothing call (for example one entity-bound link per employee). Any failing item creates nothing; item failures carry `more.validationErrors[].property` `items[]`. The response lists summaries; read full links with `GET`. See [Redemption links](/consumer/r… - [List email templates](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-list.md): Lists your email templates without their bodies; read one template for the bodies. See [Email OTP links](/consumer/email-otp-links). - [Create an email template](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-create.md): Creates a draft template, either uploaded (`subject`, `htmlBody`, …) or generated from your Workspace Branding (`generateFromBranding: true`). Validation runs immediately and is stored in `validation`; an invalid draft is still saved. Only forbidden constructs and oversized sources are refused with… - [Get email OTP settings](https://docs-consumer.voucher.allride.io/api-reference/consumer-email-otp-settings-get.md): Returns whether the Email OTP Gate is on and ready, and what is missing. See [Email OTP links](/consumer/email-otp-links). - [Get email OTP readiness](https://docs-consumer.voucher.allride.io/api-reference/consumer-email-otp-readiness-get.md): Tells link creators whether `email-otp` links can be created and what is missing, without SMTP or template details. Accepts no query parameters. See [Email OTP links](/consumer/email-otp-links). - [Get the SMTP configuration](https://docs-consumer.voucher.allride.io/api-reference/partner-smtp-configuration-get.md): Returns your SMTP configuration (never the password). Poll it after `:verify` until `verificationCompletedAt` ≥ `verificationRequestedAt`. See [Email OTP links](/consumer/email-otp-links). - [Get an email template](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-get.md): Returns one template with its bodies. See [Email OTP links](/consumer/email-otp-links). - [Render a saved template preview](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-preview.md): Renders subject, HTML and text with sample data. A locale missing in the template falls back to your default locale (`fallbackLocaleUsed`). Display `html` only in a sandboxed iframe. See [Email OTP links](/consumer/email-otp-links). - [Get a template variable contract](https://docs-consumer.voucher.allride.io/api-reference/partner-email-template-contracts-get.md): Returns the variables, helpers and limits of a template purpose. See [Email OTP links](/consumer/email-otp-links). - [Update email OTP settings](https://docs-consumer.voucher.allride.io/api-reference/consumer-email-otp-settings-update.md): Turns the Email OTP Gate on (requires a verified SMTP configuration and an active template, else 422 `email-otp-not-configured`) or off, and sets how long a visitor stays signed in after verifying their email (`sessionDurationMinutes`, 15 to 1440). Both fields are optional. Turning the gate off keep… - [Create or replace the SMTP configuration](https://docs-consumer.voucher.allride.io/api-reference/partner-smtp-configuration-replace.md): Creates (201) or replaces (200) your SMTP configuration. Every save sets `status` to `unverified`; existing `email-otp` links keep sending with the new settings, but new `email-otp` links need a successful `:verify`. Hosts resolving to private or reserved addresses are refused. `Idempotency-Key` is… - [Update a draft email template](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-update.md): Edits a draft template; validation is recomputed. Active and archived templates cannot change: create a new draft and activate it. See [Email OTP links](/consumer/email-otp-links). - [Activate an email template](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-activate.md): Activates a valid draft (no missing required or unknown variables, no blocking finding, renders with sample data) and archives the previously active template; the next OTP email uses it. See [Email OTP links](/consumer/email-otp-links). - [Archive an email template](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-archive.md): Archives a draft, or the active template while the Email OTP Gate is off. See [Email OTP links](/consumer/email-otp-links). - [Render an unsaved template preview](https://docs-consumer.voucher.allride.io/api-reference/partner-email-templates-preview-draft.md): Renders and validates a template without saving it. See [Email OTP links](/consumer/email-otp-links). - [Verify SMTP and send a test email](https://docs-consumer.voucher.allride.io/api-reference/partner-smtp-configuration-verify.md): Starts an asynchronous verification that sends a test email: to the requesting user, or for API keys to your partner's `contacts.technicalEmail` (never to an address from the request). Answers 200 with `verificationRequestedAt` set; poll `GET /partner/v1/smtp-configuration` until `verificationComple… - [Get redemption statistics](https://docs-consumer.voucher.allride.io/api-reference/consumer-analytics-redemption-stats.md): Redemptions, voids and face value per period, by default per provider per month for the last 12 months. `groupBy` takes a comma list of `provider`, `voucher-set`, `channel`, `redemption-link`, or `none` (zero-filled periods). Spans: at most 36 months or 92 days. These are not invoice quantities: bil… - [Get entity statistics](https://docs-consumer.voucher.allride.io/api-reference/consumer-analytics-entity-stats.md): Unique and new redemption entities per period (zero-filled). Spans: at most 12 months or 31 days. Statistics use your partner time zone and are eventually consistent (up to 2 minutes). See [Analytics](/consumer/analytics). - [Get redemption link funnel statistics](https://docs-consumer.voucher.allride.io/api-reference/consumer-analytics-link-stats.md): Landing visits, OTP requests, verifications, redemptions and conversion per period, optionally per link. Spans: at most 92 days or 36 months. Statistics use your partner time zone and are eventually consistent (up to 2 minutes). See [Analytics](/consumer/analytics). - [Get the analytics overview](https://docs-consumer.voucher.allride.io/api-reference/consumer-analytics-overview.md): Returns key figures for a date range (default: this month so far) and the previous period of the same length. The range spans at most 366 days. Statistics use your partner time zone and are eventually consistent (up to 2 minutes). See [Analytics](/consumer/analytics). - [List billing contacts](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-contacts-list.md): Lists the contacts that receive invoices, reminders and payment-failure emails. See the [billing guide](/consumer/billing). - [List payment methods](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payment-methods-list.md): Lists your SEPA Direct Debit mandates (masked: IBAN last 4 only): at most one `active` mandate and at most one setup in progress, plus `inactive` and `setup-failed` ones. Removed mandates are left out unless `filter[status]` asks for `removed`. See [SEPA Direct Debit mandate](/consumer/billing#sepa-… - [List invoices](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-invoices-list.md): Lists your finalised invoices. Stornorechnungen are listed too (`kind: cancellation`, negative amounts). To fetch new invoices into your ERP, subscribe to `invoice-finalised`, or poll daily with `filter[issueDate][gte]=&sort=issueDate`. Drafts are never visible. See the [billing guide](/co… - [List invoice lines](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-invoices-lines.md): Lists the lines of a finalised invoice: per provider, voucher set and price (or tier) the quantity, unit price and net amount. See the [billing guide](/consumer/billing). - [List payments](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payments-list.md): Lists SEPA debits, bank transfers and manual payments on your invoices, including failed attempts and planned retries. See the [billing guide](/consumer/billing). - [List usage lines of a month](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-usage-lines.md): Pages the usage groups of one service month (the `lines` of the usage estimate) for reconciliation. `filter[serviceMonth]` is required (422 item `filter-required` otherwise), at most 13 months back. See the [billing guide](/consumer/billing). - [Add a billing contact](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-contacts-create.md): Adds a billing contact. Needs a recent sign-in, because changing who receives invoices is a fraud path. The account status is re-derived (an `invoices` contact is required for invoicing). Allowed while your partner is suspended. See the [billing guide](/consumer/billing). - [Get the billing account](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-account-get.md): Returns your billing account: legal name, address, VAT ID and its VIES status, invoice language, e-invoice format, payment preferences, credit balance, dunning standing and the `missingItems` that block invoicing. See the [billing guide](/consumer/billing). - [Get a payment method](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payment-methods-get.md): Returns one SEPA Direct Debit mandate. Poll it after confirming the setup with Stripe.js to see `setup-pending` turn `active`. See [SEPA Direct Debit mandate](/consumer/billing#sepa-direct-debit-mandate). - [Get an invoice](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-invoices-get.md): Returns one finalised invoice with totals, tax breakdown, the printed payment instructions and the current collection plan. See the [billing guide](/consumer/billing). - [Download an invoice document](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-invoices-document.md): Returns a 15-minute signed URL for the invoice PDF or XML, with its SHA-256 and size. Use `format=xml` for machine processing. While the document is still rendering, the answer is 409 `invoice-document-not-ready` with `Retry-After: 30`. See [E-invoices](/consumer/billing#e-invoices-zugferd-xrechnung… - [Get the usage estimate of a month](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-usage-get.md): Returns billable redemptions and estimated charges of a service month per provider and voucher set. Service months are calendar months in Europe/Berlin, so they can differ from analytics in your time zone at month edges. The figures are an estimate (`isEstimate: true`) until the month is invoiced. S… - [Get the billing balance](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-balance-get.md): Returns open, overdue and credit amounts, the dunning standing and the next planned SEPA debit. See the [billing guide](/consumer/billing). - [Update the billing account](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-account-update.md): Changes your billing data (JSON Merge Patch). `mode`, `paymentTermsDays`, `voidedRedemptionsBillable` and `preferredPaymentMethodType` are set by AllRide (`400 data-failed-validation` with item `admin-only-field`): AllRide decides whether you pay by SEPA Direct Debit or by bank transfer. Changing `v… - [Update a billing contact](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-contacts-update.md): Changes the name or roles of a billing contact (JSON Merge Patch). Needs a recent sign-in. Allowed while your partner is suspended. See the [billing guide](/consumer/billing). - [Resend an invoice](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-invoices-resend.md): Sends the stored invoice document again to the contacts with the `invoices` role (the document is never re-rendered). Allowed while your partner is suspended. See the [billing guide](/consumer/billing). - [Make a payment method the default](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payment-methods-make-default.md): Makes an `active` SEPA Direct Debit mandate the default for collecting invoices. Since you have one active mandate at a time, which is the default, this changes nothing in practice. Allowed while your partner is suspended. See [SEPA Direct Debit mandate](/consumer/billing#sepa-direct-debit-mandate). - [Remove a payment method](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payment-methods-remove.md): Removes a SEPA Direct Debit mandate (status `removed`). An `active` or `inactive` mandate is detached at the payment provider, and open invoices without an active mandate are paid by bank transfer. A setup that did not succeed (`setup-pending` or `setup-failed`) is removed and its SetupIntent cancel… - [Start a SEPA Direct Debit mandate setup](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-payment-methods-setup-sepa-debit.md): Creates a payment method in `setup-pending` and a Stripe SetupIntent. No request body. Load Stripe.js with `publishableKey`, collect the IBAN in Stripe's IBAN Element together with the account holder's name and email, show the SEPA mandate text naming `creditor`, and confirm with `stripe.confirmSepa… - [Remove a billing contact](https://docs-consumer.voucher.allride.io/api-reference/consumer-billing-contacts-delete.md): Removes a billing contact. Removing the last `invoices` contact makes the account `incomplete` in the same transaction. Needs a recent sign-in. Allowed while your partner is suspended. See the [billing guide](/consumer/billing). - [List Price Terms of visible voucher sets](https://docs-consumer.voucher.allride.io/api-reference/consumer-pricing-voucher-sets-list.md): Lists your resolved Price Terms for every voucher set visible to you now: the current and up to 5 upcoming periods with their acceptance status. A visible set is redeemable only after you accept the terms in force. See [Prices and price acceptance](/consumer/prices). - [List Price Acceptances](https://docs-consumer.voucher.allride.io/api-reference/consumer-pricing-acceptances-list.md): Lists your Price Acceptances, including those of voucher sets that are no longer visible. See [Prices and price acceptance](/consumer/prices). - [Accept Price Terms](https://docs-consumer.voucher.allride.io/api-reference/consumer-pricing-acceptances-create.md): Records your acceptance of the current or upcoming Price Terms periods of visible voucher sets. Dashboard users only: `accept-consumer-pricing` cannot be delegated, so API keys get 403 `missing-permission`, and AllRide cannot accept for you; a recent sign-in is required. All-or-nothing: if any item'… - [Get the Price Terms of a voucher set](https://docs-consumer.voucher.allride.io/api-reference/consumer-pricing-voucher-sets-get.md): Returns your resolved Price Terms of one visible voucher set. A set that is not visible to you answers 404 `voucher-set-not-found`. See [Prices and price acceptance](/consumer/prices). - [Get the pricing summary](https://docs-consumer.voucher.allride.io/api-reference/consumer-pricing-summary-get.md): Counts the visible voucher sets that need an acceptance, have a pending change or are not priced, and returns the next change. See [Prices and price acceptance](/consumer/prices). - [Get your partner](https://docs-consumer.voucher.allride.io/api-reference/partner-partner-get.md): Returns your partner record with contacts, API access state and settings. Consumer partners also get `settings.emailOtpLinksEnabled` and `settings.defaultLandingDomainId`. - [Get the calling principal](https://docs-consumer.voucher.allride.io/api-reference/partner-principal-get.md): Shows which partner, environment and permissions the credential has. Call it first to check a new API key. - [Get the API access status](https://docs-consumer.voucher.allride.io/api-reference/partner-api-access-get.md): Returns the API access state of your partner. API keys work only while it is `active`; AllRide activates access after you request it. - [Get developer reference information](https://docs-consumer.voucher.allride.io/api-reference/partner-developer-reference-get.md): Returns base URLs, the egress IP addresses AllRide connects from, the API key format, your allowlist state and webhook reference values. Billing event types are listed only when you hold `view-consumer-billing`. - [List selectable time zones](https://docs-consumer.voucher.allride.io/api-reference/partner-timezones-list.md): Returns every IANA zone accepted for `timezone` in [Update general information](/api-reference/partner-partner-update) and the analytics `timezone` parameter (whole-hour offsets only). Not paginated. - [Update general information](https://docs-consumer.voucher.allride.io/api-reference/partner-partner-update.md): Changes contacts, default locale or time zone (JSON Merge Patch). Changing `contacts.billingEmail` does not change your billing contacts, which you manage under `/consumer/v1/billing/contacts`. A new time zone changes how calendar months are computed from now on. - [Update security settings](https://docs-consumer.voucher.allride.io/api-reference/partner-partner-update-settings.md): Changes MFA policy, IP allowlist enforcement and (consumers) the default landing domain. Add IP allowlist entries before enabling enforcement. Effects reach every API instance within 60 seconds. See [IP allowlist](/guides/ip-allowlist). - [Request API access](https://docs-consumer.voucher.allride.io/api-reference/partner-api-access-request.md): Asks AllRide to activate API access (from `not-requested` to `requested`). AllRide reviews the request and you are notified of the decision. See [Sandbox and production](/guides/environments). - [List members](https://docs-consumer.voucher.allride.io/api-reference/partner-members-list.md): Lists the users of your partner and open invitations. See [Members and groups](/workspace/members-and-groups). - [Invite a member](https://docs-consumer.voucher.allride.io/api-reference/partner-members-create.md): Invites a person by email. The invitation email links to the dashboard and expires after 7 days. You can grant only permissions you hold yourself. - [Get a member](https://docs-consumer.voucher.allride.io/api-reference/partner-members-get.md): Returns one membership. - [Change a member's direct permissions](https://docs-consumer.voucher.allride.io/api-reference/partner-members-update.md): Replaces the member's direct permissions. Group membership is changed with `PATCH /partner/v1/groups/{groupId}`. Takes effect within 60 seconds. - [Remove a member or revoke an invitation](https://docs-consumer.voucher.allride.io/api-reference/partner-members-remove.md): Removes the membership (terminal). The user loses access to your partner within 60 seconds; re-inviting the email creates a new membership. - [Resend an invitation](https://docs-consumer.voucher.allride.io/api-reference/partner-members-resend-invitation.md): Sends a new invitation email to an `invited` member; the previous link stops working and the new one expires after 7 days. - [Suspend a member](https://docs-consumer.voucher.allride.io/api-reference/partner-members-suspend.md): Suspends an active member (`active` → `suspended`). - [Unsuspend a member](https://docs-consumer.voucher.allride.io/api-reference/partner-members-unsuspend.md): Reactivates a suspended member (`suspended` → `active`). - [List groups](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-list.md): Lists the groups of your partner. Deleted groups appear only with `filter[status]=deleted`. - [List the members of a group](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-members.md): Lists the memberships in one group. - [List permissions](https://docs-consumer.voucher.allride.io/api-reference/partner-permissions-list.md): Lists every permission with its label, whether API keys may hold it (`delegable`) and whether it applies to your partner. `perPage=100` returns the whole catalog. See [Permissions and scopes](/guides/permissions). - [Create a group](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-create.md): Creates a custom group with permissions and members. - [Get a group](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-get.md): Returns one group. - [Update a group](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-update.md): Changes name, description, permissions or members. This is the only way to change group membership. - [Delete a group](https://docs-consumer.voucher.allride.io/api-reference/partner-groups-delete.md): Deletes a custom group and its member links. A repeated delete answers 204. - [List API keys](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-list.md): Lists your API keys (metadata only). API keys are managed only in the developer dashboard; API keys cannot call this operation. See [API keys](/guides/api-keys). - [Create an API key](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-create.md): Creates a key with least-privilege scopes. The `secret` is returned once in this response; store it in a secret manager. Needs active API access; at most 20 active keys. API keys are managed only in the developer dashboard; API keys cannot call this operation. See [API keys](/guides/api-keys). - [Get an API key](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-get.md): Returns one key without its secret. API keys are managed only in the developer dashboard; API keys cannot call this operation. See [API keys](/guides/api-keys). - [Rename an API key](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-update.md): Renames a key. Scopes are immutable: create a new key or roll instead. API keys are managed only in the developer dashboard; API keys cannot call this operation. See [API keys](/guides/api-keys). - [Revoke an API key](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-revoke.md): Revokes an active key. Requests with it fail with 401 `api-key-invalid` within 60 seconds. API keys are managed only in the developer dashboard; API keys cannot call this operation. See [API keys](/guides/api-keys). - [Roll an API key](https://docs-consumer.voucher.allride.io/api-reference/partner-api-keys-roll.md): Creates a new key with the same scopes and returns its secret once; the old key keeps working until the grace period ends. Deploy the new secret within the grace period and check its `lastUsedAt`. The new key shares the old key's idempotency scope, so retries with the same `Idempotency-Key` replay i… - [List webhook endpoints](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-list.md): Lists your webhook endpoints. Deleted endpoints appear only when you filter by `status`. See [Webhooks](/webhooks/overview). - [List webhook event types](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-event-types-list.md): Lists the event types your partner can subscribe to (25 types for a consumer partner). `perPage=100` returns the full list. See [Event catalog](/webhooks/events). - [Create a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-create.md): Registers a receiver and returns its two signing secrets once (`firstSecret`, `secondSecret`). Verify `x-signing-signature` against either. At most 10 endpoints; needs active API access. Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-con… - [Get a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-get.md): Returns one endpoint without its secrets. - [Update a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-update.md): Changes the URL, description or event types. A URL or event type change notifies your owners and technical contact. Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-consumer-pricing` (403 `missing-permission` otherwise). - [Pause a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-pause.md): Pauses deliveries (`active` → `paused`). Events while paused are logged as `FAILED` deliveries and can be replayed within 30 days of the event (resume the endpoint first). Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-consumer-pricing`… - [Resume a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-resume.md): Resumes deliveries (`paused` → `active`). Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-consumer-pricing` (403 `missing-permission` otherwise). - [Rotate the first signing secret](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-rotate-first-secret.md): Replaces the first secret and returns it once (`firstSecret`); the second secret is unchanged, so deliveries stay verifiable while you update your receiver. Rotate one secret at a time. Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-cons… - [Rotate the second signing secret](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-rotate-second-secret.md): Replaces the second secret and returns it once (`secondSecret`); the first secret is unchanged, so deliveries stay verifiable while you update your receiver. Rotate one secret at a time. Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-con… - [Send a test event](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-send-test-event.md): Stores one `webhook-endpoint-test` event for an active endpoint, even if it is not subscribed to that type, and queues its send. The delivery appears in the log at once as `PENDING`; follow it by `webhookDeliveryId`. Normal retries apply. Endpoints that include billing event types also need `view-co… - [Delete a webhook endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-delete.md): Deletes the endpoint (terminal). Its delivery log stays readable for 30 days. A repeated delete answers 204. Endpoints that include billing event types also need `view-consumer-billing`, and `price-terms-*` types `view-consumer-pricing` (403 `missing-permission` otherwise). - [List webhook deliveries](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-deliveries-list.md): Lists the stored webhook events of the last 30 days, one entry per event and endpoint, with `status` (`PENDING`, `DELIVERED`, `FAILED`) and the attempts. An event appears as `PENDING` as soon as it is stored, before the first send. Billing and `price-terms-*` deliveries are left out unless you hold… - [Get a webhook delivery](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-deliveries-get.md): Returns one delivery: the stored event, its status and every attempt. - [Replay a webhook delivery](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-deliveries-replay.md): Re-sends the same stored event (same body and `event.id`, fresh `t` and signatures) to an active endpoint, regardless of its current subscription. The delivery goes back to `PENDING` and its new attempts are added with `trigger: replay`. A delivery can be replayed while it is in the delivery log, wh… - [Replay failed deliveries of an endpoint](https://docs-consumer.voucher.allride.io/api-reference/partner-webhook-endpoints-replay-failed.md): Re-queues every stored event of the window whose delivery to this endpoint is `FAILED`, oldest first, at most 10,000 per call, as a background task; each goes back to `PENDING` with the same `event.id`. Follow progress in the delivery log with `filter[status]=PENDING`. Billing and `price-terms-*` ev… - [List IP allowlist entries](https://docs-consumer.voucher.allride.io/api-reference/partner-ip-allowlist-list.md): Lists your allowlist entries (at most 100). See [IP allowlist](/guides/ip-allowlist). - [Add an IP allowlist entry](https://docs-consumer.voucher.allride.io/api-reference/partner-ip-allowlist-create.md): Adds a range. Add your IPv4 and IPv6 egress ranges before you enable enforcement. Takes effect within 60 seconds. See [IP allowlist](/guides/ip-allowlist). - [Relabel an IP allowlist entry](https://docs-consumer.voucher.allride.io/api-reference/partner-ip-allowlist-update.md): Changes the label of an entry. See [IP allowlist](/guides/ip-allowlist). - [Remove an IP allowlist entry](https://docs-consumer.voucher.allride.io/api-reference/partner-ip-allowlist-delete.md): Removes an entry. The last entry cannot be removed while enforcement is on. See [IP allowlist](/guides/ip-allowlist). - [List custom domains](https://docs-consumer.voucher.allride.io/api-reference/partner-custom-domains-list.md): Lists your custom domains. Consumer partners only. See [Custom domains](/workspace/custom-domains). - [Add a custom domain](https://docs-consumer.voucher.allride.io/api-reference/partner-custom-domains-create.md): Adds a host name in `pending-verification`. Publish the CNAME to `customers.voucher.allride.io` and the TXT ownership and certificate records that appear on the domain shortly after (poll it). Consumer partners only. See [Custom domains](/workspace/custom-domains). - [Get a custom domain](https://docs-consumer.voucher.allride.io/api-reference/partner-custom-domains-get.md): Returns one domain with its DNS records and status. Consumer partners only. See [Custom domains](/workspace/custom-domains). - [Re-check a custom domain](https://docs-consumer.voucher.allride.io/api-reference/partner-custom-domains-refresh.md): Schedules an immediate re-check of the DNS records (a `failed` domain returns to `pending-verification`). Poll the domain for the result. Consumer partners only. See [Custom domains](/workspace/custom-domains). - [Delete a custom domain](https://docs-consumer.voucher.allride.io/api-reference/partner-custom-domains-delete.md): Deletes the domain (terminal). Links on it fall back to your default landing host; if it was the default landing domain, `settings.defaultLandingDomainId` is cleared. A repeated delete answers 204. Consumer partners only. See [Custom domains](/workspace/custom-domains). - [List brand assets](https://docs-consumer.voucher.allride.io/api-reference/partner-brand-assets-list.md): Lists your brand assets. Deleted assets appear only when you filter by `status`. - [Create a brand asset](https://docs-consumer.voucher.allride.io/api-reference/partner-brand-assets-create.md): Creates an asset in `pending-upload` with a signed upload URL valid for one hour. PUT the file to `uploadTarget.url` with the listed headers, then call `:complete`. - [Get workspace branding](https://docs-consumer.voucher.allride.io/api-reference/partner-workspace-branding-get.md): Returns your Workspace Branding, including the consumer `landing` block and a render map of the images. Any member and any API key can read it. See [Landing pages](/consumer/landing-pages). - [Get a brand asset](https://docs-consumer.voucher.allride.io/api-reference/partner-brand-assets-get.md): Returns one asset; poll it after `:complete` until `ready` or `rejected`. - [Replace workspace branding](https://docs-consumer.voucher.allride.io/api-reference/partner-workspace-branding-replace.md): Replaces the complete branding content. No approval is needed, but every text and URL passes the content checks synchronously (422 `content-blocked`). Clearing `landing.privacyUrl` or `landing.imprintUrl` is refused while Redemption Links that are not revoked exist. Answers 201 on the first save and… - [Complete a brand asset upload](https://docs-consumer.voucher.allride.io/api-reference/partner-brand-assets-complete.md): Confirms the upload. The image is then checked, re-encoded and published asynchronously (`processing` → `ready` or `rejected`). - [Delete a brand asset](https://docs-consumer.voucher.allride.io/api-reference/partner-brand-assets-delete.md): Soft-deletes an asset that is no longer referenced by branding, content or a draft or active email template. A repeated delete answers 204. - [List SSO connections](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-list.md): Lists your single sign-on connections. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Create an SSO connection](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-create.md): Creates a connection in `draft`. Publish the returned TXT records and configure `serviceProvider` in your identity provider, then call `:verify`. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Get an SSO connection](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-get.md): Returns one connection. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Update an SSO connection](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-update.md): Changes the name, domains, identity provider settings, enforcement or provisioning. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Activate an SSO connection](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-activate.md): Activates a `testing` or `disabled` connection; needs at least one verified domain. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Deactivate an SSO connection](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-deactivate.md): Disables a `testing` or `active` connection; enforcement stops. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [Verify SSO email domains](https://docs-consumer.voucher.allride.io/api-reference/partner-sso-connections-verify.md): Checks the TXT records of unverified domains. With at least one verified domain a `draft` connection moves to `testing`. SSO is configured only by dashboard users. See [Members and groups](/workspace/members-and-groups). - [List audit events](https://docs-consumer.voucher.allride.io/api-reference/partner-audit-events-list.md): Lists the audit log of your partner. Without `filter[createdAt][gte]` the last 90 days are returned; a window may not exceed 24 months. See [Audit log](/workspace/audit-log). - [Get an audit event](https://docs-consumer.voucher.allride.io/api-reference/partner-audit-events-get.md): Returns one audit event. - [redemption-created](https://docs-consumer.voucher.allride.io/webhooks/events/redemption-created.md): A redemption was made - [redemption-voided](https://docs-consumer.voucher.allride.io/webhooks/events/redemption-voided.md): A redemption was voided - [redemption-entity-created](https://docs-consumer.voucher.allride.io/webhooks/events/redemption-entity-created.md): A redemption entity was created - [redemption-link-exhausted](https://docs-consumer.voucher.allride.io/webhooks/events/redemption-link-exhausted.md): A redemption link reached its cap - [redemption-link-expired](https://docs-consumer.voucher.allride.io/webhooks/events/redemption-link-expired.md): A redemption link expired - [catalog-voucher-set-activated](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-activated.md): A voucher set became active - [catalog-voucher-set-activation-scheduled](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-activation-scheduled.md): A voucher set's activation was scheduled - [catalog-voucher-set-available](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-available.md): A voucher set became visible to you - [catalog-voucher-set-deactivated](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-deactivated.md): A voucher set was deactivated - [catalog-voucher-set-deactivation-scheduled](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-deactivation-scheduled.md): A voucher set's deactivation was scheduled - [catalog-voucher-set-depleted](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-depleted.md): A voucher set is depleted - [catalog-voucher-set-stock-low](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-stock-low.md): A voucher set's stock is low - [catalog-voucher-set-unavailable](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-unavailable.md): A voucher set left your catalog - [catalog-voucher-set-updated](https://docs-consumer.voucher.allride.io/webhooks/events/catalog-voucher-set-updated.md): A visible voucher set changed - [price-terms-acceptance-required](https://docs-consumer.voucher.allride.io/webhooks/events/price-terms-acceptance-required.md): Price acceptance is required - [price-terms-accepted](https://docs-consumer.voucher.allride.io/webhooks/events/price-terms-accepted.md): Price Terms were accepted - [price-terms-change-scheduled](https://docs-consumer.voucher.allride.io/webhooks/events/price-terms-change-scheduled.md): A price change was scheduled - [invoice-finalised](https://docs-consumer.voucher.allride.io/webhooks/events/invoice-finalised.md): An invoice was issued - [invoice-overdue](https://docs-consumer.voucher.allride.io/webhooks/events/invoice-overdue.md): An invoice became overdue - [invoice-paid](https://docs-consumer.voucher.allride.io/webhooks/events/invoice-paid.md): An invoice was paid - [invoice-voided](https://docs-consumer.voucher.allride.io/webhooks/events/invoice-voided.md): An invoice was cancelled - [payment-failed](https://docs-consumer.voucher.allride.io/webhooks/events/payment-failed.md): A payment failed - [payment-method-deactivated](https://docs-consumer.voucher.allride.io/webhooks/events/payment-method-deactivated.md): A SEPA mandate was deactivated - [webhook-endpoint-test](https://docs-consumer.voucher.allride.io/webhooks/events/webhook-endpoint-test.md): Test event sent from the dashboard or the API ## OpenAPI Specs - [consumer.v1](/openapi/consumer.v1.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.