Customer API

Customer API

Customer-facing API for building applications on top of Tiquo

The Customer API lets you build customer-facing applications where customers can manage their profile and payment methods, view orders, bookings, memberships, companies, wallet cards, guest flows, and enquiries, and use eligible access features. It is designed for browsers, mobile apps, and other customer-facing clients.

Base URL

https://edge.tiquo.app/api/client/v1

Authentication

Customer-scoped operations require a valid JWT access token in the Authorization header. Tokens are issued to customers through one of two authentication methods:

  • DOM Package - Email OTP flow for browser-based apps
  • OAuth/OIDC - Authorization code flow for more complex integrations
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...

Access tokens expire after at most 1 hour and can be shorter when the original customer session is close to expiry. Use the refresh endpoint to get a new token pair before the current token expires.

These operations use different authentication:

  • POST /refresh authenticates with a refresh token in the request body.
  • POST /enquiries can accept an unauthenticated website submission with a public integration key and an allowed origin.
  • POST /marketing/subscribe uses a public integration key and allowed Origin for opt-in signup without login.

See Customer Authentication with the DOM Package and Customer Authentication with OAuth/OIDC for more details on how tokens are obtained and managed.

Package coverage

The Customer API can be called directly, and parts of it are wrapped by the two browser integrations:

  • The npm DOM Package wraps profile and photo updates, orders, bookings (including cancelling, rescheduling, and ticket downloads), receipts, enquiries, companies, guest flows, guest invitations and passes, and wallet-card links. It handles Customer API token refresh automatically.
  • The Hosted Package wraps profile and photo updates, orders, bookings (including cancelling and rescheduling), memberships, guest flows, guest invitations and passes, and wallet-card links through window.Tiquo and related data-tiquo-* attributes. It also handles Customer API token refresh automatically.
  • Payment methods and access-control operations currently require direct Customer API calls. The deprecated legacy wallet-ticket exchange is intended only for older clients.

Some package features use separate Auth DOM or analytics endpoints and are covered outside this Customer API reference: OTP delivery and verification, logout, iframe authentication, service catalogs, and website analytics.

CORS

Authenticated Customer API requests support browser CORS and reflect the requesting origin. Public enquiry and marketing signup submissions are additionally restricted by the integration key's allowed-domain configuration.

Available endpoints

MethodEndpointDescription
GET/profileGet the authenticated customer's profile
PATCH/profileUpdate the authenticated customer's profile
POST/profile/email-verification/sendSend a code before adding a secondary email
POST/profile/email-verification/verifyVerify and add a secondary email
POST/profile/photo-upload-urlCreate a profile-photo upload URL
POST/profile/photoFinalise an uploaded profile photo
GET/payment-methodsList saved payment methods
PATCH/payment-methodsChange the checkout default while preserving active membership payment methods
DELETE/payment-methodsRemove a saved payment method
POST/payment-methods/setupStart saving a card or direct-debit payment method
POST/payment-methods/confirmSave a confirmed payment method
GET/ordersGet the customer's order history
GET/receiptGet a printable receipt for one order
GET/bookingsGet the customer's booking history
POST/bookings/cancelCancel a booking or withdraw a waiting-list request
GET/bookings/reschedule-optionsList the times a booking can move to
POST/bookings/rescheduleMove a booking to another time
GET/booking-ticketDownload a booking ticket PDF
GET/membershipsGet the customer's memberships and public plans
GET/membership-payments/recoveryInspect a failed membership payment
POST/membership-payments/recoveryRetry, replace a card, or finalise payment recovery
POST/membership-payments/payment-method-linkCreate a link for someone else to supply a payment method
POST/membership-payments/billing-addressChoose the billing address for future renewals
GET/guest-flowsGet guest pre-registration flows available to the customer
GET/guest-passesList the customer's live sent and received guest invitations
POST/guest-invitationsCreate guest invitations from a Guest Flow
GET/guest-invitationsRead one invitation by its token
POST/guest-invitations/acceptAccept an invitation as the guest
GET/wallet-card-linksGet Apple Wallet and Google Wallet links for a wallet-card design
POST/legacy-wallet-ticket-linkExchange an owned legacy booking-ticket reference for its current wallet link
GET/companiesGet the customer's company memberships
GET/companies/colleaguesGet colleagues for a company the customer administers
GET/enquiriesGet the customer's enquiry history
POST/enquiriesCreate an enquiry
GET/accessGet access groups available to the customer
POST/access/unlockUnlock an eligible door
POST/refreshRefresh an expired access token

Data scope

Customer API responses are scoped to the authenticated customer's organization and identity. Most endpoints return only the customer's own data. The exception is GET /companies/colleagues: a customer who is an administrator of an associated company can view basic contact cards for colleagues in that company. Customers without that company-admin role receive 403 Forbidden.

Response format

Most successful read operations use this envelope:

{
  "success": true,
  "data": { ... }
}

Some operations keep resources at the top level for SDK compatibility. In particular, profile updates return customer, enquiry creation returns enquiry and customer, and payment-method operations return paymentMethods, setupIntentId, clientSecret, or paymentMethod. Membership-payment operations return recovery, setup, link, or billingAddress at the top level. Follow the response schema documented for each operation.

JSON error responses use:

{
  "success": false,
  "error": "Invalid or expired token"
}

Common errors

StatusMeaning
400Missing or invalid request data
401Missing, invalid, or expired JWT token
403A linked customer profile or feature permission is required
404The requested customer-owned resource is unavailable
500Internal server error

Guest invitation endpoints

Guest Invitations and Passes covers GET /guest-passes, GET /guest-invitations, POST /guest-invitations, and POST /guest-invitations/accept. These use a customer token; invitation operations require a completed profile.

Public Marketing Signup covers opt-in-only website submissions with an integration key and allowed Origin.

On this page