Get Available Time Slots
Get bookable time slots for a business. Supports two modes: **Public mode** (no authentication): Returns standard free/busy time slots. No event details are included. **Consent-scoped mode** (authentication + `consent_id`): Returns availability scoped by the referenced consent's permissions. The authenticated user must be the grantee on the consent. Response includes a `consent` audit trail. With `availability:read:details` scope, slots include event titles and descriptions.
Auth required: Yes
business_id (query, string) — Business UUID to check availability for. Also accepted as `principal_id` (alias).principal_id (query, string) — Alias for `business_id`. Send either (at least one required).duration_minutes (query, integer) — Meeting duration in minutes. Defaults to 30.from (query, string) (required) — Start of date range (ISO 8601)to (query, string) (required) — End of date range (ISO 8601)timezone (query, string) — Timezone for results (IANA format)buffer (query, integer) — Buffer time in minutes between bookingsgroup_by_day (query, boolean) — Group slots by dateslot_interval (query, integer) — Candidate slot cadence in minutes. Controls how far apart the start
times of returned slots are. Defaults to `min(duration_minutes, 15)`.
Values smaller than `duration_minutes` produce overlapping candidates
(caller picks one; the rest become moot once booked).
consent_id (query, string) — Consent UUID. When provided, authentication is required and the
response is scoped by the consent's permissions. The authenticated
user must be the grantee on this consent.
200: Available time slots400: Validation error401: Authentication required or invalid403: Authenticated but insufficient permissions404: Resource not foundRequires authentication. Pass a Bearer token (Supabase JWT) or an API key (`Authorization: Bearer vennio_sk_live_*`) in the request headers.
Base URL: https://api.vennio.app