openapi: 3.0.3 info: title: 'Slotkit Public API' description: 'Generated Slotkit Public API contract.' version: 1.0.0 servers: - url: 'https://api.slotkit.app' tags: - name: 'Booking Invitations' description: '' - name: Bookings description: '' - name: 'Event Types' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'Create an API Key from Administration settings. Keys are displayed once and must remain in server-side secret storage.' security: - default: [] paths: /v1/booking-invitations: get: summary: 'List Booking Invitations' operationId: listBookingInvitations description: '' parameters: - in: query name: status description: 'Optional effective Invitation status.' example: active required: false schema: type: string description: 'Optional effective Invitation status.' example: active enum: - not_yet_valid - active - expired - exhausted - revoked - in: query name: event_type_id description: 'Optional Event Type identifier. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y required: false schema: type: string description: 'Optional Event Type identifier. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y - in: query name: cursor description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.' example: null required: false schema: type: string description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.' example: null - in: query name: limit description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.' example: 20 required: false schema: type: integer description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.' example: 20 responses: 200: description: '' content: application/json: schema: type: object example: data: - id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: {} created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null meta: request_id: req_0123456789abcdef0123456789abcdef next_cursor: null properties: data: type: array example: - id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: [] created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null items: type: object properties: id: type: string example: biv_01J5N6WB5KGN event_type_id: type: string example: evt_01J5N6W5KP7Y email: type: string example: guest@example.com not_before: type: string example: null nullable: true expires_at: type: string example: '2026-09-01T00:00:00.000Z' max_uses: type: integer example: 1 used_count: type: integer example: 0 status: type: string example: active metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' revoked_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef next_cursor: type: string example: null nullable: true tags: - 'Booking Invitations' post: summary: 'Create a Booking Invitation' operationId: createABookingInvitation description: '' parameters: - in: header name: Idempotency-Key description: '' example: invitation_018fafe4 schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: {} created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null invitation_url: 'https://book.slotkit.example/invitations/example-one-time-credential' meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: biv_01J5N6WB5KGN event_type_id: type: string example: evt_01J5N6W5KP7Y email: type: string example: guest@example.com not_before: type: string example: null nullable: true expires_at: type: string example: '2026-09-01T00:00:00.000Z' max_uses: type: integer example: 1 used_count: type: integer example: 0 status: type: string example: active metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' revoked_at: type: string example: null nullable: true invitation_url: type: string example: 'https://book.slotkit.example/invitations/example-one-time-credential' meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Booking Invitations' requestBody: required: true content: application/json: schema: type: object properties: event_type_id: type: string description: 'Invitation-only Event Type. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y email: type: string description: 'Optional recipient restriction. Must not be greater than 254 characters.' example: guest@example.com nullable: true not_before: type: string description: 'Optional RFC 3339 UTC activation time. Must be a valid date.' example: null nullable: true expires_at: type: string description: 'Required RFC 3339 UTC expiration. Must be a valid date.' example: '2026-09-01T00:00:00.000Z' max_uses: type: integer description: 'Maximum successful Booking uses. Must be between 1 and 100.' example: 1 metadata: type: object description: 'Caller-owned JSON object.' example: external_id: crm_123 properties: {} required: - event_type_id - expires_at - max_uses '/v1/booking-invitations/{bookingInvitation}': get: summary: 'Get a Booking Invitation' operationId: getABookingInvitation description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: {} created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: biv_01J5N6WB5KGN event_type_id: type: string example: evt_01J5N6W5KP7Y email: type: string example: guest@example.com not_before: type: string example: null nullable: true expires_at: type: string example: '2026-09-01T00:00:00.000Z' max_uses: type: integer example: 1 used_count: type: integer example: 0 status: type: string example: active metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' revoked_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Booking Invitations' parameters: - in: path name: bookingInvitation description: '' example: architecto required: true schema: type: string '/v1/booking-invitations/{bookingInvitation}/revoke': post: summary: 'Revoke a Booking Invitation' operationId: revokeABookingInvitation description: '' parameters: - in: header name: Idempotency-Key description: '' example: invitation_revoke_018fafe4 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: {} created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: biv_01J5N6WB5KGN event_type_id: type: string example: evt_01J5N6W5KP7Y email: type: string example: guest@example.com not_before: type: string example: null nullable: true expires_at: type: string example: '2026-09-01T00:00:00.000Z' max_uses: type: integer example: 1 used_count: type: integer example: 0 status: type: string example: active metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' revoked_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Booking Invitations' parameters: - in: path name: bookingInvitation description: '' example: architecto required: true schema: type: string '/v1/booking-invitations/{bookingInvitation}/reissue': post: summary: 'Reissue a Booking Invitation' operationId: reissueABookingInvitation description: '' parameters: - in: header name: Idempotency-Key description: '' example: invitation_reissue_018fafe4 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: biv_01J5N6WB5KGN event_type_id: evt_01J5N6W5KP7Y email: guest@example.com not_before: null expires_at: '2026-09-01T00:00:00.000Z' max_uses: 1 used_count: 0 status: active metadata: {} created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' revoked_at: null invitation_url: 'https://book.slotkit.example/invitations/example-one-time-credential' meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: biv_01J5N6WB5KGN event_type_id: type: string example: evt_01J5N6W5KP7Y email: type: string example: guest@example.com not_before: type: string example: null nullable: true expires_at: type: string example: '2026-09-01T00:00:00.000Z' max_uses: type: integer example: 1 used_count: type: integer example: 0 status: type: string example: active metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' revoked_at: type: string example: null nullable: true invitation_url: type: string example: 'https://book.slotkit.example/invitations/example-one-time-credential' meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Booking Invitations' parameters: - in: path name: bookingInvitation description: '' example: architecto required: true schema: type: string /v1/bookings: get: summary: 'List Bookings' operationId: listBookings description: '' parameters: - in: query name: status description: 'Optional Booking status.' example: confirmed required: false schema: type: string description: 'Optional Booking status.' example: confirmed enum: - confirmed - cancelled - in: query name: starts_from description: 'Inclusive RFC 3339 UTC lower bound. This field is required when starts_to is present. Must be a valid date.' example: '2026-08-01T00:00:00.000Z' required: false schema: type: string description: 'Inclusive RFC 3339 UTC lower bound. This field is required when starts_to is present. Must be a valid date.' example: '2026-08-01T00:00:00.000Z' - in: query name: starts_to description: 'Exclusive RFC 3339 UTC upper bound, at most 90 days later. This field is required when starts_from is present. Must be a valid date. Must be a date after starts_from.' example: '2026-09-01T00:00:00.000Z' required: false schema: type: string description: 'Exclusive RFC 3339 UTC upper bound, at most 90 days later. This field is required when starts_from is present. Must be a valid date. Must be a date after starts_from.' example: '2026-09-01T00:00:00.000Z' - in: query name: event_type_id description: 'Optional Event Type identifier. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y required: false schema: type: string description: 'Optional Event Type identifier. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y - in: query name: cursor description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.' example: null required: false schema: type: string description: 'Opaque cursor returned by the previous page. Must not be greater than 2048 characters.' example: null - in: query name: limit description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.' example: 20 required: false schema: type: integer description: 'Page size from 1 through 100. Must be at least 1. Must not be greater than 100.' example: 20 responses: 200: description: '' content: application/json: schema: type: object example: data: - id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: {} created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null meta: request_id: req_0123456789abcdef0123456789abcdef next_cursor: null properties: data: type: array example: - id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: [] created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null items: type: object properties: id: type: string example: bkg_01J5N6W8BT8D status: type: string example: confirmed version: type: integer example: 1 source: type: string example: api event_type_id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' guest: type: object properties: name: type: string example: 'Guest Name' email: type: string example: guest@example.com timezone: type: string example: Asia/Bangkok meeting: type: object properties: type: type: string example: google_meet join_url: type: string example: null nullable: true calendar: type: object properties: status: type: string example: pending error_code: type: string example: null nullable: true metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' rescheduled_at: type: string example: null nullable: true cancelled_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef next_cursor: type: string example: null nullable: true tags: - Bookings post: summary: 'Create a Booking' operationId: createABooking description: '' parameters: - in: header name: Idempotency-Key description: '' example: booking_018fafe4 schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: {} created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: bkg_01J5N6W8BT8D status: type: string example: confirmed version: type: integer example: 1 source: type: string example: api event_type_id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' guest: type: object properties: name: type: string example: 'Guest Name' email: type: string example: guest@example.com timezone: type: string example: Asia/Bangkok meeting: type: object properties: type: type: string example: google_meet join_url: type: string example: null nullable: true calendar: type: object properties: status: type: string example: pending error_code: type: string example: null nullable: true metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' rescheduled_at: type: string example: null nullable: true cancelled_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - Bookings requestBody: required: true content: application/json: schema: type: object properties: event_type_id: type: string description: 'Event Type to book. Must not be greater than 40 characters.' example: evt_01J5N6W5KP7Y start_at: type: string description: 'Selected Slot start as RFC 3339 UTC. Must be a valid date.' example: '2026-08-20T03:00:00.000Z' guest: type: object description: '' example: [] properties: name: type: string description: 'Guest display name. Must not be greater than 120 characters.' example: 'Guest Name' email: type: string description: 'Guest email address. Must not be greater than 254 characters.' example: guest@example.com timezone: type: string description: 'Guest IANA timezone.' example: Asia/Bangkok required: - name - email - timezone metadata: type: object description: 'Caller-owned JSON object.' example: external_id: crm_123 properties: {} required: - event_type_id - start_at - guest '/v1/bookings/{booking}': get: summary: 'Get a Booking' operationId: getABooking description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: {} created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: bkg_01J5N6W8BT8D status: type: string example: confirmed version: type: integer example: 1 source: type: string example: api event_type_id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' guest: type: object properties: name: type: string example: 'Guest Name' email: type: string example: guest@example.com timezone: type: string example: Asia/Bangkok meeting: type: object properties: type: type: string example: google_meet join_url: type: string example: null nullable: true calendar: type: object properties: status: type: string example: pending error_code: type: string example: null nullable: true metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' rescheduled_at: type: string example: null nullable: true cancelled_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - Bookings parameters: - in: path name: booking description: 'The booking.' example: architecto required: true schema: type: string '/v1/bookings/{booking}/cancel': post: summary: 'Cancel a Booking' operationId: cancelABooking description: '' parameters: - in: header name: Idempotency-Key description: '' example: booking_cancel_018fafe4 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: {} created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: bkg_01J5N6W8BT8D status: type: string example: confirmed version: type: integer example: 1 source: type: string example: api event_type_id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' guest: type: object properties: name: type: string example: 'Guest Name' email: type: string example: guest@example.com timezone: type: string example: Asia/Bangkok meeting: type: object properties: type: type: string example: google_meet join_url: type: string example: null nullable: true calendar: type: object properties: status: type: string example: pending error_code: type: string example: null nullable: true metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' rescheduled_at: type: string example: null nullable: true cancelled_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - Bookings requestBody: required: false content: application/json: schema: type: object properties: expected_version: type: integer description: 'Optional optimistic concurrency version. Must be at least 1.' example: 2 parameters: - in: path name: booking description: 'The booking.' example: architecto required: true schema: type: string '/v1/bookings/{booking}/reschedule': post: summary: 'Reschedule a Booking' operationId: rescheduleABooking description: '' parameters: - in: header name: Idempotency-Key description: '' example: booking_reschedule_018fafe4 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: bkg_01J5N6W8BT8D status: confirmed version: 1 source: api event_type_id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' guest: name: 'Guest Name' email: guest@example.com timezone: Asia/Bangkok meeting: type: google_meet join_url: null calendar: status: pending error_code: null metadata: {} created_at: '2026-08-12T00:00:00.000Z' rescheduled_at: null cancelled_at: null meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: bkg_01J5N6W8BT8D status: type: string example: confirmed version: type: integer example: 1 source: type: string example: api event_type_id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' guest: type: object properties: name: type: string example: 'Guest Name' email: type: string example: guest@example.com timezone: type: string example: Asia/Bangkok meeting: type: object properties: type: type: string example: google_meet join_url: type: string example: null nullable: true calendar: type: object properties: status: type: string example: pending error_code: type: string example: null nullable: true metadata: type: object properties: {} created_at: type: string example: '2026-08-12T00:00:00.000Z' rescheduled_at: type: string example: null nullable: true cancelled_at: type: string example: null nullable: true meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - Bookings requestBody: required: true content: application/json: schema: type: object properties: start_at: type: string description: 'New Slot start as RFC 3339 UTC. Must be a valid date.' example: '2026-08-21T04:00:00.000Z' expected_version: type: integer description: 'Required optimistic concurrency version. Must be at least 1.' example: 1 required: - start_at - expected_version parameters: - in: path name: booking description: 'The booking.' example: architecto required: true schema: type: string /v1/event-types: get: summary: 'List Event Types' operationId: listEventTypes description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX name: 'Intro call' description: null slug: intro-call duration_minutes: 30 slot_interval_minutes: 30 buffer_before_minutes: 0 buffer_after_minutes: 0 minimum_notice_minutes: 60 maximum_advance_minutes: 43200 meeting_type: google_meet status: active bookable: true unavailable_reason: null created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' meta: request_id: req_0123456789abcdef0123456789abcdef next_cursor: null properties: data: type: array example: - id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX name: 'Intro call' description: null slug: intro-call duration_minutes: 30 slot_interval_minutes: 30 buffer_before_minutes: 0 buffer_after_minutes: 0 minimum_notice_minutes: 60 maximum_advance_minutes: 43200 meeting_type: google_meet status: active bookable: true unavailable_reason: null created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' items: type: object properties: id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX name: type: string example: 'Intro call' description: type: string example: null nullable: true slug: type: string example: intro-call duration_minutes: type: integer example: 30 slot_interval_minutes: type: integer example: 30 buffer_before_minutes: type: integer example: 0 buffer_after_minutes: type: integer example: 0 minimum_notice_minutes: type: integer example: 60 maximum_advance_minutes: type: integer example: 43200 meeting_type: type: string example: google_meet status: type: string example: active bookable: type: boolean example: true unavailable_reason: type: string example: null nullable: true created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef next_cursor: type: string example: null nullable: true tags: - 'Event Types' requestBody: required: false content: application/json: schema: type: object properties: cursor: type: string description: 'Must not be greater than 2048 characters.' example: b limit: type: integer description: 'Must be at least 1. Must not be greater than 100.' example: 22 '/v1/event-types/{eventType}': get: summary: 'Get an Event Type' operationId: getAnEventType description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: evt_01J5N6W5KP7Y host_id: hst_01J5N6W4A1QX name: 'Intro call' description: null slug: intro-call duration_minutes: 30 slot_interval_minutes: 30 buffer_before_minutes: 0 buffer_after_minutes: 0 minimum_notice_minutes: 60 maximum_advance_minutes: 43200 meeting_type: google_meet status: active bookable: true unavailable_reason: null created_at: '2026-08-12T00:00:00.000Z' updated_at: '2026-08-12T00:00:00.000Z' meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: object properties: id: type: string example: evt_01J5N6W5KP7Y host_id: type: string example: hst_01J5N6W4A1QX name: type: string example: 'Intro call' description: type: string example: null nullable: true slug: type: string example: intro-call duration_minutes: type: integer example: 30 slot_interval_minutes: type: integer example: 30 buffer_before_minutes: type: integer example: 0 buffer_after_minutes: type: integer example: 0 minimum_notice_minutes: type: integer example: 60 maximum_advance_minutes: type: integer example: 43200 meeting_type: type: string example: google_meet status: type: string example: active bookable: type: boolean example: true unavailable_reason: type: string example: null nullable: true created_at: type: string example: '2026-08-12T00:00:00.000Z' updated_at: type: string example: '2026-08-12T00:00:00.000Z' meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Event Types' parameters: - in: path name: eventType description: '' example: architecto required: true schema: type: string '/v1/event-types/{eventType}/slots': get: summary: 'List available Slots' operationId: listAvailableSlots description: '' parameters: - in: query name: from description: 'First local date in the availability window. Must be a valid date in the format Y-m-d.' example: '2026-08-20' required: true schema: type: string description: 'First local date in the availability window. Must be a valid date in the format Y-m-d.' example: '2026-08-20' - in: query name: to description: 'Last local date in the availability window. Must be a valid date in the format Y-m-d.' example: '2026-08-20' required: true schema: type: string description: 'Last local date in the availability window. Must be a valid date in the format Y-m-d.' example: '2026-08-20' - in: query name: timezone description: 'IANA timezone for local Slot display.' example: Asia/Bangkok required: true schema: type: string description: 'IANA timezone for local Slot display.' example: Asia/Bangkok responses: 200: description: '' content: application/json: schema: type: object example: data: - start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' local_start_at: '2026-08-20T10:00:00+07:00' local_end_at: '2026-08-20T10:30:00+07:00' timezone: Asia/Bangkok meta: request_id: req_0123456789abcdef0123456789abcdef properties: data: type: array example: - start_at: '2026-08-20T03:00:00.000Z' end_at: '2026-08-20T03:30:00.000Z' local_start_at: '2026-08-20T10:00:00+07:00' local_end_at: '2026-08-20T10:30:00+07:00' timezone: Asia/Bangkok items: type: object properties: start_at: type: string example: '2026-08-20T03:00:00.000Z' end_at: type: string example: '2026-08-20T03:30:00.000Z' local_start_at: type: string example: '2026-08-20T10:00:00+07:00' local_end_at: type: string example: '2026-08-20T10:30:00+07:00' timezone: type: string example: Asia/Bangkok meta: type: object properties: request_id: type: string example: req_0123456789abcdef0123456789abcdef tags: - 'Event Types' parameters: - in: path name: eventType description: '' example: architecto required: true schema: type: string