Skip to main content
Create bookings through the public cart and checkout flow. For admin-side creation (orders/from-config), see Admin Booking Creation. For conventions, see JSON-API Conventions. For slot search, see Availability & Booking Search.

Prerequisites

  • Resource + service configuration exists
  • Cookies are enabled (cart and order authorization are cookie/query based)
  • Optional customer auth for prefilled fields

Canonical Path Docs


Flow Overview


1

Add Booking to Cart

add_ons_by_service and sub_bookings_by_service are mapped by service id and booking index:Legacy inputs (booking_add_ons, sub_bookings) still exist but are deprecated.Exact add-booking request fields (current request rules):Path docs: /api/v1/order/bookings in ../../paths/public/orders.yaml.Current cart:
2

Recommendations in Cart (Before Checkout)

Recommendations are a cart-time feature, not a post-order step.
3

Edit Cart and Voucher

Edit add-ons for one booking:
Remove one booking:
Remove multiple bookings:
Clear cart:
Apply voucher:
Remove voucher:
Optional booking pre-calculation:
4

Collect Checkout Data

Collect the customer data, payment method, and legal document acceptances required for the current organization.Public integrations should treat these requirements as organization-defined checkout configuration rather than depending on internal UI helper endpoints.
5

Optional Guest Email Verification

If guest email verification is enabled for the checkout flow, complete that verification before the final order submission.The external contract is the verify_guest_email field on POST /api/v1/order. Helper endpoints used by anny-hosted UIs are internal-only and not part of the external integration surface.
6

Submit Checkout

Customer and address are submitted as separate objects. Keep customer fields under customer.* and address fields under address.*.
Validation depends on the organization’s checkout configuration and selected payment method. Address fields returned by the form are organization-country aware (for example state/area is only returned where relevant).
7

Handle Payment Redirect

If meta.payment.next_action.type = redirect, redirect to meta.payment.next_action.url.After the payment provider redirects the user back, proceed to Step 8 to fetch the completed order.
8

Fetch Last Succeeded Orders

last-succeeded authorization is token-pair based and requires matching oids[] and oats[] arrays.

Common Errors