Skip to main content

Legends Alley

Base URL: https://api.vrchatlegends.com/api. Every GET below is public, needs no key, returns JSON and can be read from any origin. Responses are cached for about two minutes, so poll no faster than once a minute.

Endpoints​

GET pathResult
/alleyIndex of the endpoints on this page
/alley/landingEvent, lineup and event board in one request. Use this in worlds, where string loading is throttled
/alley/eventThe current event
/alley/communitiesCommunities that have uploaded a booth
/alley/communities/:idOne community from the lineup
/alley/scheduleThe event board
/alley/schedule/:idOne event board entry

Event​

{
"event": {
"id": "legends-alley-2027",
"slug": "alley-2027",
"name": "Legends Alley 2027",
"year": 2027,
"displayDate": "November 6-7, 2027",
"startsAt": "2027-11-05T16:30:00.000Z",
"endsAt": "2027-11-08T04:00:00.000Z",
"timezone": "America/Chicago",
"status": "upcoming",
"acceptingBooths": true,
"uploadDeadline": null
}
}

status is upcoming, live or ended. Times are UTC ISO 8601 strings, or null when not set.

Communities​

Only communities with an uploaded booth are listed. An approved community appears as soon as its first booth is accepted.

{
"count": 1,
"communities": [
{
"id": "665f0c...",
"name": "Cozy Corner",
"description": "A late night hangout community.",
"logoUrl": "https://alley.vrchatlegends.com/api/communities/665f0c.../logo",
"publicUrl": "https://discord.gg/example",
"boothVersion": 3,
"boothUpdatedAt": "2027-10-01T12:00:00.000Z"
}
]
}

Event board​

Accepted community events, DJ sets and live performances. Entries are added automatically when staff accept the application, and the host fills in the time and details afterwards.

{
"count": 1,
"schedule": [
{
"id": "evt_4f1c2a9b7d3e5a601b2c",
"kind": "community-event",
"kindLabel": "Community event",
"category": "Meetup or hangout",
"title": "Midnight Meetup",
"summary": "A relaxed hangout under the signs.",
"hostName": "Neon Host",
"startsAt": "2027-11-06T23:00:00.000Z",
"endsAt": "2027-11-07T00:30:00.000Z",
"durationMinutes": 90,
"location": "Main Stage",
"worldUrl": "https://vrchat.com/home/world/wrld_...",
"link": null,
"updatedAt": "2027-10-20T18:04:11.000Z"
}
]
}

kind is community-event, dj or performer. Scheduled entries come first in time order, followed by entries whose startsAt is still null.

Editing an entry​

Hosts edit their own entry from the event board on the Legends Alley page. The same actions are available with a signed-in session token:

Method and pathResult
GET /alley/schedule/manageEntries the signed-in user can edit
PATCH /alley/schedule/:idUpdate title, summary, startsAt, durationMinutes, location, worldUrl or link

Send only the fields you want to change. startsAt is an ISO 8601 time or null, durationMinutes is 5 to 720, and links must start with https://. Staff can also set status to published or hidden.

Udon example​

public VRCUrl landingUrl = new VRCUrl("https://api.vrchatlegends.com/api/alley/landing");

void Start() { VRCStringDownloader.LoadUrl(landingUrl, (IUdonEventReceiver)this); }

public override void OnStringLoadSuccess(IVRCStringDownload result)
{
if (!VRCJson.TryDeserializeFromJson(result.Result, out DataToken data)) return;
DataList schedule = data.DataDictionary["schedule"].DataList;
for (int i = 0; i < schedule.Count; i++)
{
DataDictionary entry = schedule[i].DataDictionary;
Debug.Log(entry["title"].String + " hosted by " + entry["hostName"].String);
}
}