Paywall namespace
Reference for public candidate-access offers.
A
JRetrieve the public offers shown before a signed-in candidate begins checkout through board.me.access.
board.paywall.offers()
1offers(options?: FetchOptions): Promise<ListEnvelope<PaywallOffer>>
Returns the enabled public tiers. When the candidate-access paywall is disabled, the response is a valid list envelope with an empty data array.
12345const { data: offers } = await board.paywall.offers({cache: 'force-cache',});const defaultOffer = offers.find((offer) => offer.isDefault) ?? offers[0];
Each PaywallOffer includes its public offerKey, label, billing copy, amount and currency, offer type, interval, and default state. Internal Stripe price IDs are not exposed.
Start checkout
Offer discovery is public. Checkout belongs to the authenticated candidate:
12345const session = await board.me.access.checkout({offerKey: 'monthly',returnPath: '/account/access',colorMode: 'light',});
Use the selected returned offer’s key after validating it against the checkout input accepted by your installed SDK. Mount the returned connected-account checkout kit as described by AccessCheckoutSession. Do not assume a lifetime offer has a recurring-subscription portal.
Errors and feature behavior
- An empty offer list means the paywall is disabled or has no enabled public offers; render no checkout CTA.
- Authenticated access methods can return
paywall_disabled,paywall_offer_not_found,paywall_no_candidate_profile, or checkout-specific errors. - Reload entitlement state through
board.me.access.grantafter checkout instead of trusting a return query parameter.
See the Me namespace for checkout, polling, grants, and billing portal methods.