Stan Store hub

Stan Store Availability API

Free meeting slots and upcoming webinar sessions for one product, in the timezone and window you ask for.

GET /v1/stan-store/creators/{handle}/products/{slug}/availability

1 credit Failed requests are free

About this endpoint

GET /v1/stan-store/creators/{handle}/products/{slug}/availability returns lookupStatus, reason, handle, productSlug, product, kind, timezone, startDate, endDate, slots and sessions.

kind is meeting, webinar or none. A meeting returns slots[] with start and end as ISO 8601 strings carrying the requested (or product) timezone's UTC offset. A webinar returns sessions[] with start, end, timezone, availableSeats and bookedSeats. A product that takes no bookings returns kind: none with both arrays empty.

Optional query parameters are timezone (an IANA name, defaulting to the product's own timezone), startDate and endDate (YYYY-MM-DD, bounding the meeting window). The default start is today in the requested timezone and the default end is 14 days later, capped by the product's booking window. endDate earlier than startDate is a 400. A valid meeting can still have zero free slots in the requested window, so an empty slots array is not an error. On a miss, product can be non-null when the product exists but its booking details do not, so read kind and the arrays as well as lookupStatus.

Stan Store Availability API FAQ

How do I get meeting slots rather than webinar sessions?

Call the route on a product whose product.meeting is non-null and carries a bookingSlug. kind comes back meeting. For a webinar product, kind comes back webinar and sessions holds the dates instead. A product with neither returns kind none.

What window does the route use?

startDate and endDate bound the meeting window, both in YYYY-MM-DD. Leave both out and the window is today in the requested timezone plus 14 days. Leave endDate out and the end is 14 days after startDate. The product's booking window caps the end date, and an endDate earlier than startDate is a 400. timezone chooses the IANA timezone for the returned times and defaults to the product's setting.

Why is lookupStatus not_found but product is present?

The product page can exist while its booking configuration does not. In that case lookupStatus is not_found, product still describes the product, and slots and sessions are empty. Check kind and the arrays, not just product.

Can a found meeting have no slots?

Yes. A meeting with no free time in the requested window returns lookupStatus found, kind meeting and an empty slots array. That is a valid answer, not an error or a not_found.

How many credits does an availability lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.

What do availableSeats and bookedSeats mean?

On a webinar session from this route, availableSeats is the remaining seat count and bookedSeats is the count already taken. Either can be null when the session does not state a seat count. The product route's webinar sessions carry null seat counts; use this route for seats.