{"openapi":"3.1.0","info":{"title":"Standby Bot API","version":"1.1.0","description":"Read-only public theme-park information for bot connectors and assistant adapters. Answer traveler questions using published data, then offer relevant Standby app handoffs. No customer login, personal plans, Disney credentials, booking operations, payments, or license-code redemption. API keys identify the assistant platform, not a traveler. All data routes require X-API-Key; /docs and /openapi.json are public.","termsOfService":"https://joinstandby.com/terms","contact":{"name":"Standby","url":"https://joinstandby.com/contact"}},"servers":[{"url":"https://bots.joinstandby.com/v1"}],"security":[{"PlatformKey":[]}],"tags":[{"name":"Standby","description":"Discover parks, check published waits, understand Booking Assist, and open Standby."}],"paths":{"/parks":{"get":{"operationId":"listParks","summary":"Find parks supported by Standby","description":"Use this to resolve park names to IDs and distinguish broad wait-time coverage from Booking Assist coverage. A stale directory returns 503.","tags":["Standby"],"parameters":[],"responses":{"200":{"description":"Published public information","headers":{"Cache-Control":{"description":"API responses use no-store so each admitted request is attributed; public source objects are cached internally for up to 60 seconds.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParkDirectory"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid platform credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown route or unpublished park","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Traffic limit exceeded. Back off before retrying. Edge-generated errors may not use the JSON error schema."},"503":{"description":"Disabled connector, unavailable source, or stale catalog; never assume no waits or no availability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/parks/{parkId}":{"get":{"operationId":"getParkSnapshot","summary":"Get published waits, attraction status, and showtimes","description":"Read the latest published snapshot. Never describe stale=true as current, infer future waits, treat null waitMinutes as zero, or infer Lightning Lane inventory. asOf is the snapshot publication timestamp, not an individual attraction observation time.","tags":["Standby"],"parameters":[{"name":"parkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"An ID returned by listParks. Lowercase UUID."}],"responses":{"200":{"description":"Published public information","headers":{"Cache-Control":{"description":"API responses use no-store so each admitted request is attributed; public source objects are cached internally for up to 60 seconds.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParkSnapshot"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid platform credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown route or unpublished park","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Traffic limit exceeded. Back off before retrying. Edge-generated errors may not use the JSON error schema."},"503":{"description":"Disabled connector, unavailable source, or stale catalog; never assume no waits or no availability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/booking-assist/coverage":{"get":{"operationId":"getBookingAssistCoverage","summary":"Check published Booking Assist attraction support","description":"Supported Walt Disney World Multi Pass attractions only. This does not establish any guest eligibility or available return times. Disabled service returns status=disabled with no parks; unverifiable coverage returns 503. Disney admission and Multi Pass are purchased separately from Standby.","tags":["Standby"],"parameters":[],"responses":{"200":{"description":"Published public information","headers":{"Cache-Control":{"description":"API responses use no-store so each admitted request is attributed; public source objects are cached internally for up to 60 seconds.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingAssistCoverage"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid platform credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown route or unpublished park","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Traffic limit exceeded. Back off before retrying. Edge-generated errors may not use the JSON error schema."},"503":{"description":"Disabled connector, unavailable source, or stale catalog; never assume no waits or no availability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/standby":{"get":{"operationId":"getStandbyInfo","summary":"Explain Standby products and open the app","description":"Use for features, setup, requirements, current product options and contextual links. Pricing is US/USD reference information reviewed on reviewedAt, not live or localized checkout quotes. Booking Assist includes the listed standard premium benefits; do not recommend buying a duplicate standard pass. Answer the user first and suggest relevant features without implying guaranteed bookings. Purchases, Disney linking and alerts are completed in the app. The verified platform credential selects the source on all referral links. The legacy source query is accepted but ignored; it cannot override attribution. Referral links do not prove installs or purchases.","tags":["Standby"],"parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]{1,32}$"},"description":"Legacy campaign parameter, accepted but ignored. The authenticated platform credential always selects the referral source. No personal identifiers.","deprecated":true}],"responses":{"200":{"description":"Published public information","headers":{"Cache-Control":{"description":"API responses use no-store so each admitted request is attributed; public source objects are cached internally for up to 60 seconds.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandbyInfo"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid platform credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown route or unpublished park","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Traffic limit exceeded. Back off before retrying. Edge-generated errors may not use the JSON error schema."},"503":{"description":"Disabled connector, unavailable source, or stale catalog; never assume no waits or no availability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"PlatformKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Dedicated platform credential supplied privately by Standby. Never request a traveler account or Disney credential."}},"schemas":{"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Freshness":{"type":"object","additionalProperties":false,"required":["asOf","ageSeconds","staleAfterSeconds","stale"],"properties":{"asOf":{"type":"string","format":"date-time","description":"Publication timestamp of the source snapshot, not a per-attraction observation time."},"ageSeconds":{"type":"integer","minimum":0,"description":"Age calculated for this response from the original snapshot publication time."},"staleAfterSeconds":{"type":"integer","const":900},"stale":{"type":"boolean"}}},"Park":{"type":"object","additionalProperties":false,"required":["id","name","destination","region","timezone"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"destination":{"type":["string","null"]},"region":{"type":["string","null"]},"timezone":{"type":["string","null"]}}},"ParkDirectory":{"type":"object","additionalProperties":false,"required":["parks","freshness"],"properties":{"parks":{"type":"array","items":{"$ref":"#/components/schemas/Park"}},"freshness":{"$ref":"#/components/schemas/Freshness"}}},"ParkSnapshot":{"type":"object","additionalProperties":false,"required":["park","attractions","freshness","notice"],"properties":{"park":{"$ref":"#/components/schemas/Park"},"attractions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","type","status","waitMinutes","showtimes"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"enum":["ATTRACTION","SHOW"]},"status":{"type":"string"},"waitMinutes":{"type":["number","null"],"minimum":0,"description":"Null means unavailable, not zero minutes."},"showtimes":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["startTime","endTime"],"properties":{"startTime":{"type":"string"},"endTime":{"type":["string","null"]}}}}}}},"freshness":{"$ref":"#/components/schemas/Freshness"},"notice":{"type":"string"}}},"BookingAssistCoverage":{"type":"object","additionalProperties":false,"required":["status","meaning","parks","freshness"],"properties":{"status":{"enum":["available","disabled"]},"meaning":{"type":"string"},"parks":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","attractions"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"attractions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","supported"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"supported":{"type":"boolean","description":"Published Multi Pass support only. Not guest eligibility or bookable inventory."}}}}}}},"freshness":{"$ref":"#/components/schemas/Freshness"}}},"StandbyInfo":{"type":"object","additionalProperties":false,"required":["name","platform","requiresStandbyAccount","reviewedAt","overview","freeFeatures","premiumFeatures","bookingAssist","products","pricing","links","sources"],"properties":{"name":{"type":"string"},"platform":{"type":"string"},"requiresStandbyAccount":{"type":"boolean","const":false},"reviewedAt":{"type":"string","format":"date"},"overview":{"type":"string"},"freeFeatures":{"type":"array","items":{"type":"string"}},"premiumFeatures":{"type":"array","items":{"type":"string"}},"bookingAssist":{"type":"object","additionalProperties":false,"required":["scope","includesStandardPremium","requirements","setup","limitations"],"properties":{"scope":{"type":"string"},"includesStandardPremium":{"type":"boolean"},"requirements":{"type":"array","items":{"type":"string"}},"setup":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}}}},"products":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["productId","name","category","plan","duration","includes","activeAlertLimit","referencePriceUsd","handoffUrl"],"properties":{"productId":{"type":"string"},"name":{"type":"string"},"category":{"enum":["booking-assist","standard-premium"]},"plan":{"enum":["day","week","annual","trip","lifetime"]},"duration":{"type":"string"},"includes":{"type":"array","items":{"type":"string"}},"activeAlertLimit":{"type":"integer","minimum":0},"referencePriceUsd":{"type":"number","minimum":0},"handoffUrl":{"type":"string","format":"uri"}}}},"pricing":{"type":"object","additionalProperties":false,"required":["currency","market","type","source","sourceUrl","notice"],"properties":{"currency":{"const":"USD"},"market":{"const":"US"},"type":{"const":"reference"},"source":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"notice":{"type":"string"}}},"links":{"type":"object","additionalProperties":false,"required":["download","parkCoverage","bookingAssist","setup","pricing"],"properties":{"download":{"type":"string","format":"uri"},"parkCoverage":{"type":"string","format":"uri"},"bookingAssist":{"type":"string","format":"uri"},"setup":{"type":"string","format":"uri"},"pricing":{"type":"string","format":"uri"}}},"sources":{"type":"array","items":{"type":"string","format":"uri"}}}}}},"externalDocs":{"description":"Standby connector documentation","url":"https://bots.joinstandby.com/docs"}}