Skip to content

Confirm a waitlist sign-up

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

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

Confirms a waitlist entry with the token from its email (double opt-in, spec §23). The token is the proof: no session key is needed. Only the latest link sent works, for 7 days; confirming twice changes nothing.

At a glance

  • REST: POST /api/v1/public/checkout_sessions/{sessionId}/waitlist/confirm
  • MCP tool: checkout_hosted_confirm_waitlist
  • Operation ID: checkout.hosted.confirm_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: M4

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 confirmation link.
tokenstringYesThe token from the confirmation link.

Response

200 OK with a JSON object:

FieldTypeDescription
status"confirmed"
brandNamestring
countrystring
countryNamestring

Examples

Confirm from the email

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

{
  "entry": "wl_01m4tx5nj8emwbyf7y9vcf48ah",
  "token": "q9VhN3bXk2mR7tY4wP8sZ1cL6fJ0dG5aE-uB_nH3oKx"
}

Response (200):

JSON
{
  "status": "confirmed",
  "brandName": "Genno",
  "country": "GB",
  "countryName": "United Kingdom"
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No such checkout session.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
waitlist_confirmation_invalid400The link's entry or token is wrong, superseded by a newer email or older than 7 days, or the customer left the waitlist.Links work for 7 days and only the latest one sent works. Join the waitlist again to get a new email.

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.