Skip to content

Continue to checkout from the waitlist

The checkout.hosted.resume_waitlist operation: POST /api/v1/public/checkout_sessions/{sessionId}/waitlist/checkout in the REST API and the checkout_hosted_resume_waitlist tool in the MCP server.

POST/api/v1/public/checkout_sessions/{sessionId}/waitlist/checkout

Once the brand can sell in a waitlist customer's country, the email it sends them links here: a fresh checkout session for what they wanted to buy (the lines, URLs and settings of the session they joined from, with their email), made when they click, so the link doesn't expire with a session. While that session is open, the same link returns it. The token is the proof: no session key is needed. Send the customer to url.

Public: the hosted page calls it when the customer clicks “Continue to checkout”.

At a glance

  • REST: POST /api/v1/public/checkout_sessions/{sessionId}/waitlist/checkout
  • MCP tool: checkout_hosted_resume_waitlist
  • Operation ID: checkout.hosted.resume_waitlist
  • Scope: Brand
  • Permission: checkout:write
  • Risk tier: write
  • Dry run: Not supported
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: None (a public endpoint, rate-limited per IP address)
  • Since: M7

Request

Path parameters

FieldTypeDescription
sessionIdcs_… IDThe checkout session's ID (cs_…).

Body

A JSON object (Content-Type: application/json):

FieldTypeRequiredDescription
entrywl_… IDYesThe waitlist entry (wl_…) from the link.
tokenstringYesThe token from the link.

Response

200 OK with a JSON object:

FieldTypeDescription
object"waitlist_checkout"
sessionIdcs_… IDThe fresh checkout session (cs_…).
urlstringIts hosted page, with the session key: send the customer there.
expiresAtdate-time

Examples

From the “opened” email

HTTP
POST /api/v1/public/checkout_sessions/cs_01m4tx5nj8emwbyf7y9vcf48aa/waitlist/checkout
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
Content-Type: application/json

{
  "entry": "wl_01m4tx5nj8emwbyf7y9vcf48ah",
  "token": "Qm9vdF9sZWF2ZV90b2tlbl9leGFtcGxlXzAwMDAwMDA"
}

Response (200):

JSON
{
  "object": "waitlist_checkout",
  "sessionId": "cs_01m6c9r2wq4h8xg3a7k5d1n0ve",
  "url": "https://ownrecord.io/c/genno/cs_01m6c9r2wq4h8xg3a7k5d1n0ve?key=Hk2pq7Vb4xR9mN3sT6wL1yG8cJ0eE5aD-uF_dK2oZ8q",
  "expiresAt": "2026-10-20T09:30:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No such checkout session, or a price of the original session is gone.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
waitlist_link_invalid400The link's entry or token is wrong, or the entry hasn't been told the brand can sell yet.Use the link exactly as it is in the email. The checkout link works only after the email saying the brand can sell in your country.
price_archived409A price the customer wanted is archived: the brand no longer sells it.Reactivate the price first (active: true), or use an active price.
checkout_price_not_sellable400A price the customer wanted can't be sold in this kind of session any more.Sell one-time prices and credit packs in payment mode and recurring prices in subscription mode. param names the line item.
customer_deleted400The original session's customer was deleted.Create a new customer for this buyer. Deleted customers stay readable for the records they belong to, but can't be changed.

It can also return these common errors: validation_failed, api_version_unsupported, invalid_json, unsupported_media_type, scope_required, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, dry_run_not_supported, rate_limited, internal_error.