API reference

Website demos API

Website demo requests and bookings

HTTP reference. Generated from the backend contract. Browse endpoints below or download OpenAPI.

This group has 7 operations, generated from api/openapi.yaml. Filter by path, action, or authentication. Each endpoint lists its inputs; expand it for a request template and response codes. Templates need your own values and a schema-valid body.

Replace uppercase placeholders with your values. For a JSON request, save a body matching the schema in request.json. Cookie examples use a local cookie jar from an authenticated session.

Website demo requests and bookings

POST/website/demo-requests

Submit Website Demo Request

Same-origin anonymous website intake. Saves the request and independent delivery jobs before classification. Idempotency-Key is an independently random private retry UUID, retained only in browser memory. It is not the public flow_id. Matching retries set the same HttpOnly screenrig_demo cookie and return the saved request without another submission.

Requests and responses are excluded from payload logging. Country does not select a timezone. No project or dashboard login is created.

Authentication
none
Request body
DemoRequestInput
Operation ID
submitWebsiteDemoRequest

Parameters

NameSend inRequired?Description
OriginheaderrequiredSame-origin browser request; configured stage origin is accepted on stage.
Idempotency-Keyheaderrequired
fqueryoptionalNonsecret funnel attempt ID, identical to body flow_id.
srcqueryoptionalAllowlisted source, identical to body source.

Request body fields

FieldDescription
email (required, string)maxLength: 254 format: "email"
country (required, string)ISO 3166-1 country code; retained separately from timezone. pattern: "^[A-Z]{2}$"
screen_range (required, string)Allowed: "1_10", "11_50", "51_250", "251_plus", "unknown"
organization (required, string)Allowed: "small_mid", "large_corporation", "agency_network"
budget (required, string)Self-reported annual signage budget in USD. Allowed: "under_2995", "2995_19994", "19995_plus", "unknown"
timezone (required, string)IANA timezone, or empty when browser detection is unavailable; scheduling requires explicit timezone. maxLength: 100
source (required, DemoSource)Allowed: "home_hero", "home_paid_plans", "pricing_plus", "pricing_education", "pricing_premium", "pricing_enterprise", "resellers", "direct"
flow_id (required, string)Random nonsecret analytics attempt ID, never authorization. pattern: "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
Request template and responses
shell · request template
curl --request POST --cookie-jar cookies.txt --header 'Origin: https://screenrig.ai' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/website/demo-requests'

Responses

StatusMeaningBody and headers
201Request durably saved. Sets private demo session cookie.DemoResult (application/json)
200Matching idempotent replay of the saved request.DemoResult (application/json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
GET/website/demo-request

Get Website Demo Request

Cookie-bound saved request. A request ID or public flow ID does not grant access. No-store.

Authentication
demoSession
Request body
none
Operation ID
getWebsiteDemoRequest
Request template and responses
shell · request template
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/website/demo-request'

Responses

StatusMeaningBody and headers
200Saved demo request and booking state.DemoResult (application/json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
GET/website/demo-calendar

Get Website Demo Calendar

Private calendar download for this browser's confirmed booking. Rechecks the saved event; no request ID or public flow ID grants access. No-store.

Authentication
demoSession
Request body
none
Operation ID
getWebsiteDemoCalendar
Request template and responses
shell · request template
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/website/demo-calendar'

Responses

StatusMeaningBody and headers
200Importable calendar event with stable identity and confirmed times.string (text/calendar)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
GET/website/demo-slots

Get Website Demo Slots

Up to four real available 30-minute slots, varied across dates and times when possible, in the visitor's editable IANA timezone. Private slot IDs are returned in the JSON body and never sent in URL queries. Unconfigured calendar or no reasonable timezone overlap returns an empty list.

Authentication
demoSession
Request body
none
Operation ID
getWebsiteDemoSlots

Parameters

NameSend inRequired?Description
timezonequeryrequired
refreshqueryoptionalOffer alternatives to the previous cookie-bound batch.
Request template and responses
shell · request template
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/website/demo-slots?timezone=TIMEZONE'

Responses

StatusMeaningBody and headers
200Real available slots or an empty list.DemoSlots (application/json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/website/demo-bookings

Book Website Demo

Rechecks a cookie-bound slot, atomically reserves host buffer cells and creates a stable event in the configured local or Google calendar. Confirmation requires the real event and saved booking. Ambiguous provider failures remain pending for durable reconciliation, without a second event or false booked page.

Authentication
demoSession
Request body
object
Operation ID
bookWebsiteDemo

Parameters

NameSend inRequired?Description
OriginheaderrequiredSame-origin browser request; configured stage origin is accepted on stage.
fqueryoptionalNonsecret funnel attempt ID, identical to the saved flow_id.
srcqueryoptionalSaved allowlisted source.

Request body fields

FieldDescription
slot_id (required, string)Empty only for replay of an already confirmed cookie-bound booking. pattern: "^([A-Za-z0-9_-]{20,128})?$"
timezone (required, string)maxLength: 100
Request template and responses
shell · request template
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Origin: https://screenrig.ai' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/website/demo-bookings'

Responses

StatusMeaningBody and headers
201Calendar event and booking confirmed and saved.DemoResult (application/json)
200Already confirmed booking replay.DemoResult (application/json)
202Booking pending provider reconciliation; excluded from confirmed booking analytics.DemoResult (application/json)
409

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/website/demo-review

Request Website Demo Review

Flags the existing on-demand request for team review without another questionnaire. Late classifier replies cannot reverse this choice.

Authentication
demoSession
Request body
object
Operation ID
requestWebsiteDemoReview

Parameters

NameSend inRequired?Description
OriginheaderrequiredSame-origin browser request; configured stage origin is accepted on stage.
Request template and responses
shell · request template
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Origin: https://screenrig.ai' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/website/demo-review'

Responses

StatusMeaningBody and headers
200Current saved request with review requested.DemoResult (application/json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)
POST/website/demo-session

Exchange Website Demo Invitation

Exchanges an emailed seven-day booking invitation for a browser-only HttpOnly demo session. The website removes its invite fragment before any request and sends the token only in this private POST body, never in a URL, redirect, analytics marker or log. Multiple browser sessions may access the same invitation-bound request.

Authentication
none
Request body
object
Operation ID
exchangeWebsiteDemoInvitation

Parameters

NameSend inRequired?Description
OriginheaderrequiredSame-origin browser request; configured stage origin is accepted on stage.

Request body fields

FieldDescription
token (required, string)pattern: "^[A-Za-z0-9_-]{20,128}$"
Request template and responses
shell · request template
curl --request POST --cookie-jar cookies.txt --header 'Origin: https://screenrig.ai' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/website/demo-session'

Responses

StatusMeaningBody and headers
200Cookie set and saved demo request returned.DemoResult (application/json)
default

Stable RFC 9457 problem response. A 421 server_draining carries Retry-After of 1 second, a 500 not_ready or dependency_unavailable carries 5, and a 500 manifest_degraded carries 60, unless the handler set a more specific value.

Problem (application/problem+json)