Lifepeaks Public API v2

The Lifepeaks /v2 REST API lets a partner build its own frontend while Lifepeaks protects gift-card pricing, QuickPay payment, commission, canonical order state, and fulfillment. It also supports gift-card operations, redemption and reporting, plus customization of the built-in Lifepeaks order page. Order-page configuration is additionally available through the Lifepeaks MCP server for approved AI agents.

Start with Headless checkout when building a partner storefront. Start with the Built-in order page when Lifepeaks should provide the storefront too.

Protected headless commerce

StepREST endpointResponsibility
DiscoverGET /v2/productsLifepeaks publishes active products, their limits, options, and fees, and on each one how the card can be delivered, what a buyer may add to it, and the terms they accept before paying.
PricePOST /v2/quotesLifepeaks returns the authoritative total.
CreatePOST /v2/ordersPartner creates an unpaid order with a stable idempotency key.
PayPOST /v2/orders/{order_id}/checkout-sessionsLifepeaks returns its hosted QuickPay URL.
ReconcileGET /v2/orders/{order_id}Partner reads canonical payment and fulfillment state.
Subscribe/v2/webhook-endpointsPartner receives signed payment and fulfillment events.
DeliverGET /v2/orders/{order_id}/lines/{line_id}/gift-card.pdfPartner downloads each fulfilled gift-card document.

The catalog holds four product families: the variable-value gift_card_value gift card, one gcv_ product per experience, one evt_ product per event, and one so_ product per special offer — each of the last three with its own priced options. Checkout sells all four. A gift card travels by e-mail or by post; a ticket and an offer voucher are electronic only. One order buys one family: a value line, or up to twenty lines of a single other family, priced by the options they name. Read fee_basis on each product, because an event charges its fee per seat where the rest charge per line. Restaurant, hotel, spa and wellness, retail, and experience templates are different presentations of that same supported contract.

Ticket coupons and the Saved and New Special Vouchers stay operator-issued and are not in the catalog. Benefit deals are read and redeemed by code, never bought. Any issued item prints at GET /v2/items/{code}/document.pdf.

Other v2 surfaces

CapabilityREST or MCP surface
Check what a key can doGET /v2/me — no scope required
Discover the companies a key may act forGET /v2/companies, GET /v2/companies/{slug}
Set brand identity for generated PDFs/v2/companies/{company_id}/brand*
Search and inspect existing itemsGET /v2/items, GET /v2/items/{code}
Redeem, refund, cancel, activate, resendPOST /v2/items/{code}/…
List gift-card campaignsGET /v2/promotions
Read events and reportingGET /v2/events, /v2/reports/*, /v2/subscribers
Customize built-in order page/v2/order-page* and orderpage_* MCP tools
Brand gift-card PDFs/v2/pdf-templates* and pdf_templates_* MCP tools
Issue, list, and revoke API keys/v2/api-keys
Browse exact schemasAPI Reference

POST /v2/items and /v2/orders/{legacy_order_id}/capture remain compatibility operations for direct issuance and migration. They are not the protected public headless payment flow. New partner storefronts use catalog, quote, unpaid po_… order, and Lifepeaks-hosted checkout.

Contract-gated settlement at POST /v2/orders/{order_id}/settle is disabled by default. Agency/marketplace, POS/PMS, and non-Lifepeaks settlement models require negotiation and an active entitlement.

Tenancy

By default every request acts on the company that owns the key. If Lifepeaks has assigned other companies to yours, add the optional company query parameter to act on one of them — a POST or PATCH may carry the same slug in its body instead, and the query string wins when both do. See Endpoints — Conventions. Call GET /v2/companies to see which slugs your key may use. Unknown, inactive, foreign, and unassigned companies all return 404 not_found.

Servers

EnvironmentBase URL
Productionhttps://api.lifepeaks.dk
Demohttps://api-demo.lifepeaks.dk
Development and QuickPay testinghttps://api-dev.lifepeaks.dk

Where to go next

Errors

All non-2xx responses return a JSON error envelope:

json
{
  "error": {
    "code": "string",
    "message": "string",
    "fields": { "field_name": ["error message"] }
  }
}

The fields property is only present on 422 Unprocessable Entity responses.