Dokumentacja API
Passes
Season passes and bundles across events: what they include and who holds them.
List passes
GET/passes
Lists the workspace's season passes and bundles, with the events each admits to, how many were sold and the seats each event holds for their holders, the latest change first.
- Uprawnienia
- tickets:read
Parametry
zapytanie
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Domyślnie:
100updatedSincestring (date-time)Only what changed at or after this moment, in UTC unless it says otherwise. Pass the newest updatedUtc your last sync saw.
communityIdstring (uuid)Only this community's season passes.
eventIdstring (uuid)Only the passes this event sells or admits to.
Odpowiedzi
- 200 A page of passes. PassList
Pola
dataPass[]The items of this page.
Pokaż pola
passIdstring (uuid)The pass's id.
kindstringA community's season pass, or a bundle sold on an event's page.
Jedno z:
season,bundlecommunityIdstring (uuid) lub nullA season pass's community.
salesEventIdstring (uuid)The event whose orders, payments and invoices carry the pass's money.
namestringIts name, as the invoice line shows it.
descriptionstring lub nullWhat it includes.
pricenumberIts price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate in the price, in percent.
currencystringThe ISO 4217 code: the sales event's, and every included event's.
capacityinteger (int32)How many are sold, and the seats each event holds for holders.
soldinteger (int32)Holders whose order is paid or free.
waitinginteger (int32)Holders whose payment is under way.
leftinteger (int32)How many are left to sell.
scopestringThe community's meetups between two days (range), or the events named (list).
Jedno z:
range,listseriesIdstring (uuid) lub nullA range pass's one series, when it names one.
fromDatestring (date) lub nullA range's first day at the venue.
toDatestring (date) lub nullA range's last day at the venue.
salesStartUtcstring (date-time) lub nullOn sale from, in UTC.
salesEndUtcstring (date-time) lub nullOn sale until, in UTC.
refundRulestringWhat the page promises about refunds; the organiser decides every refund, never pro rata.
Jedno z:
beforeFirst,organiser,nonestatusstringBeing set up, on sale, or no longer sold.
Jedno z:
draft,onSale,closedeventsPassEvent[]The events it admits to, the first first.
Pokaż pola
eventIdstring (uuid)The event's id.
namestringThe event's name.
startsUtcstring (date-time)When it begins, in UTC.
holdersinteger (int32)Holders whose ticket there lets them in.
optedOutinteger (int32)Holders who said they cannot come; their seats went back to the event.
heldSeatsinteger (int32)The seats every pass holds at the event for its holders, which its other limited ticket types do not sell.
sourcestringWhether the organiser named it (list) or it is a meetup in a season pass's range (range).
Jedno z:
list,range
createdUtcstring (date-time)When it was made, in UTC.
updatedUtcstring (date-time)When it last changed, in UTC.
nextCursorstring lub nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor, invalidUpdatedSince, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 429 rateLimited.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope invalidCursor invalidUpdatedSince invalidRequest
Żądanie
curl "https://attendbeacon.com/api/v1/passes?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/passes?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/passes?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/passes", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/passes?limit=2" -Headers $headers200 Przykładowa odpowiedź
{
"data": [
{
"passId": "b3ac8000-0000-4000-8000-000000000001",
"kind": "season",
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"salesEventId": "b3ac6201-0000-4000-8000-000000000000",
"name": "Season pass 2026–27",
"description": "Every Beacon Community meetup from November to June, with a seat kept for you.",
"price": 120,
"vatRate": 21,
"currency": "EUR",
"capacity": 20,
"sold": 5,
"waiting": 0,
"left": 15,
"scope": "range",
"seriesId": "b3ac6202-0000-4000-8000-000000000001",
"fromDate": "2026-11-01",
"toDate": "2027-06-30",
"salesStartUtc": null,
"salesEndUtc": null,
"refundRule": "beforeFirst",
"status": "onSale",
"events": [
{
"eventId": "b3ac6210-0000-4000-8000-000000000005",
"name": "Beacon Community #25: November 2026",
"startsUtc": "2026-11-05T17:30:00.000Z",
"holders": 5,
"optedOut": 0,
"heldSeats": 20,
"source": "range"
},
{
"eventId": "b3ac6210-0000-4000-8000-000000000006",
"name": "Beacon Community #26: December 2026",
"startsUtc": "2026-12-03T17:30:00.000Z",
"holders": 4,
"optedOut": 1,
"heldSeats": 19,
"source": "range"
}
],
"createdUtc": "2026-10-01T09:00:00.000Z",
"updatedUtc": "2026-10-01T09:00:00.000Z"
}
],
"nextCursor": null,
"hasMore": false
}400 invalidCursor, invalidUpdatedSince, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/passes",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Get a pass
GET/passes/{passId}
Gets one season pass or bundle with its events.
- Uprawnienia
- tickets:read
- Odpowiada z nagłówkiem ETag; wyślij If-None-Match, aby nie pobierać danych ponownie.
Parametry
ścieżka
passIdstring (uuid)wymaganeThe pass's id.
nagłówek
If-None-MatchstringThe ETag you have: when it is still current the answer is 304 with no body.
Odpowiedzi
- 200 The pass. Pass
Pola
passIdstring (uuid)The pass's id.
kindstringA community's season pass, or a bundle sold on an event's page.
Jedno z:
season,bundlecommunityIdstring (uuid) lub nullA season pass's community.
salesEventIdstring (uuid)The event whose orders, payments and invoices carry the pass's money.
namestringIts name, as the invoice line shows it.
descriptionstring lub nullWhat it includes.
pricenumberIts price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate in the price, in percent.
currencystringThe ISO 4217 code: the sales event's, and every included event's.
capacityinteger (int32)How many are sold, and the seats each event holds for holders.
soldinteger (int32)Holders whose order is paid or free.
waitinginteger (int32)Holders whose payment is under way.
leftinteger (int32)How many are left to sell.
scopestringThe community's meetups between two days (range), or the events named (list).
Jedno z:
range,listseriesIdstring (uuid) lub nullA range pass's one series, when it names one.
fromDatestring (date) lub nullA range's first day at the venue.
toDatestring (date) lub nullA range's last day at the venue.
salesStartUtcstring (date-time) lub nullOn sale from, in UTC.
salesEndUtcstring (date-time) lub nullOn sale until, in UTC.
refundRulestringWhat the page promises about refunds; the organiser decides every refund, never pro rata.
Jedno z:
beforeFirst,organiser,nonestatusstringBeing set up, on sale, or no longer sold.
Jedno z:
draft,onSale,closedeventsPassEvent[]The events it admits to, the first first.
Pokaż pola
eventIdstring (uuid)The event's id.
namestringThe event's name.
startsUtcstring (date-time)When it begins, in UTC.
holdersinteger (int32)Holders whose ticket there lets them in.
optedOutinteger (int32)Holders who said they cannot come; their seats went back to the event.
heldSeatsinteger (int32)The seats every pass holds at the event for its holders, which its other limited ticket types do not sell.
sourcestringWhether the organiser named it (list) or it is a meetup in a season pass's range (range).
Jedno z:
list,range
createdUtcstring (date-time)When it was made, in UTC.
updatedUtcstring (date-time)When it last changed, in UTC.
- 304 Not modified: If-None-Match named the representation as it is.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 notFound.
- 429 rateLimited.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope notFound
Żądanie
curl "https://attendbeacon.com/api/v1/passes/{passId}" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/passes/{passId}", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/passes/{passId}");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/passes/{passId}",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/passes/{passId}" -Headers $headers200 Przykładowa odpowiedź
{
"passId": "b3ac8000-0000-4000-8000-000000000001",
"kind": "season",
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"salesEventId": "b3ac6201-0000-4000-8000-000000000000",
"name": "Season pass 2026–27",
"description": "Every Beacon Community meetup from November to June, with a seat kept for you.",
"price": 120,
"vatRate": 21,
"currency": "EUR",
"capacity": 20,
"sold": 5,
"waiting": 0,
"left": 15,
"scope": "range",
"seriesId": "b3ac6202-0000-4000-8000-000000000001",
"fromDate": "2026-11-01",
"toDate": "2027-06-30",
"salesStartUtc": null,
"salesEndUtc": null,
"refundRule": "beforeFirst",
"status": "onSale",
"events": [
{
"eventId": "b3ac6210-0000-4000-8000-000000000005",
"name": "Beacon Community #25: November 2026",
"startsUtc": "2026-11-05T17:30:00.000Z",
"holders": 5,
"optedOut": 0,
"heldSeats": 20,
"source": "range"
},
{
"eventId": "b3ac6210-0000-4000-8000-000000000006",
"name": "Beacon Community #26: December 2026",
"startsUtc": "2026-12-03T17:30:00.000Z",
"holders": 4,
"optedOut": 1,
"heldSeats": 19,
"source": "range"
}
],
"createdUtc": "2026-10-01T09:00:00.000Z",
"updatedUtc": "2026-10-01T09:00:00.000Z"
}401 invalidKey, keyExpired, keyRevoked.
{
"type": "https://attendbeacon.com/developers/errors#invalidKey",
"title": "No working API key",
"status": 401,
"detail": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key.",
"instance": "/api/v1/passes/{passId}",
"code": "invalidKey",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key."
}List pass holders
GET/passes/{passId}/holders
Lists who holds a pass, the newest first, with their ticket at each event it admits to. Names and addresses need people:read.
- Uprawnienia
- attendees:read
Parametry
ścieżka
passIdstring (uuid)wymaganeThe pass's id.
zapytanie
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Domyślnie:
100statusstringOnly holders with this status.
Jedno z:
active,ended
Odpowiedzi
- 200 A page of holders. PassHolderList
Pola
dataPassHolder[]The items of this page.
Pokaż pola
holderIdstring (uuid)The holder's id.
passIdstring (uuid)The pass's id.
statusstringActive, or ended by a refund or because its order was let go.
Jedno z:
active,endedendedReasonstring lub nullWhy it ended: refunded, cancelled or orderGone.
endedUtcstring (date-time) lub nullWhen it ended, in UTC.
orderIdstring (uuid)The order on the sales event that pays for it.
orderStatusstringThe order's status: paid, free, pending, refunded and the others.
firstNamestring lub nullTheir first name. Null without people:read.
lastNamestring lub nullTheir last name. Null without people:read.
emailstring lub nullTheir address. Null without people:read.
handedOverbooleanWhether the pass was handed to its holder by somebody who had it before.
createdUtcstring (date-time)When it was bought, in UTC.
eventsPassHolderEvent[]Their ticket at each event of the pass.
Pokaż pola
eventIdstring (uuid)The event's id.
attendeeIdstring (uuid) lub nullThe holder's attendee at the event, as the attendees list names them; null while it is being written.
statestringA ticket that lets them in, given back, the event begun, being written, or cancelled.
Jedno z:
ticket,optedOut,held,waiting,cancelledcheckedInbooleanWhether it came through the door.
nextCursorstring lub nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 notFound.
- 429 rateLimited.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope notFound invalidCursor invalidRequest
Żądanie
curl "https://attendbeacon.com/api/v1/passes/{passId}/holders?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/passes/{passId}/holders?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/passes/{passId}/holders?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/passes/{passId}/holders", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/passes/{passId}/holders?limit=2" -Headers $headers200 Przykładowa odpowiedź
{
"data": [
{
"holderId": "b3ac8001-0000-4000-8000-000000000001",
"passId": "b3ac8000-0000-4000-8000-000000000001",
"status": "active",
"endedReason": null,
"endedUtc": null,
"orderId": "b3ac8002-0000-4000-8000-000000000001",
"orderStatus": "paid",
"firstName": "Mila",
"lastName": "Jansen",
"email": "mila.jansen@example.com",
"handedOver": false,
"createdUtc": "2026-10-02T19:12:00.000Z",
"events": [
{
"eventId": "b3ac6210-0000-4000-8000-000000000005",
"attendeeId": "b3ac8003-0000-4000-8000-000000000001",
"state": "ticket",
"checkedIn": false
},
{
"eventId": "b3ac6210-0000-4000-8000-000000000006",
"attendeeId": "b3ac8003-0000-4000-8000-000000000002",
"state": "optedOut",
"checkedIn": false
}
]
}
],
"nextCursor": null,
"hasMore": false
}400 invalidCursor, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/passes/{passId}/holders",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Przewodniki i ta witryna są w twoim języku. Opisy w samej dokumentacji API są po angielsku, tak jak mówi samo API.