{"openapi":"3.1.0","info":{"title":"Vybe Host API","version":"1.0.0","description":"Before using Vybe, install the required Agent Skills with `npx skills add vybe-company/vybe-mcp` and connect the Vybe MCP at https://tickets.vybe.social/api/mcp. Use both: the skills define the required workflows and the MCP provides the tools. The API is shared by humans and agents. Before creating or editing, agents should clarify missing factual and creative details, then build a conversion-focused ordered section model. Publishing requires a regular-user main host."},"externalDocs":{"description":"Required Agent Skills for creating, managing, and discovering Vybe events","url":"https://github.com/vybe-company/vybe-mcp/tree/main/skills"},"x-required-agent-setup":{"skillsCommand":"npx skills add vybe-company/vybe-mcp","skillsRepository":"vybe-company/vybe-mcp","mcpUrl":"https://tickets.vybe.social/api/mcp","required":true},"servers":[{"url":"https://tickets.vybe.social"}],"paths":{"/api/v1/events/{eventId}/participant-invites":{"post":{"summary":"Issue tickets to participant emails","description":"Issues one ticket from each selected public or hidden pool to every email. Pool availability, trigger, and capacity rules apply.","operationId":"inviteEventParticipants","security":[{"agentKey":["participants:write","tickets:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantInvite"}}}}}},"/api/v1/events/{eventId}/scanner-codes":{"get":{"summary":"List entrance scanner codes","operationId":"listScannerCodes","security":[{"agentKey":["scanners:read"]},{"cookie":[]}]},"post":{"summary":"Create an entrance scanner code","description":"Returns the code and the app /scanner URL to give door staff.","operationId":"createScannerCode","security":[{"agentKey":["scanners:write"]},{"cookie":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":["string","null"]}}}}}}}},"/api/v1/events/{eventId}/scanner-codes/{scannerCodeId}":{"patch":{"summary":"Rename an entrance scanner code","operationId":"renameScannerCode","security":[{"agentKey":["scanners:write"]},{"cookie":[]}]},"delete":{"summary":"Delete an entrance scanner code","description":"Revokes the code; tickets already scanned with it remain confirmed.","operationId":"deleteScannerCode","security":[{"agentKey":["scanners:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/pixels":{"get":{"summary":"Read Meta and TikTok pixel settings","description":"Returns pixel IDs and whether access tokens exist, but never returns stored secrets.","operationId":"getEventPixels","security":[{"agentKey":["events:read"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/pixels/{provider}":{"put":{"summary":"Set a Meta or TikTok conversion pixel","description":"Omit accessToken to preserve an existing secret. Use DELETE to remove the integration.","operationId":"updateEventPixel","security":[{"agentKey":["events:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPixelInput"}}}}},"delete":{"summary":"Remove a conversion pixel","operationId":"deleteEventPixel","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/media":{"post":{"summary":"Create a signed media upload","description":"Returns a mediaId and signed URL. target is required and must be profile_gallery, event_cover, event_section, event_theme, or event_lineup. PUT normalized JPEG or MP4 bytes to uploadUrl, then confirm the upload with the same target.","operationId":"createMediaUpload","security":[{"agentKey":["media:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMediaUpload"}}}},"responses":{"201":{"description":"Signed upload session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUploadSession"}}}}}}},"/api/v1/media/{mediaId}":{"get":{"summary":"Get uploaded media","description":"target is required and must match the target used when the upload was created.","operationId":"getMedia","security":[{"agentKey":["media:read"]},{"cookie":[]}],"parameters":[{"in":"query","name":"target","required":true,"schema":{"$ref":"#/components/schemas/MediaTarget"}}]},"delete":{"summary":"Delete media and stored files","description":"target is required and must match the target used when the upload was created.","operationId":"deleteMedia","security":[{"agentKey":["media:write"]},{"cookie":[]}],"parameters":[{"in":"query","name":"target","required":true,"schema":{"$ref":"#/components/schemas/MediaTarget"}}]}},"/api/v1/media/{mediaId}/confirm":{"post":{"summary":"Confirm a direct media upload","description":"target is required and must match the target used when the upload was created.","operationId":"confirmMediaUpload","security":[{"agentKey":["media:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["target"],"properties":{"target":{"$ref":"#/components/schemas/MediaTarget"}}}}}},"responses":{"200":{"description":"Confirmed media","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}}}}},"/api/v1/events":{"get":{"summary":"List managed events","operationId":"listEvents","security":[{"agentKey":["events:read"]},{"cookie":[]}]},"post":{"summary":"Create a draft event","description":"Create only after clarifying the user's requirements. Strong drafts use a short memorable name, accurate times, a polished cover poster, a concise first text section for search/summaries, and an exact entrance location with user-chosen privacy.","operationId":"createEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEvent"}}}}}},"/api/v1/events/{eventRef}":{"get":{"summary":"Get a public event by token","description":"No authentication is required. Returns the ordered public section model and public ticket information. When valid credentials belong to an event manager and include events:read and tickets:read, the response also contains private.","operationId":"getEvent","security":[],"parameters":[{"in":"path","name":"eventRef","required":true,"description":"Public event token for GET; event UUID for mutations.","schema":{"type":"string"}}],"responses":{"200":{"description":"Public event with optional manager-only data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvent"}}}}}},"patch":{"summary":"Apply section and ticket-type diffs","description":"Read the canonical event first, clarify ambiguous changes, preserve untouched content, and apply only the intended diffs.","operationId":"updateEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEvent"}}}}},"delete":{"summary":"Delete an event with no sold tickets","operationId":"deleteEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/discovery":{"get":{"summary":"Discover public events","description":"Cursor-paginated public discovery with relevance-ranked search, top/soonest/nearby ordering, locality filtering, and coordinate-radius filtering.","operationId":"discoverEvents","security":[],"parameters":[{"in":"query","name":"pageToken","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":50}},{"in":"query","name":"query","schema":{"type":"string","maxLength":200}},{"in":"query","name":"location","schema":{"type":"string","maxLength":200}},{"in":"query","name":"sort","schema":{"enum":["top","soonest","nearby"]}},{"in":"query","name":"latitude","schema":{"type":"number","minimum":-90,"maximum":90}},{"in":"query","name":"longitude","schema":{"type":"number","minimum":-180,"maximum":180}},{"in":"query","name":"radiusKm","schema":{"type":"number","minimum":0.1,"maximum":500}}],"responses":{"200":{"description":"One discovery page and an opaque continuation token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryPage"}}}}}}},"/api/v1/events/{eventId}/publish":{"post":{"summary":"Publish a draft (human owner required)","operationId":"publishEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/agent-invite":{"post":{"summary":"Create an agent co-host approval URL","description":"Agents use this deterministic, stateless URL to ask the current human owner to add them as a co-host.","operationId":"createAgentEventInvite","security":[{"agentKey":["events:write"]}],"responses":{"200":{"description":"Human approval URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEventInvite"}}}}}}},"/api/v1/events/{eventId}/claim":{"post":{"summary":"Claim an agent draft as a human and publish","operationId":"claimEvent","security":[{"cookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"}}}}}}}},"/api/v1/events/{eventId}/cancel":{"post":{"summary":"Cancel an event and refund tickets","operationId":"cancelEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/end":{"post":{"summary":"End an active event","operationId":"endEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/reactivate":{"post":{"summary":"Reactivate an ended event (human owner required)","operationId":"reactivateEvent","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/managers":{"get":{"summary":"List event managers","operationId":"listEventManagers","security":[{"agentKey":["events:read"]},{"cookie":[]}]},"post":{"summary":"Add an event manager (human owner required)","operationId":"addEventManager","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/managers/{profileId}":{"delete":{"summary":"Remove an event manager (human owner required)","operationId":"removeEventManager","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/ownership":{"post":{"summary":"Transfer ownership to a human manager","operationId":"transferEventOwnership","security":[{"agentKey":["events:write"]},{"cookie":[]}]}},"/api/v1/events/{eventId}/balance":{"get":{"summary":"Get detailed event balance","description":"Returns sales, fees, refunds, available funds, and scan progress. Payout requests remain human-only.","operationId":"getEventBalance","security":[{"agentKey":["finance:read"]},{"cookie":[]}],"responses":{"200":{"description":"Detailed event balance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventBalance"}}}}}}},"/api/v1/events/{eventId}/participants":{"get":{"summary":"List detailed event participants","description":"Returns paginated participant profiles, private email addresses, join times, and ticket details. date_of_birth and gender are public profile fields and are included in this list only when that event's required_fields selected them. Scanner responses omit them. A handle is the sole public profile identifier.","operationId":"listEventParticipants","security":[{"agentKey":["participants:read"]},{"cookie":[]}],"parameters":[{"in":"query","name":"filter","schema":{"enum":["active","pending","refunded","all"]}},{"in":"query","name":"offset","schema":{"type":"integer","minimum":0}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Participant page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantPage"}}}}}}},"/api/v1/agents":{"post":{"summary":"Provision a machine agent and receive its key","description":"Anonymous and rate-limited per network. Creates a machine identity and returns its agent key exactly once. Send the key as Authorization: Bearer on every later request. MCP hosts do not need this: events.create without an agentKey issues one.","operationId":"registerAgent","security":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":60,"description":"Display name shown to humans as this agent's profile. Prefer agentName."},"agentName":{"type":"string","maxLength":60,"description":"Public name stored on the agent profile and Auth user. Same as name."}}}}}},"responses":{"201":{"description":"Agent provisioned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedAgentKey"}}}},"429":{"description":"Provisioning rate limit exceeded"}}}},"/api/mcp":{"post":{"summary":"Model Context Protocol endpoint","description":"Streamable HTTP MCP with no HTTP-level authentication. Every tool accepts optional agentKey and agentName arguments; events.create and media.create_upload issue a key when called without agentKey. agentName is stored as the agent profile and Auth display name.","operationId":"mcp","security":[]}}},"components":{"securitySchemes":{"agentKey":{"type":"http","scheme":"bearer","description":"Opaque agent key (vybe_ak_...) returned once by POST /api/v1/agents or by the first MCP creating call. Send X-Agent-Name to set the public display name. New keys receive the minimum draft scopes; each operation lists the scope it requires."},"cookie":{"type":"apiKey","in":"cookie","name":"sb-access-token"}},"schemas":{"ParticipantInvite":{"type":"object","required":["emails","poolIds"],"properties":{"emails":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string","format":"email"}},"poolIds":{"type":"array","minItems":1,"items":{"type":"string","format":"uuid"}},"locale":{"enum":["en","pl"]}}},"EventPixelInput":{"type":"object","required":["pixelId"],"properties":{"pixelId":{"type":"string","description":"Meta numeric pixel ID or TikTok alphanumeric pixel ID."},"accessToken":{"type":"string","description":"Optional server conversion token. Omit to preserve the stored token."}}},"EventBalance":{"type":"object","properties":{"event_id":{"type":"string","format":"uuid"},"currency":{"type":["string","null"]},"gross_amount":{"type":["number","null"]},"net_amount":{"type":["number","null"]},"available_amount":{"type":["number","null"]},"platform_fees":{"type":["number","null"]},"stripe_fees":{"type":["number","null"]},"promoter_commissions":{"type":["number","null"]},"refunded_amount":{"type":["number","null"]},"sold_count":{"type":["integer","null"]},"purchased_count":{"type":["integer","null"]},"confirmed_count":{"type":["integer","null"]},"refunded_count":{"type":["integer","null"]},"pending_count":{"type":["integer","null"]},"confirmation_rate":{"type":["number","null"],"description":"At least 0.65 is required to unlock payouts unless waived."},"scan_threshold":{"type":"number","const":0.65},"scan_threshold_met":{"type":"boolean"},"scan_threshold_waived":{"type":"boolean"}}},"ParticipantPage":{"type":"object","required":["participants","offset","limit","hasMore"],"properties":{"participants":{"type":"array","items":{"type":"object","required":["user_id","email","tickets"],"properties":{"user_id":{"type":"string","format":"uuid"},"email":{"type":["string","null"],"format":"email"},"profile_handle":{"type":["string","null"],"description":"Public profile handle."},"profile_display_name":{"type":["string","null"]},"date_of_birth":{"type":["string","null"],"format":"date","description":"Included only when this event's required_fields selected date_of_birth. Also stored on the public profiles table. Omitted from scanner responses."},"gender":{"type":["string","null"],"enum":["male","female","other"],"description":"Included only when this event's required_fields selected gender. Also stored on the public profiles table. Omitted from scanner responses."},"joined_at":{"type":["string","null"],"format":"date-time"},"ticket_count":{"type":"integer"},"tickets":{"type":"array","items":{"type":"object"}}}}},"offset":{"type":"integer"},"limit":{"type":"integer"},"hasMore":{"type":"boolean"}}},"IssuedAgentKey":{"type":"object","required":["agentKey","agentId","name","scopes","instructions"],"properties":{"agentKey":{"type":"string","pattern":"^vybe_ak_[A-Za-z0-9_-]{43}$"},"agentId":{"type":"string","format":"uuid"},"name":{"type":"string"},"scopes":{"type":"array","items":{"enum":["events:read","events:write","media:read","media:write","tickets:read","tickets:write","participants:read","participants:write","promoters:read","promoters:write","scanners:read","scanners:write","finance:read"]}},"instructions":{"type":"string"}}},"MediaTarget":{"type":"string","enum":["profile_gallery","event_cover","event_section","event_theme","event_lineup"],"description":"Required on media create, confirm, get, and delete. Chooses the storage table, bucket, and accepted file type."},"CreateMediaUpload":{"type":"object","required":["target","type","mimeType","fileSizeBytes","width","height"],"properties":{"target":{"$ref":"#/components/schemas/MediaTarget"},"type":{"enum":["image","video"]},"mimeType":{"enum":["image/jpeg","video/mp4"]},"fileSizeBytes":{"type":"integer","minimum":1},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0},"durationSeconds":{"type":"number","exclusiveMinimum":0},"placeholderHash":{"type":"string"},"hasThumbnail":{"type":"boolean"}}},"MediaUploadSession":{"type":"object","required":["mediaId","uploadUrl"],"properties":{"mediaId":{"type":"string","format":"uuid"},"uploadUrl":{"type":"string","format":"uri"},"thumbnailUploadUrl":{"type":"string","format":"uri"}}},"Media":{"type":"object","required":["id","type","status","url"],"properties":{"id":{"type":"string","format":"uuid"},"type":{"enum":["image","video"]},"status":{"enum":["pending","uploaded","failed"]},"url":{"type":"string","format":"uri"},"thumbnailUrl":{"type":["string","null"],"format":"uri"},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationSeconds":{"type":["number","null"]},"placeholderHash":{"type":["string","null"]}}},"CreateEvent":{"type":"object","required":["sections"],"properties":{"sections":{"type":"array","items":{"$ref":"#/components/schemas/SectionInput"}},"ticketTypes":{"type":"array","description":"Optional. When omitted or empty, a free enabled ticket pool is created so guests can join immediately.","items":{"$ref":"#/components/schemas/TicketTypeInput"}}}},"SectionInput":{"description":"Canonical section payload. event_name, theme, required_fields, visibility, and date_time are required singleton sections. cover_image is optional. Other singleton sections may occur at most once.","oneOf":[{"title":"Event name","type":"object","required":["type","name"],"properties":{"type":{"const":"event_name"},"name":{"type":"string"},"nameFont":{"type":["string","null"]}}},{"title":"Theme","type":"object","required":["type","themeId"],"properties":{"type":{"const":"theme"},"themeId":{"type":"string"}}},{"title":"Cover image","description":"Optional singleton. mediaId may be null; deleting this section clears the cover image.","type":"object","required":["type"],"properties":{"type":{"const":"cover_image"},"mediaId":{"type":["string","null"],"format":"uuid"}}},{"title":"Required participant fields","type":"object","required":["type","fields"],"properties":{"type":{"const":"required_fields"},"fields":{"type":"array","description":"Host-selected checkout fields. date_of_birth and gender are collected only when listed here.","items":{"enum":["first_name","last_name","instagram_handle","profile_picture","phone","date_of_birth","gender"]}}}},{"title":"Search visibility","type":"object","required":["type","visibility"],"properties":{"type":{"const":"visibility"},"visibility":{"enum":["public","unlisted"]}}},{"title":"Text","type":"object","required":["type"],"properties":{"type":{"const":"text"},"label":{"type":["string","null"]},"textContent":{"type":["string","null"]}}},{"title":"Images","type":"object","required":["type","mediaIds"],"properties":{"type":{"const":"images"},"label":{"type":["string","null"]},"mediaIds":{"type":"array","items":{"type":"string","format":"uuid"}}}},{"title":"Date and time","type":"object","required":["type","startsAt","endsAt"],"properties":{"type":{"const":"date_time"},"startsAt":{"type":"string"},"endsAt":{"type":"string"},"timeZone":{"type":"string"}}},{"title":"Location","type":"object","required":["type","location"],"properties":{"type":{"const":"location"},"location":{"oneOf":[{"$ref":"#/components/schemas/EventLocation"},{"type":"null"}]}}},{"title":"Group chat","type":"object","required":["type","groupChatUrl"],"properties":{"type":{"const":"group_chat"},"groupChatUrl":{"type":"string","format":"uri"}}},{"title":"Promoter program","type":"object","required":["type"],"properties":{"type":{"const":"promoter_program"}}},{"title":"Lineup","type":"object","required":["type","artists"],"properties":{"type":{"const":"lineup"},"label":{"type":["string","null"]},"artists":{"type":"array","items":{"$ref":"#/components/schemas/LineupArtist"}}}},{"title":"FAQ","type":"object","required":["type","faqItems"],"properties":{"type":{"const":"faq"},"label":{"type":["string","null"]},"faqItems":{"type":"array","items":{"$ref":"#/components/schemas/FaqItem"}}}}],"discriminator":{"propertyName":"type"}},"EventSection":{"allOf":[{"$ref":"#/components/schemas/SectionInput"},{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Stable section ID returned by events.get. Structural sections use deterministic event.* IDs; persisted sections use UUIDs."}}}]},"EventLocation":{"type":"object","required":["address","lat","lng","approximateAddress","approximateLat","approximateLng","visibility"],"properties":{"address":{"type":"string","description":"Exact guest entrance address."},"name":{"type":["string","null"],"description":"Club or well-known venue name."},"lat":{"type":"number"},"lng":{"type":"number"},"entryInstructions":{"type":["string","null"]},"approximateAddress":{"type":"string"},"approximateLat":{"type":"number"},"approximateLng":{"type":"number"},"locality":{"type":["string","null"]},"visibility":{"enum":["public","participants_only"]}}},"LineupArtist":{"type":"object","required":["name"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"mediaId":{"type":["string","null"],"format":"uuid"},"spotifyUrl":{"type":["string","null"],"format":"uri"},"appleMusicUrl":{"type":["string","null"],"format":"uri"},"instagramUsername":{"type":["string","null"]}}},"FaqItem":{"type":"object","required":["question","answer"],"properties":{"id":{"type":"string","format":"uuid"},"question":{"type":"string"},"answer":{"type":"string"}}},"SectionDiff":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/SectionInput"},{"type":"object","required":["operation"],"properties":{"operation":{"const":"CREATE"},"position":{"type":"integer","minimum":0}}}]},{"allOf":[{"$ref":"#/components/schemas/EventSection"},{"type":"object","required":["operation","id"],"properties":{"operation":{"const":"UPDATE"},"id":{"type":"string"},"position":{"type":"integer","minimum":0}}}]},{"type":"object","required":["operation","id"],"properties":{"operation":{"const":"DELETE"},"id":{"type":"string"}}}]},"TicketTypeInput":{"type":"object","required":["priceAmount","priceCurrency"],"properties":{"name":{"type":"string"},"description":{"type":["string","null"]},"priceAmount":{"type":"number"},"priceCurrency":{"type":"string"},"quantityAvailable":{"type":"integer","nullable":true},"saleStartsAt":{"type":["string","null"]},"saleEndsAt":{"type":["string","null"]},"enabled":{"type":"boolean"},"triggerPoolId":{"type":"string","format":"uuid","nullable":true},"triggerPoolClientId":{"type":"string","nullable":true},"clientId":{"type":"string"},"visibility":{"enum":["visible","hidden"]}}},"TicketTypeDiff":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/TicketTypeInput"},{"type":"object","required":["operation"],"properties":{"operation":{"const":"CREATE"}}}]},{"allOf":[{"$ref":"#/components/schemas/TicketTypeInput"},{"type":"object","required":["operation","id"],"properties":{"operation":{"const":"UPDATE"},"id":{"type":"string","format":"uuid"}}}]},{"type":"object","required":["operation","id"],"properties":{"operation":{"const":"DELETE"},"id":{"type":"string","format":"uuid"}}}]},"UpdateEvent":{"type":"object","properties":{"sectionDiffs":{"type":"array","items":{"$ref":"#/components/schemas/SectionDiff"}},"ticketTypeDiffs":{"type":"array","items":{"$ref":"#/components/schemas/TicketTypeDiff"}}}},"PublicEvent":{"type":"object","required":["id","status","isDraft","token","url","sections","media","ticketTypes","offers","organizer","theme","pixels"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"isDraft":{"type":"boolean"},"token":{"type":"string"},"url":{"type":"string","format":"uri"},"sections":{"type":"array","description":"Ordered canonical sections. Exact participant-only locations and group-chat URLs are redacted.","items":{"type":"object","required":["id","type"]}},"media":{"type":"array","items":{"$ref":"#/components/schemas/Media"}},"ticketTypes":{"type":"array","description":"Visible ticket types only.","items":{"$ref":"#/components/schemas/TicketTypeInput"}},"offers":{"type":"array","description":"Currently purchasable or scheduled public offers.","items":{"type":"object","required":["priceAmount","currency"],"properties":{"priceAmount":{"type":"number"},"currency":{"type":"string"},"saleStartsAt":{"type":["string","null"]}}}},"organizer":{"type":"object"},"theme":{"type":"object"},"referralProgram":{"type":["object","null"]},"pixels":{"type":"array","description":"Browser-safe enabled/disabled pixel configuration; secrets are never returned.","items":{"type":"object"}},"private":{"description":"Full canonical manager model; present only for an authorized event manager.","$ref":"#/components/schemas/Event"}}},"DiscoveryPage":{"type":"object","required":["events","nextPageToken"],"properties":{"events":{"type":"array","items":{"type":"object","required":["id","name","starts_at","ends_at","timezone","token","organizer_name"]}},"nextPageToken":{"type":["string","null"],"description":"Opaque continuation token. It is valid only with the same filters and sort."}}},"Event":{"type":"object","required":["id","status","isDraft","sections","media","ticketTypes","managers","token","url"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"isDraft":{"type":"boolean"},"sections":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/EventSection"},{"type":"object","required":["id"]}]}},"media":{"type":"array","description":"Uploaded media referenced by event sections, returned in section reference order.","items":{"$ref":"#/components/schemas/Media"}},"ticketTypes":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/TicketTypeInput"},{"type":"object","required":["id"],"properties":{"id":{"type":"string","format":"uuid"}}}]}},"managers":{"type":"array","items":{"type":"object","required":["profileId","role"],"properties":{"profileId":{"type":"string","format":"uuid"},"role":{"type":"string"}}}},"token":{"type":"string"},"url":{"type":"string","format":"uri"}}},"AgentEventInvite":{"type":"object","required":["eventId","agentProfileId","url"],"properties":{"eventId":{"type":"string","format":"uuid"},"agentProfileId":{"type":"string","format":"uuid"},"url":{"type":"string","format":"uri"}}},"HumanActionRequired":{"type":"object","properties":{"status":{"const":"human_action_required"},"action":{"type":"string"},"label":{"type":"string"},"reason":{"type":"string"},"url":{"type":"string","format":"uri"}}}}},"x-mcp":"https://tickets.vybe.social/api/mcp","x-openapi":"https://tickets.vybe.social/openapi.json"}