Référence de l’API
Events
Events: list them, read one, create a draft, change its basics, publish it, and its numbers.
List events
GET/events
Lists the workspace's events, oldest change first, with how many attendees and check-ins each has. Filter by status or by part of the name.
- Autorisations
- events:read
Paramètres
requête
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.
Par défaut :
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.
statusstringOnly events with this status.
Valeurs possibles :
draft,published,closedqstringOnly events whose name or address holds this text.
Réponses
- 200 A page of events. EventList
Champs
dataEventSummary[]The events.
Afficher les champs
eventIdstring (uuid)The event's id.
slugstringThe event's address: /e/{slug}.
namestringThe event's name.
statusstringDraft, published or closed.
Valeurs possibles :
draft,published,closedstartDatestring (date)The first day, in the venue's time zone.
endDatestring (date)The last day, in the venue's time zone.
venueNamestringWhere it is.
attendeesintegerHow many valid tickets it has.
checkedInintegerHow many attendees were checked in.
sessionsintegerHow many sessions its programme has.
timeZonestringThe venue's IANA time zone, such as Europe/Amsterdam. Dates and the local times of sessions are in it.
currencystringThe currency of its tickets, as ISO 4217.
formatstringInPerson, online or hybrid.
Valeurs possibles :
inPerson,online,hybridmodulesstring[]The modules switched on, such as checkin and sponsors.
urlstring (uri)The event's public page.
createdUtcstring (date-time)When it was made, in UTC.
updatedUtcstring (date-time)When its basics last changed, in UTC. Pass the latest you have as updatedSince.
nextCursorstring ou nullThe cursor for the next page; null on the last page.
hasMorebooleanWhether there is another page.
- 400 invalidCursor, invalidUpdatedSince, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope invalidCursor invalidUpdatedSince invalidRequest
Requête
curl "https://attendbeacon.com/api/v1/events?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events?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/events?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/events", 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/events?limit=2" -Headers $headers200 Exemple de réponse
{
"data": [
{
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"slug": "beacon-summit",
"name": "Beacon Summit",
"status": "published",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"currency": "EUR",
"format": "inPerson",
"modules": [
"payments",
"addons"
],
"url": "https://attendbeacon.com/e/beacon-summit/",
"attendees": 86,
"checkedIn": 0,
"sessions": 30,
"createdUtc": "2026-10-14T21:40:48.036Z",
"updatedUtc": "2026-10-14T21:40:48.036Z"
},
{
"eventId": "b3ac2500-0000-4000-8000-000000000001",
"slug": "beacon-summit-2025",
"name": "Beacon Summit 2025",
"status": "closed",
"startDate": "2025-11-13",
"endDate": "2025-11-14",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"currency": "EUR",
"format": "inPerson",
"modules": [
"payments",
"addons"
],
"url": "https://attendbeacon.com/e/beacon-summit-2025/",
"attendees": 65,
"checkedIn": 61,
"sessions": 12,
"createdUtc": "2025-06-16T00:00:00.000Z",
"updatedUtc": "2026-10-14T21:40:49.820Z"
}
],
"nextCursor": "YzE6MDYzOTI3NjEwODQ5ODIwMDAwMHxiM2FjMjUwMDAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
"hasMore": true
}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/events",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Create a draft event Modifie des données
POST/events
Creates an event as a draft, as the workspace's New event does. Nothing is public and nobody is emailed until it is published. Answers the event as GetEvent does, with its ETag.
- Autorisations
- events:write
- Envoyez un Idempotency-Key pour que les nouvelles tentatives soient sans risque. →
Paramètres
en-tête
Idempotency-KeystringA key of your own, such as a UUID, so a retry after a lost connection is answered with the first answer instead of doing it twice. Kept 24 hours.
Corps NewEvent
The event.
namestringobligatoireIts name, at most 200 characters.
startDatestring (date)obligatoireThe first day, at the venue.
endDatestring (date)The last day; the first day when left out.
timeZonestringThe venue's IANA time zone. Europe/Amsterdam when left out.
Par défaut :
"Europe/Amsterdam"venueNamestringWhere it takes place.
venueAddressstringThe venue's address.
summarystringOne or two sentences about it.
formatstringInPerson (the default), online or hybrid.
Valeurs possibles :
inPerson,online,hybridcurrencystringThe currency of its tickets, as ISO 4217. EUR when left out.
Par défaut :
"EUR"slugstringIts address after /e/, lower case letters, digits and hyphens. Made from the name when left out.
languagesstring[]Its languages as two-letter codes, the first the default. en when left out.
modulesstring[]The modules to switch on. Every one when left out.
Réponses
- 201 The draft event. Location is its address. EventDetail
Champs
eventobjectThe event as its public page shows it, with its registration questions and theme as well.
Afficher les champs
eventIdstring (uuid)The event's id.
slugstringThe event's address: /e/{slug}.
namestringThe event's name.
statusstringDraft, published or closed.
startDatestring (date)The first day, in the venue's time zone.
endDatestring (date)The last day, in the venue's time zone.
timeZonestringThe venue's time zone, such as Europe/Amsterdam.
venueNamestringWhere it is.
venueAddressstringThe venue's address.
summarystringA line about the event.
descriptionstringWhat the event is about.
languagesstring[]The event's languages, such as en and nl.
currencystringThe currency, as ISO 4217.
contactEmailstring (email)The organiser's contact address.
formatstringIn person, online or hybrid.
programmeobject ou nullRooms, tracks, sessions, speakers and sponsors. Null without program:read.
Afficher les champs
roomsobject[]The rooms.
Afficher les champs
roomIdstring (uuid)The room's id.
namestringThe room's name.
locationstringWhere the room is.
capacityintegerHow many it seats.
tracksobject[]The tracks.
Afficher les champs
trackIdstring (uuid)The track's id.
namestringThe track's name.
colourstringThe track's colour.
sessionsobject[]The sessions.
Afficher les champs
sessionIdstring (uuid)The session's id.
titlestringThe session's title.
summarystringWhat it is about.
kindstringTalk, workshop, break and others.
roomIdstring (uuid)The room's id.
trackIdstring (uuid)The track's id.
startsUtcstring (date-time)When it starts, in UTC.
endsUtcstring (date-time)When it ends, in UTC.
startsLocalstringWhen it starts, in the venue's time.
endsLocalstringWhen it ends, in the venue's time.
capacityintegerHow many it seats, when fewer than its room.
languagestringThe language it is given in.
speakersobject[]The speakers.
Afficher les champs
speakerIdstring (uuid)The speaker's id.
namestringThe speaker's name.
jobTitlestringTheir job title.
companystringTheir company.
biostringAbout them.
photoUrlstringTheir photo's address.
sponsorsobject[]The sponsors.
Afficher les champs
sponsorIdstring (uuid)The sponsor's id.
namestringThe sponsor's name.
tierstringTheir sponsorship level.
websitestringTheir website.
boothstringTheir stand.
ticketTypesTicketType[] ou nullThe ticket types and what is sold. Null without tickets:read.
Afficher les champs
ticketTypeIdstring (uuid)The ticket type's id.
namestringIts name.
descriptionstringWhat it includes.
pricenumberThe price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate, as a percentage.
currencystringThe currency, as ISO 4217.
capacityinteger ou nullHow many may be sold, when limited.
takenintegerHow many are taken.
maxPerOrderintegerThe most one order may hold.
visibilitystringPublic, code (sold with an access code) or hidden.
Valeurs possibles :
public,code,hiddensalesStartUtcstring (date-time)When sales start, in UTC.
salesEndUtcstring (date-time)When sales end, in UTC.
sortOrderintegerIts place in the list.
eventIdstring (uuid)The event's id.
remaininginteger (int32) ou nullPlaces left, or null without a limit.
requiresApprovalbooleanWhether an order for it waits for the organiser's approval.
salesStartLocalstring ou nullWhen sales start, in the venue's time.
salesEndLocalstring ou nullWhen sales end, in the venue's time.
includedAddOnIdsstring (uuid)[]The add-ons it includes, as a bundle.
updatedUtcstring (date-time) ou nullWhen it last changed, in UTC.
updatedUtcstring (date-time)When the event's basics last changed, in UTC.
- 400 invalidBody, invalidRequest, invalidIdempotencyKey.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 409 idempotencyKeyInUse, slugTaken.
- 422 idempotencyKeyReused.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope invalidBody invalidRequest demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey slugTaken
Requête
curl -X POST "https://attendbeacon.com/api/v1/events" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Beacon Summit 2027",
"startDate": "2027-11-11",
"endDate": "2027-11-12",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage, Amsterdam",
"currency": "EUR"
}'const response = await fetch("https://attendbeacon.com/api/v1/events", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Beacon Summit 2027",
"startDate": "2027-11-11",
"endDate": "2027-11-12",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage, Amsterdam",
"currency": "EUR"
})
});
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.Post, "https://attendbeacon.com/api/v1/events");
request.Headers.Add("Idempotency-Key", Guid.NewGuid().ToString());
request.Content = new StringContent("""
{
"name": "Beacon Summit 2027",
"startDate": "2027-11-11",
"endDate": "2027-11-12",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage, Amsterdam",
"currency": "EUR"
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os, uuid
import requests
response = requests.post(
"https://attendbeacon.com/api/v1/events",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}",
"Idempotency-Key": str(uuid.uuid4())
},
json={
"name": "Beacon Summit 2027",
"startDate": "2027-11-11",
"endDate": "2027-11-12",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage, Amsterdam",
"currency": "EUR"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
"Idempotency-Key" = [guid]::NewGuid().ToString()
}
$body = @'
{
"name": "Beacon Summit 2027",
"startDate": "2027-11-11",
"endDate": "2027-11-12",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage, Amsterdam",
"currency": "EUR"
}
'@
$data = Invoke-RestMethod -Method Post -Uri "https://attendbeacon.com/api/v1/events" -Headers $headers -ContentType "application/json" -Body $body201 Exemple de réponse
{
"event": {
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"slug": "beacon-summit",
"name": "Beacon Summit",
"status": "published",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"venueAddress": "Damrak 243, 1012 ZJ Amsterdam",
"summary": "Two days on building, shipping and running software, in the old stock exchange on the Damrak.",
"description": "Beacon Summit brings together the people who build software and the people who run it. Two days, four rooms, thirty sessions, and a long table for lunch.\n\n**Bring your laptop** for the workshops on day two.",
"languages": [
"en",
"nl"
],
"currency": "EUR",
"contactEmail": "hello@beaconsummit.example",
"theme": {
"accent": "#4338ca",
"highlight": "#f59e0b",
"darkAccent": "#a5b4fc",
"darkHighlight": "#fbbf24",
"background": null,
"surface": null,
"mode": "auto",
"font": "Inter",
"headingFont": "Sora",
"headingWeight": "heavy",
"headingSpacing": "tight",
"radius": 16,
"buttonStyle": "filled",
"buttonShape": "pill",
"cardStyle": "glass",
"headerStyle": "transparent",
"logoUrl": null,
"logoDarkUrl": null,
"logoSize": "medium",
"iconUrl": null,
"heroUrl": "/media/f0de0000000040008000000000000001/b3ac001e000040008000000000000000.jpg",
"heroLayout": "image",
"heroVideoUrl": null,
"heroOverlay": 50,
"countdown": true,
"backgroundStyle": "aurora",
"pattern": "beacons",
"backgroundUrl": null,
"backgroundOverlay": 75,
"motion": "subtle",
"preset": null,
"customCss": null,
"accentInk": "#ffffff",
"highlightInk": "#0f1b2d"
},
"registration": {
"schemaVersion": 1,
"askCompany": true,
"askJobTitle": true,
"companyRequired": false,
"askSponsorConsent": true,
"questions": [
{
"id": "dietary",
"kind": "choice",
"label": {
"en": "Dietary requirements",
"nl": "Dieetwensen",
"de": "Ernährungswünsche",
"es": "Requisitos alimentarios",
"da": "Kostbehov",
"fr": "Régime alimentaire",
"fi": "Ruokavalio",
"nb": "Kostbehov",
"pt": "Restrições alimentares",
"sv": "Kostönskemål",
"pl": "Wymagania dietetyczne"
},
"required": false,
"options": [
{
"value": "none",
"label": {
"en": "None",
"nl": "Geen",
"de": "Keine",
"es": "Ninguno",
"da": "Ingen",
"fr": "Aucun",
"fi": "Ei mitään",
"nb": "Ingen",
"pt": "Nenhuma",
"sv": "Inga",
"pl": "Brak"
}
},
{
"value": "vegetarian",
"label": {
"en": "Vegetarian",
"nl": "Vegetarisch",
"de": "Vegetarisch",
"es": "Vegetariano",
"da": "Vegetar",
"fr": "Végétarien",
"fi": "Kasvis",
"nb": "Vegetar",
"pt": "Vegetariano",
"sv": "Vegetarisk",
"pl": "Wegetariańskie"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
},
{
"id": "interests",
"kind": "multiChoice",
"label": {
"en": "What are you here for?",
"nl": "Waarvoor kom je?",
"de": "Weshalb kommst du?",
"es": "¿Qué te trae aquí?",
"da": "Hvad kommer du for?",
"fr": "Qu’est-ce qui vous amène ?",
"fi": "Mitä varten tulet?",
"nb": "Hva kommer du for?",
"pt": "O que o traz cá?",
"sv": "Vad kommer du för?",
"pl": "Co cię tu sprowadza?"
},
"required": false,
"options": [
{
"value": "cloud",
"label": {
"en": "Cloud and AI",
"nl": "Cloud en AI",
"de": "Cloud und KI",
"es": "Nube e IA",
"da": "Cloud og AI",
"fr": "Cloud et IA",
"fi": "Pilvi ja tekoäly",
"nb": "Sky og KI",
"pt": "Cloud e IA",
"sv": "Moln och AI",
"pl": "Chmura i AI"
}
},
{
"value": "product",
"label": {
"en": "Product",
"nl": "Product",
"de": "Produkt",
"es": "Producto",
"da": "Produkt",
"fr": "Produit",
"fi": "Tuote",
"nb": "Produkt",
"pt": "Produto",
"sv": "Produkt",
"pl": "Produkt"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
}
]
},
"paymentProvider": null,
"updatedUtc": null,
"format": "inPerson",
"capabilities": {
"doors": true,
"badges": true,
"screens": true,
"venue": true,
"selfCheckIn": true,
"boothScanning": true,
"boothRedemption": true,
"walletPass": true,
"crewOnSite": true,
"meetingTables": true,
"onlineAccess": false,
"venueMap": true
},
"modules": [
"payments",
"addons"
],
"modulesChosen": null,
"online": null
},
"programme": {
"rooms": [
{
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"name": "Main Hall",
"location": "Ground floor, straight ahead",
"capacity": 600,
"sortOrder": 0
},
{
"roomId": "b3ac0001-0000-4000-8000-000000000001",
"name": "Graanbeurs",
"location": "Ground floor, left wing",
"capacity": 220,
"sortOrder": 1
}
],
"tracks": [
{
"trackId": "b3ac0002-0000-4000-8000-000000000000",
"name": "Cloud & AI",
"colour": "#2b8fd0",
"sortOrder": 0
},
{
"trackId": "b3ac0002-0000-4000-8000-000000000001",
"name": "Product",
"colour": "#c2410c",
"sortOrder": 1
}
],
"sessions": [
{
"sessionId": "b3ac0004-0000-4000-8000-000000000000",
"title": "Registration and coffee",
"summary": null,
"kind": "other",
"roomId": null,
"trackId": null,
"startsUtc": "2026-11-12T07:30:00.000Z",
"endsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T08:30",
"endsLocal": "2026-11-12T09:30",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": []
},
{
"sessionId": "b3ac0004-0000-4000-8000-000000000001",
"title": "Opening keynote: software that finds its way",
"summary": "Opening keynote: software that finds its way. What worked, what did not, and what to try on Monday.",
"kind": "keynote",
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"trackId": null,
"startsUtc": "2026-11-12T08:30:00.000Z",
"endsUtc": "2026-11-12T09:15:00.000Z",
"startsLocal": "2026-11-12T09:30",
"endsLocal": "2026-11-12T10:15",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": [
"b3ac0003-0000-4000-8000-000000000009"
]
}
],
"speakers": [
{
"speakerId": "b3ac0003-0000-4000-8000-000000000000",
"name": "Ada Verhoeven",
"jobTitle": "Principal Engineer",
"company": "Northwind Cloud",
"bio": "Ada builds the platforms other engineers build on, and writes about what breaks.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000000.jpg",
"email": null,
"links": [],
"sortOrder": 0
},
{
"speakerId": "b3ac0003-0000-4000-8000-000000000001",
"name": "Malik Osei",
"jobTitle": "VP Product",
"company": "Contoso",
"bio": "Malik has shipped products in four countries and still reads every support ticket.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000001.jpg",
"email": null,
"links": [],
"sortOrder": 1
}
],
"sponsors": [
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000000",
"name": "Northwind Cloud",
"tier": "Platinum",
"tierOrder": 0,
"website": "https://northwindcloud.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000000.png",
"description": "The cloud for teams who would rather be building.",
"booth": "A1",
"sortOrder": 0
},
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000001",
"name": "Contoso",
"tier": "Gold",
"tierOrder": 1,
"website": "https://contoso.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000001.png",
"description": "Software for the way people work now.",
"booth": "B2",
"sortOrder": 1
}
]
},
"ticketTypes": [
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000000",
"name": "Community pass",
"description": "Both days, lunch included. Free for members of a local user group.",
"price": 0,
"vatRate": 21,
"currency": "EUR",
"capacity": 300,
"taken": 24,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 0
},
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000001",
"name": "Conference pass",
"description": "Both days, lunch and drinks. A workshop seat is booked as an extra.",
"price": 395,
"vatRate": 21,
"currency": "EUR",
"capacity": 500,
"taken": 38,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 1
}
],
"updatedUtc": "2026-10-14T21:40:48.036Z"
}400 invalidBody, invalidRequest, invalidIdempotencyKey.
{
"type": "https://attendbeacon.com/developers/errors#invalidBody",
"title": "The body is not readable",
"status": 400,
"detail": "The body is not JSON, or a field has the wrong type.",
"instance": "/api/v1/events",
"code": "invalidBody",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "The body is not JSON, or a field has the wrong type."
}Get an event
GET/events/{eventId}
Gets an event with its programme (rooms, tracks, sessions, speakers, sponsors) when the key reads the programme, and its ticket types when it reads tickets. Never an access code or a speaker's address.
- Autorisations
- events:read
- Répond avec un ETag ; envoyez If-None-Match pour éviter un téléchargement inutile.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
en-tête
If-None-MatchstringThe ETag you have: when it is still current the answer is 304 with no body.
Réponses
- 200 The event. EventDetail
Champs
eventobjectThe event as its public page shows it, with its registration questions and theme as well.
Afficher les champs
eventIdstring (uuid)The event's id.
slugstringThe event's address: /e/{slug}.
namestringThe event's name.
statusstringDraft, published or closed.
startDatestring (date)The first day, in the venue's time zone.
endDatestring (date)The last day, in the venue's time zone.
timeZonestringThe venue's time zone, such as Europe/Amsterdam.
venueNamestringWhere it is.
venueAddressstringThe venue's address.
summarystringA line about the event.
descriptionstringWhat the event is about.
languagesstring[]The event's languages, such as en and nl.
currencystringThe currency, as ISO 4217.
contactEmailstring (email)The organiser's contact address.
formatstringIn person, online or hybrid.
programmeobject ou nullRooms, tracks, sessions, speakers and sponsors. Null without program:read.
Afficher les champs
roomsobject[]The rooms.
Afficher les champs
roomIdstring (uuid)The room's id.
namestringThe room's name.
locationstringWhere the room is.
capacityintegerHow many it seats.
tracksobject[]The tracks.
Afficher les champs
trackIdstring (uuid)The track's id.
namestringThe track's name.
colourstringThe track's colour.
sessionsobject[]The sessions.
Afficher les champs
sessionIdstring (uuid)The session's id.
titlestringThe session's title.
summarystringWhat it is about.
kindstringTalk, workshop, break and others.
roomIdstring (uuid)The room's id.
trackIdstring (uuid)The track's id.
startsUtcstring (date-time)When it starts, in UTC.
endsUtcstring (date-time)When it ends, in UTC.
startsLocalstringWhen it starts, in the venue's time.
endsLocalstringWhen it ends, in the venue's time.
capacityintegerHow many it seats, when fewer than its room.
languagestringThe language it is given in.
speakersobject[]The speakers.
Afficher les champs
speakerIdstring (uuid)The speaker's id.
namestringThe speaker's name.
jobTitlestringTheir job title.
companystringTheir company.
biostringAbout them.
photoUrlstringTheir photo's address.
sponsorsobject[]The sponsors.
Afficher les champs
sponsorIdstring (uuid)The sponsor's id.
namestringThe sponsor's name.
tierstringTheir sponsorship level.
websitestringTheir website.
boothstringTheir stand.
ticketTypesTicketType[] ou nullThe ticket types and what is sold. Null without tickets:read.
Afficher les champs
ticketTypeIdstring (uuid)The ticket type's id.
namestringIts name.
descriptionstringWhat it includes.
pricenumberThe price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate, as a percentage.
currencystringThe currency, as ISO 4217.
capacityinteger ou nullHow many may be sold, when limited.
takenintegerHow many are taken.
maxPerOrderintegerThe most one order may hold.
visibilitystringPublic, code (sold with an access code) or hidden.
Valeurs possibles :
public,code,hiddensalesStartUtcstring (date-time)When sales start, in UTC.
salesEndUtcstring (date-time)When sales end, in UTC.
sortOrderintegerIts place in the list.
eventIdstring (uuid)The event's id.
remaininginteger (int32) ou nullPlaces left, or null without a limit.
requiresApprovalbooleanWhether an order for it waits for the organiser's approval.
salesStartLocalstring ou nullWhen sales start, in the venue's time.
salesEndLocalstring ou nullWhen sales end, in the venue's time.
includedAddOnIdsstring (uuid)[]The add-ons it includes, as a bundle.
updatedUtcstring (date-time) ou nullWhen it last changed, in UTC.
updatedUtcstring (date-time)When the event's basics last changed, in UTC.
- 304 Not modified: If-None-Match named the representation as it is.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001", {
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/events/b3ac0000-0000-4000-8000-000000000001");
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/events/b3ac0000-0000-4000-8000-000000000001",
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/events/b3ac0000-0000-4000-8000-000000000001" -Headers $headers200 Exemple de réponse
{
"event": {
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"slug": "beacon-summit",
"name": "Beacon Summit",
"status": "published",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"venueAddress": "Damrak 243, 1012 ZJ Amsterdam",
"summary": "Two days on building, shipping and running software, in the old stock exchange on the Damrak.",
"description": "Beacon Summit brings together the people who build software and the people who run it. Two days, four rooms, thirty sessions, and a long table for lunch.\n\n**Bring your laptop** for the workshops on day two.",
"languages": [
"en",
"nl"
],
"currency": "EUR",
"contactEmail": "hello@beaconsummit.example",
"theme": {
"accent": "#4338ca",
"highlight": "#f59e0b",
"darkAccent": "#a5b4fc",
"darkHighlight": "#fbbf24",
"background": null,
"surface": null,
"mode": "auto",
"font": "Inter",
"headingFont": "Sora",
"headingWeight": "heavy",
"headingSpacing": "tight",
"radius": 16,
"buttonStyle": "filled",
"buttonShape": "pill",
"cardStyle": "glass",
"headerStyle": "transparent",
"logoUrl": null,
"logoDarkUrl": null,
"logoSize": "medium",
"iconUrl": null,
"heroUrl": "/media/f0de0000000040008000000000000001/b3ac001e000040008000000000000000.jpg",
"heroLayout": "image",
"heroVideoUrl": null,
"heroOverlay": 50,
"countdown": true,
"backgroundStyle": "aurora",
"pattern": "beacons",
"backgroundUrl": null,
"backgroundOverlay": 75,
"motion": "subtle",
"preset": null,
"customCss": null,
"accentInk": "#ffffff",
"highlightInk": "#0f1b2d"
},
"registration": {
"schemaVersion": 1,
"askCompany": true,
"askJobTitle": true,
"companyRequired": false,
"askSponsorConsent": true,
"questions": [
{
"id": "dietary",
"kind": "choice",
"label": {
"en": "Dietary requirements",
"nl": "Dieetwensen",
"de": "Ernährungswünsche",
"es": "Requisitos alimentarios",
"da": "Kostbehov",
"fr": "Régime alimentaire",
"fi": "Ruokavalio",
"nb": "Kostbehov",
"pt": "Restrições alimentares",
"sv": "Kostönskemål",
"pl": "Wymagania dietetyczne"
},
"required": false,
"options": [
{
"value": "none",
"label": {
"en": "None",
"nl": "Geen",
"de": "Keine",
"es": "Ninguno",
"da": "Ingen",
"fr": "Aucun",
"fi": "Ei mitään",
"nb": "Ingen",
"pt": "Nenhuma",
"sv": "Inga",
"pl": "Brak"
}
},
{
"value": "vegetarian",
"label": {
"en": "Vegetarian",
"nl": "Vegetarisch",
"de": "Vegetarisch",
"es": "Vegetariano",
"da": "Vegetar",
"fr": "Végétarien",
"fi": "Kasvis",
"nb": "Vegetar",
"pt": "Vegetariano",
"sv": "Vegetarisk",
"pl": "Wegetariańskie"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
},
{
"id": "interests",
"kind": "multiChoice",
"label": {
"en": "What are you here for?",
"nl": "Waarvoor kom je?",
"de": "Weshalb kommst du?",
"es": "¿Qué te trae aquí?",
"da": "Hvad kommer du for?",
"fr": "Qu’est-ce qui vous amène ?",
"fi": "Mitä varten tulet?",
"nb": "Hva kommer du for?",
"pt": "O que o traz cá?",
"sv": "Vad kommer du för?",
"pl": "Co cię tu sprowadza?"
},
"required": false,
"options": [
{
"value": "cloud",
"label": {
"en": "Cloud and AI",
"nl": "Cloud en AI",
"de": "Cloud und KI",
"es": "Nube e IA",
"da": "Cloud og AI",
"fr": "Cloud et IA",
"fi": "Pilvi ja tekoäly",
"nb": "Sky og KI",
"pt": "Cloud e IA",
"sv": "Moln och AI",
"pl": "Chmura i AI"
}
},
{
"value": "product",
"label": {
"en": "Product",
"nl": "Product",
"de": "Produkt",
"es": "Producto",
"da": "Produkt",
"fr": "Produit",
"fi": "Tuote",
"nb": "Produkt",
"pt": "Produto",
"sv": "Produkt",
"pl": "Produkt"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
}
]
},
"paymentProvider": null,
"updatedUtc": null,
"format": "inPerson",
"capabilities": {
"doors": true,
"badges": true,
"screens": true,
"venue": true,
"selfCheckIn": true,
"boothScanning": true,
"boothRedemption": true,
"walletPass": true,
"crewOnSite": true,
"meetingTables": true,
"onlineAccess": false,
"venueMap": true
},
"modules": [
"payments",
"addons"
],
"modulesChosen": null,
"online": null
},
"programme": {
"rooms": [
{
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"name": "Main Hall",
"location": "Ground floor, straight ahead",
"capacity": 600,
"sortOrder": 0
},
{
"roomId": "b3ac0001-0000-4000-8000-000000000001",
"name": "Graanbeurs",
"location": "Ground floor, left wing",
"capacity": 220,
"sortOrder": 1
}
],
"tracks": [
{
"trackId": "b3ac0002-0000-4000-8000-000000000000",
"name": "Cloud & AI",
"colour": "#2b8fd0",
"sortOrder": 0
},
{
"trackId": "b3ac0002-0000-4000-8000-000000000001",
"name": "Product",
"colour": "#c2410c",
"sortOrder": 1
}
],
"sessions": [
{
"sessionId": "b3ac0004-0000-4000-8000-000000000000",
"title": "Registration and coffee",
"summary": null,
"kind": "other",
"roomId": null,
"trackId": null,
"startsUtc": "2026-11-12T07:30:00.000Z",
"endsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T08:30",
"endsLocal": "2026-11-12T09:30",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": []
},
{
"sessionId": "b3ac0004-0000-4000-8000-000000000001",
"title": "Opening keynote: software that finds its way",
"summary": "Opening keynote: software that finds its way. What worked, what did not, and what to try on Monday.",
"kind": "keynote",
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"trackId": null,
"startsUtc": "2026-11-12T08:30:00.000Z",
"endsUtc": "2026-11-12T09:15:00.000Z",
"startsLocal": "2026-11-12T09:30",
"endsLocal": "2026-11-12T10:15",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": [
"b3ac0003-0000-4000-8000-000000000009"
]
}
],
"speakers": [
{
"speakerId": "b3ac0003-0000-4000-8000-000000000000",
"name": "Ada Verhoeven",
"jobTitle": "Principal Engineer",
"company": "Northwind Cloud",
"bio": "Ada builds the platforms other engineers build on, and writes about what breaks.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000000.jpg",
"email": null,
"links": [],
"sortOrder": 0
},
{
"speakerId": "b3ac0003-0000-4000-8000-000000000001",
"name": "Malik Osei",
"jobTitle": "VP Product",
"company": "Contoso",
"bio": "Malik has shipped products in four countries and still reads every support ticket.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000001.jpg",
"email": null,
"links": [],
"sortOrder": 1
}
],
"sponsors": [
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000000",
"name": "Northwind Cloud",
"tier": "Platinum",
"tierOrder": 0,
"website": "https://northwindcloud.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000000.png",
"description": "The cloud for teams who would rather be building.",
"booth": "A1",
"sortOrder": 0
},
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000001",
"name": "Contoso",
"tier": "Gold",
"tierOrder": 1,
"website": "https://contoso.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000001.png",
"description": "Software for the way people work now.",
"booth": "B2",
"sortOrder": 1
}
]
},
"ticketTypes": [
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000000",
"name": "Community pass",
"description": "Both days, lunch included. Free for members of a local user group.",
"price": 0,
"vatRate": 21,
"currency": "EUR",
"capacity": 300,
"taken": 24,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 0
},
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000001",
"name": "Conference pass",
"description": "Both days, lunch and drinks. A workshop seat is booked as an extra.",
"price": 395,
"vatRate": 21,
"currency": "EUR",
"capacity": 500,
"taken": 38,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 1
}
],
"updatedUtc": "2026-10-14T21:40:48.036Z"
}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/events/b3ac0000-0000-4000-8000-000000000001",
"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."
}Change an event Modifie des données
PATCH/events/{eventId}
Changes an event's basics as a JSON merge patch: name, dates, time zone, venue, summary, description, contact address, languages. Send If-Match with the ETag you read, so a change made in between is not overwritten.
- Autorisations
- events:write
- Envoyez If-Match avec l’ETag que vous avez lu, pour ne pas écraser une modification faite entre-temps.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
en-tête
If-MatchstringThe ETag you read, so a change made since is refused (412) rather than overwritten.
Corps EventPatch
The fields to change.
namestringIts name.
startDatestring (date)The first day, at the venue.
endDatestring (date)The last day, at the venue.
timeZonestringThe venue's IANA time zone.
slugstringIts address after /e/. Changing it breaks links people already have.
venueNamestring ou nullWhere it takes place.
venueAddressstring ou nullThe venue's address.
summarystring ou nullOne or two sentences about it.
descriptionstring ou nullWhat it is about, in Markdown.
contactEmailstring ou nullWhere attendees' questions go.
languagesstring[]Its languages, the first the default.
Réponses
- 200 The event as it is now. EventDetail
Champs
eventobjectThe event as its public page shows it, with its registration questions and theme as well.
Afficher les champs
eventIdstring (uuid)The event's id.
slugstringThe event's address: /e/{slug}.
namestringThe event's name.
statusstringDraft, published or closed.
startDatestring (date)The first day, in the venue's time zone.
endDatestring (date)The last day, in the venue's time zone.
timeZonestringThe venue's time zone, such as Europe/Amsterdam.
venueNamestringWhere it is.
venueAddressstringThe venue's address.
summarystringA line about the event.
descriptionstringWhat the event is about.
languagesstring[]The event's languages, such as en and nl.
currencystringThe currency, as ISO 4217.
contactEmailstring (email)The organiser's contact address.
formatstringIn person, online or hybrid.
programmeobject ou nullRooms, tracks, sessions, speakers and sponsors. Null without program:read.
Afficher les champs
roomsobject[]The rooms.
Afficher les champs
roomIdstring (uuid)The room's id.
namestringThe room's name.
locationstringWhere the room is.
capacityintegerHow many it seats.
tracksobject[]The tracks.
Afficher les champs
trackIdstring (uuid)The track's id.
namestringThe track's name.
colourstringThe track's colour.
sessionsobject[]The sessions.
Afficher les champs
sessionIdstring (uuid)The session's id.
titlestringThe session's title.
summarystringWhat it is about.
kindstringTalk, workshop, break and others.
roomIdstring (uuid)The room's id.
trackIdstring (uuid)The track's id.
startsUtcstring (date-time)When it starts, in UTC.
endsUtcstring (date-time)When it ends, in UTC.
startsLocalstringWhen it starts, in the venue's time.
endsLocalstringWhen it ends, in the venue's time.
capacityintegerHow many it seats, when fewer than its room.
languagestringThe language it is given in.
speakersobject[]The speakers.
Afficher les champs
speakerIdstring (uuid)The speaker's id.
namestringThe speaker's name.
jobTitlestringTheir job title.
companystringTheir company.
biostringAbout them.
photoUrlstringTheir photo's address.
sponsorsobject[]The sponsors.
Afficher les champs
sponsorIdstring (uuid)The sponsor's id.
namestringThe sponsor's name.
tierstringTheir sponsorship level.
websitestringTheir website.
boothstringTheir stand.
ticketTypesTicketType[] ou nullThe ticket types and what is sold. Null without tickets:read.
Afficher les champs
ticketTypeIdstring (uuid)The ticket type's id.
namestringIts name.
descriptionstringWhat it includes.
pricenumberThe price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate, as a percentage.
currencystringThe currency, as ISO 4217.
capacityinteger ou nullHow many may be sold, when limited.
takenintegerHow many are taken.
maxPerOrderintegerThe most one order may hold.
visibilitystringPublic, code (sold with an access code) or hidden.
Valeurs possibles :
public,code,hiddensalesStartUtcstring (date-time)When sales start, in UTC.
salesEndUtcstring (date-time)When sales end, in UTC.
sortOrderintegerIts place in the list.
eventIdstring (uuid)The event's id.
remaininginteger (int32) ou nullPlaces left, or null without a limit.
requiresApprovalbooleanWhether an order for it waits for the organiser's approval.
salesStartLocalstring ou nullWhen sales start, in the venue's time.
salesEndLocalstring ou nullWhen sales end, in the venue's time.
includedAddOnIdsstring (uuid)[]The add-ons it includes, as a bundle.
updatedUtcstring (date-time) ou nullWhen it last changed, in UTC.
updatedUtcstring (date-time)When the event's basics last changed, in UTC.
- 400 invalidBody, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound.
- 409 slugTaken.
- 412 preconditionFailed.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidBody invalidRequest demoWorkspace preconditionFailed slugTaken
Requête
curl -X PATCH "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "If-Match: $ETAG" \
-H "Content-Type: application/json" \
-d '{
"venueName": "Beurs van Berlage",
"summary": "Two days of cloud, data and AI in Amsterdam."
}'const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`,
"If-Match": etag,
"Content-Type": "application/json"
},
body: JSON.stringify({
"venueName": "Beurs van Berlage",
"summary": "Two days of cloud, data and AI in Amsterdam."
})
});
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.Patch, "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001");
request.Headers.IfMatch.Add(new EntityTagHeaderValue(etag));
request.Content = new StringContent("""
{
"venueName": "Beurs van Berlage",
"summary": "Two days of cloud, data and AI in Amsterdam."
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.patch(
"https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}",
"If-Match": etag
},
json={
"venueName": "Beurs van Berlage",
"summary": "Two days of cloud, data and AI in Amsterdam."
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
"If-Match" = $etag
}
$body = @'
{
"venueName": "Beurs van Berlage",
"summary": "Two days of cloud, data and AI in Amsterdam."
}
'@
$data = Invoke-RestMethod -Method Patch -Uri "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001" -Headers $headers -ContentType "application/json" -Body $body200 Exemple de réponse
{
"event": {
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"slug": "beacon-summit",
"name": "Beacon Summit",
"status": "published",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"venueAddress": "Damrak 243, 1012 ZJ Amsterdam",
"summary": "Two days on building, shipping and running software, in the old stock exchange on the Damrak.",
"description": "Beacon Summit brings together the people who build software and the people who run it. Two days, four rooms, thirty sessions, and a long table for lunch.\n\n**Bring your laptop** for the workshops on day two.",
"languages": [
"en",
"nl"
],
"currency": "EUR",
"contactEmail": "hello@beaconsummit.example",
"theme": {
"accent": "#4338ca",
"highlight": "#f59e0b",
"darkAccent": "#a5b4fc",
"darkHighlight": "#fbbf24",
"background": null,
"surface": null,
"mode": "auto",
"font": "Inter",
"headingFont": "Sora",
"headingWeight": "heavy",
"headingSpacing": "tight",
"radius": 16,
"buttonStyle": "filled",
"buttonShape": "pill",
"cardStyle": "glass",
"headerStyle": "transparent",
"logoUrl": null,
"logoDarkUrl": null,
"logoSize": "medium",
"iconUrl": null,
"heroUrl": "/media/f0de0000000040008000000000000001/b3ac001e000040008000000000000000.jpg",
"heroLayout": "image",
"heroVideoUrl": null,
"heroOverlay": 50,
"countdown": true,
"backgroundStyle": "aurora",
"pattern": "beacons",
"backgroundUrl": null,
"backgroundOverlay": 75,
"motion": "subtle",
"preset": null,
"customCss": null,
"accentInk": "#ffffff",
"highlightInk": "#0f1b2d"
},
"registration": {
"schemaVersion": 1,
"askCompany": true,
"askJobTitle": true,
"companyRequired": false,
"askSponsorConsent": true,
"questions": [
{
"id": "dietary",
"kind": "choice",
"label": {
"en": "Dietary requirements",
"nl": "Dieetwensen",
"de": "Ernährungswünsche",
"es": "Requisitos alimentarios",
"da": "Kostbehov",
"fr": "Régime alimentaire",
"fi": "Ruokavalio",
"nb": "Kostbehov",
"pt": "Restrições alimentares",
"sv": "Kostönskemål",
"pl": "Wymagania dietetyczne"
},
"required": false,
"options": [
{
"value": "none",
"label": {
"en": "None",
"nl": "Geen",
"de": "Keine",
"es": "Ninguno",
"da": "Ingen",
"fr": "Aucun",
"fi": "Ei mitään",
"nb": "Ingen",
"pt": "Nenhuma",
"sv": "Inga",
"pl": "Brak"
}
},
{
"value": "vegetarian",
"label": {
"en": "Vegetarian",
"nl": "Vegetarisch",
"de": "Vegetarisch",
"es": "Vegetariano",
"da": "Vegetar",
"fr": "Végétarien",
"fi": "Kasvis",
"nb": "Vegetar",
"pt": "Vegetariano",
"sv": "Vegetarisk",
"pl": "Wegetariańskie"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
},
{
"id": "interests",
"kind": "multiChoice",
"label": {
"en": "What are you here for?",
"nl": "Waarvoor kom je?",
"de": "Weshalb kommst du?",
"es": "¿Qué te trae aquí?",
"da": "Hvad kommer du for?",
"fr": "Qu’est-ce qui vous amène ?",
"fi": "Mitä varten tulet?",
"nb": "Hva kommer du for?",
"pt": "O que o traz cá?",
"sv": "Vad kommer du för?",
"pl": "Co cię tu sprowadza?"
},
"required": false,
"options": [
{
"value": "cloud",
"label": {
"en": "Cloud and AI",
"nl": "Cloud en AI",
"de": "Cloud und KI",
"es": "Nube e IA",
"da": "Cloud og AI",
"fr": "Cloud et IA",
"fi": "Pilvi ja tekoäly",
"nb": "Sky og KI",
"pt": "Cloud e IA",
"sv": "Moln och AI",
"pl": "Chmura i AI"
}
},
{
"value": "product",
"label": {
"en": "Product",
"nl": "Product",
"de": "Produkt",
"es": "Producto",
"da": "Produkt",
"fr": "Produit",
"fi": "Tuote",
"nb": "Produkt",
"pt": "Produto",
"sv": "Produkt",
"pl": "Produkt"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
}
]
},
"paymentProvider": null,
"updatedUtc": null,
"format": "inPerson",
"capabilities": {
"doors": true,
"badges": true,
"screens": true,
"venue": true,
"selfCheckIn": true,
"boothScanning": true,
"boothRedemption": true,
"walletPass": true,
"crewOnSite": true,
"meetingTables": true,
"onlineAccess": false,
"venueMap": true
},
"modules": [
"payments",
"addons"
],
"modulesChosen": null,
"online": null
},
"programme": {
"rooms": [
{
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"name": "Main Hall",
"location": "Ground floor, straight ahead",
"capacity": 600,
"sortOrder": 0
},
{
"roomId": "b3ac0001-0000-4000-8000-000000000001",
"name": "Graanbeurs",
"location": "Ground floor, left wing",
"capacity": 220,
"sortOrder": 1
}
],
"tracks": [
{
"trackId": "b3ac0002-0000-4000-8000-000000000000",
"name": "Cloud & AI",
"colour": "#2b8fd0",
"sortOrder": 0
},
{
"trackId": "b3ac0002-0000-4000-8000-000000000001",
"name": "Product",
"colour": "#c2410c",
"sortOrder": 1
}
],
"sessions": [
{
"sessionId": "b3ac0004-0000-4000-8000-000000000000",
"title": "Registration and coffee",
"summary": null,
"kind": "other",
"roomId": null,
"trackId": null,
"startsUtc": "2026-11-12T07:30:00.000Z",
"endsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T08:30",
"endsLocal": "2026-11-12T09:30",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": []
},
{
"sessionId": "b3ac0004-0000-4000-8000-000000000001",
"title": "Opening keynote: software that finds its way",
"summary": "Opening keynote: software that finds its way. What worked, what did not, and what to try on Monday.",
"kind": "keynote",
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"trackId": null,
"startsUtc": "2026-11-12T08:30:00.000Z",
"endsUtc": "2026-11-12T09:15:00.000Z",
"startsLocal": "2026-11-12T09:30",
"endsLocal": "2026-11-12T10:15",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": [
"b3ac0003-0000-4000-8000-000000000009"
]
}
],
"speakers": [
{
"speakerId": "b3ac0003-0000-4000-8000-000000000000",
"name": "Ada Verhoeven",
"jobTitle": "Principal Engineer",
"company": "Northwind Cloud",
"bio": "Ada builds the platforms other engineers build on, and writes about what breaks.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000000.jpg",
"email": null,
"links": [],
"sortOrder": 0
},
{
"speakerId": "b3ac0003-0000-4000-8000-000000000001",
"name": "Malik Osei",
"jobTitle": "VP Product",
"company": "Contoso",
"bio": "Malik has shipped products in four countries and still reads every support ticket.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000001.jpg",
"email": null,
"links": [],
"sortOrder": 1
}
],
"sponsors": [
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000000",
"name": "Northwind Cloud",
"tier": "Platinum",
"tierOrder": 0,
"website": "https://northwindcloud.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000000.png",
"description": "The cloud for teams who would rather be building.",
"booth": "A1",
"sortOrder": 0
},
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000001",
"name": "Contoso",
"tier": "Gold",
"tierOrder": 1,
"website": "https://contoso.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000001.png",
"description": "Software for the way people work now.",
"booth": "B2",
"sortOrder": 1
}
]
},
"ticketTypes": [
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000000",
"name": "Community pass",
"description": "Both days, lunch included. Free for members of a local user group.",
"price": 0,
"vatRate": 21,
"currency": "EUR",
"capacity": 300,
"taken": 24,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 0
},
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000001",
"name": "Conference pass",
"description": "Both days, lunch and drinks. A workshop seat is booked as an extra.",
"price": 395,
"vatRate": 21,
"currency": "EUR",
"capacity": 500,
"taken": 38,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 1
}
],
"updatedUtc": "2026-10-14T21:40:48.036Z"
}400 invalidBody, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidBody",
"title": "The body is not readable",
"status": 400,
"detail": "The body is not JSON, or a field has the wrong type.",
"instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001",
"code": "invalidBody",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "The body is not JSON, or a field has the wrong type."
}Publish or unpublish an event Modifie des données
PUT/events/{eventId}/status
Publishes an event, takes it back to draft or closes it, by the workspace's rules. Publishing makes its page public and opens registration as its ticket types allow.
- Autorisations
- events:write
- Envoyez If-Match avec l’ETag que vous avez lu, pour ne pas écraser une modification faite entre-temps.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
en-tête
If-MatchstringThe ETag you read, so a change made since is refused (412) rather than overwritten.
Corps EventStatusChange
The status.
statusstringobligatoireDraft (only the workspace sees it), published (its page is public and registration follows its ticket types) or closed (over: the page stays, registration stops).
Valeurs possibles :
draft,published,closed
Réponses
- 200 The event as it is now. EventDetail
Champs
eventobjectThe event as its public page shows it, with its registration questions and theme as well.
Afficher les champs
eventIdstring (uuid)The event's id.
slugstringThe event's address: /e/{slug}.
namestringThe event's name.
statusstringDraft, published or closed.
startDatestring (date)The first day, in the venue's time zone.
endDatestring (date)The last day, in the venue's time zone.
timeZonestringThe venue's time zone, such as Europe/Amsterdam.
venueNamestringWhere it is.
venueAddressstringThe venue's address.
summarystringA line about the event.
descriptionstringWhat the event is about.
languagesstring[]The event's languages, such as en and nl.
currencystringThe currency, as ISO 4217.
contactEmailstring (email)The organiser's contact address.
formatstringIn person, online or hybrid.
programmeobject ou nullRooms, tracks, sessions, speakers and sponsors. Null without program:read.
Afficher les champs
roomsobject[]The rooms.
Afficher les champs
roomIdstring (uuid)The room's id.
namestringThe room's name.
locationstringWhere the room is.
capacityintegerHow many it seats.
tracksobject[]The tracks.
Afficher les champs
trackIdstring (uuid)The track's id.
namestringThe track's name.
colourstringThe track's colour.
sessionsobject[]The sessions.
Afficher les champs
sessionIdstring (uuid)The session's id.
titlestringThe session's title.
summarystringWhat it is about.
kindstringTalk, workshop, break and others.
roomIdstring (uuid)The room's id.
trackIdstring (uuid)The track's id.
startsUtcstring (date-time)When it starts, in UTC.
endsUtcstring (date-time)When it ends, in UTC.
startsLocalstringWhen it starts, in the venue's time.
endsLocalstringWhen it ends, in the venue's time.
capacityintegerHow many it seats, when fewer than its room.
languagestringThe language it is given in.
speakersobject[]The speakers.
Afficher les champs
speakerIdstring (uuid)The speaker's id.
namestringThe speaker's name.
jobTitlestringTheir job title.
companystringTheir company.
biostringAbout them.
photoUrlstringTheir photo's address.
sponsorsobject[]The sponsors.
Afficher les champs
sponsorIdstring (uuid)The sponsor's id.
namestringThe sponsor's name.
tierstringTheir sponsorship level.
websitestringTheir website.
boothstringTheir stand.
ticketTypesTicketType[] ou nullThe ticket types and what is sold. Null without tickets:read.
Afficher les champs
ticketTypeIdstring (uuid)The ticket type's id.
namestringIts name.
descriptionstringWhat it includes.
pricenumberThe price, VAT included, with the currency's own decimals.
vatRatenumberThe VAT rate, as a percentage.
currencystringThe currency, as ISO 4217.
capacityinteger ou nullHow many may be sold, when limited.
takenintegerHow many are taken.
maxPerOrderintegerThe most one order may hold.
visibilitystringPublic, code (sold with an access code) or hidden.
Valeurs possibles :
public,code,hiddensalesStartUtcstring (date-time)When sales start, in UTC.
salesEndUtcstring (date-time)When sales end, in UTC.
sortOrderintegerIts place in the list.
eventIdstring (uuid)The event's id.
remaininginteger (int32) ou nullPlaces left, or null without a limit.
requiresApprovalbooleanWhether an order for it waits for the organiser's approval.
salesStartLocalstring ou nullWhen sales start, in the venue's time.
salesEndLocalstring ou nullWhen sales end, in the venue's time.
includedAddOnIdsstring (uuid)[]The add-ons it includes, as a bundle.
updatedUtcstring (date-time) ou nullWhen it last changed, in UTC.
updatedUtcstring (date-time)When the event's basics last changed, in UTC.
- 400 invalidBody, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound.
- 409 historyNeedsLicence.
- 412 preconditionFailed.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidBody invalidRequest demoWorkspace preconditionFailed historyNeedsLicence
Requête
curl -X PUT "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "published"
}'const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"status": "published"
})
});
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.Put, "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status");
request.Content = new StringContent("""
{
"status": "published"
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.put(
"https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
},
json={
"status": "published"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$body = @'
{
"status": "published"
}
'@
$data = Invoke-RestMethod -Method Put -Uri "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status" -Headers $headers -ContentType "application/json" -Body $body200 Exemple de réponse
{
"event": {
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"slug": "beacon-summit",
"name": "Beacon Summit",
"status": "published",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"timeZone": "Europe/Amsterdam",
"venueName": "Beurs van Berlage",
"venueAddress": "Damrak 243, 1012 ZJ Amsterdam",
"summary": "Two days on building, shipping and running software, in the old stock exchange on the Damrak.",
"description": "Beacon Summit brings together the people who build software and the people who run it. Two days, four rooms, thirty sessions, and a long table for lunch.\n\n**Bring your laptop** for the workshops on day two.",
"languages": [
"en",
"nl"
],
"currency": "EUR",
"contactEmail": "hello@beaconsummit.example",
"theme": {
"accent": "#4338ca",
"highlight": "#f59e0b",
"darkAccent": "#a5b4fc",
"darkHighlight": "#fbbf24",
"background": null,
"surface": null,
"mode": "auto",
"font": "Inter",
"headingFont": "Sora",
"headingWeight": "heavy",
"headingSpacing": "tight",
"radius": 16,
"buttonStyle": "filled",
"buttonShape": "pill",
"cardStyle": "glass",
"headerStyle": "transparent",
"logoUrl": null,
"logoDarkUrl": null,
"logoSize": "medium",
"iconUrl": null,
"heroUrl": "/media/f0de0000000040008000000000000001/b3ac001e000040008000000000000000.jpg",
"heroLayout": "image",
"heroVideoUrl": null,
"heroOverlay": 50,
"countdown": true,
"backgroundStyle": "aurora",
"pattern": "beacons",
"backgroundUrl": null,
"backgroundOverlay": 75,
"motion": "subtle",
"preset": null,
"customCss": null,
"accentInk": "#ffffff",
"highlightInk": "#0f1b2d"
},
"registration": {
"schemaVersion": 1,
"askCompany": true,
"askJobTitle": true,
"companyRequired": false,
"askSponsorConsent": true,
"questions": [
{
"id": "dietary",
"kind": "choice",
"label": {
"en": "Dietary requirements",
"nl": "Dieetwensen",
"de": "Ernährungswünsche",
"es": "Requisitos alimentarios",
"da": "Kostbehov",
"fr": "Régime alimentaire",
"fi": "Ruokavalio",
"nb": "Kostbehov",
"pt": "Restrições alimentares",
"sv": "Kostönskemål",
"pl": "Wymagania dietetyczne"
},
"required": false,
"options": [
{
"value": "none",
"label": {
"en": "None",
"nl": "Geen",
"de": "Keine",
"es": "Ninguno",
"da": "Ingen",
"fr": "Aucun",
"fi": "Ei mitään",
"nb": "Ingen",
"pt": "Nenhuma",
"sv": "Inga",
"pl": "Brak"
}
},
{
"value": "vegetarian",
"label": {
"en": "Vegetarian",
"nl": "Vegetarisch",
"de": "Vegetarisch",
"es": "Vegetariano",
"da": "Vegetar",
"fr": "Végétarien",
"fi": "Kasvis",
"nb": "Vegetar",
"pt": "Vegetariano",
"sv": "Vegetarisk",
"pl": "Wegetariańskie"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
},
{
"id": "interests",
"kind": "multiChoice",
"label": {
"en": "What are you here for?",
"nl": "Waarvoor kom je?",
"de": "Weshalb kommst du?",
"es": "¿Qué te trae aquí?",
"da": "Hvad kommer du for?",
"fr": "Qu’est-ce qui vous amène ?",
"fi": "Mitä varten tulet?",
"nb": "Hva kommer du for?",
"pt": "O que o traz cá?",
"sv": "Vad kommer du för?",
"pl": "Co cię tu sprowadza?"
},
"required": false,
"options": [
{
"value": "cloud",
"label": {
"en": "Cloud and AI",
"nl": "Cloud en AI",
"de": "Cloud und KI",
"es": "Nube e IA",
"da": "Cloud og AI",
"fr": "Cloud et IA",
"fi": "Pilvi ja tekoäly",
"nb": "Sky og KI",
"pt": "Cloud e IA",
"sv": "Moln och AI",
"pl": "Chmura i AI"
}
},
{
"value": "product",
"label": {
"en": "Product",
"nl": "Product",
"de": "Produkt",
"es": "Producto",
"da": "Produkt",
"fr": "Produit",
"fi": "Tuote",
"nb": "Produkt",
"pt": "Produto",
"sv": "Produkt",
"pl": "Produkt"
}
}
],
"ticketTypes": [],
"onBadge": false,
"fileTypes": [],
"maxMegabytes": 10
}
]
},
"paymentProvider": null,
"updatedUtc": null,
"format": "inPerson",
"capabilities": {
"doors": true,
"badges": true,
"screens": true,
"venue": true,
"selfCheckIn": true,
"boothScanning": true,
"boothRedemption": true,
"walletPass": true,
"crewOnSite": true,
"meetingTables": true,
"onlineAccess": false,
"venueMap": true
},
"modules": [
"payments",
"addons"
],
"modulesChosen": null,
"online": null
},
"programme": {
"rooms": [
{
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"name": "Main Hall",
"location": "Ground floor, straight ahead",
"capacity": 600,
"sortOrder": 0
},
{
"roomId": "b3ac0001-0000-4000-8000-000000000001",
"name": "Graanbeurs",
"location": "Ground floor, left wing",
"capacity": 220,
"sortOrder": 1
}
],
"tracks": [
{
"trackId": "b3ac0002-0000-4000-8000-000000000000",
"name": "Cloud & AI",
"colour": "#2b8fd0",
"sortOrder": 0
},
{
"trackId": "b3ac0002-0000-4000-8000-000000000001",
"name": "Product",
"colour": "#c2410c",
"sortOrder": 1
}
],
"sessions": [
{
"sessionId": "b3ac0004-0000-4000-8000-000000000000",
"title": "Registration and coffee",
"summary": null,
"kind": "other",
"roomId": null,
"trackId": null,
"startsUtc": "2026-11-12T07:30:00.000Z",
"endsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T08:30",
"endsLocal": "2026-11-12T09:30",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": []
},
{
"sessionId": "b3ac0004-0000-4000-8000-000000000001",
"title": "Opening keynote: software that finds its way",
"summary": "Opening keynote: software that finds its way. What worked, what did not, and what to try on Monday.",
"kind": "keynote",
"roomId": "b3ac0001-0000-4000-8000-000000000000",
"trackId": null,
"startsUtc": "2026-11-12T08:30:00.000Z",
"endsUtc": "2026-11-12T09:15:00.000Z",
"startsLocal": "2026-11-12T09:30",
"endsLocal": "2026-11-12T10:15",
"capacity": null,
"onlineUrl": null,
"joinProvider": null,
"language": null,
"speakerIds": [
"b3ac0003-0000-4000-8000-000000000009"
]
}
],
"speakers": [
{
"speakerId": "b3ac0003-0000-4000-8000-000000000000",
"name": "Ada Verhoeven",
"jobTitle": "Principal Engineer",
"company": "Northwind Cloud",
"bio": "Ada builds the platforms other engineers build on, and writes about what breaks.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000000.jpg",
"email": null,
"links": [],
"sortOrder": 0
},
{
"speakerId": "b3ac0003-0000-4000-8000-000000000001",
"name": "Malik Osei",
"jobTitle": "VP Product",
"company": "Contoso",
"bio": "Malik has shipped products in four countries and still reads every support ticket.",
"photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000001.jpg",
"email": null,
"links": [],
"sortOrder": 1
}
],
"sponsors": [
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000000",
"name": "Northwind Cloud",
"tier": "Platinum",
"tierOrder": 0,
"website": "https://northwindcloud.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000000.png",
"description": "The cloud for teams who would rather be building.",
"booth": "A1",
"sortOrder": 0
},
{
"sponsorId": "b3ac0005-0000-4000-8000-000000000001",
"name": "Contoso",
"tier": "Gold",
"tierOrder": 1,
"website": "https://contoso.example",
"logoUrl": "/media/f0de0000000040008000000000000001/b3ac00fb000040008000000000000001.png",
"description": "Software for the way people work now.",
"booth": "B2",
"sortOrder": 1
}
]
},
"ticketTypes": [
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000000",
"name": "Community pass",
"description": "Both days, lunch included. Free for members of a local user group.",
"price": 0,
"vatRate": 21,
"currency": "EUR",
"capacity": 300,
"taken": 24,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 0
},
{
"ticketTypeId": "b3ac0006-0000-4000-8000-000000000001",
"name": "Conference pass",
"description": "Both days, lunch and drinks. A workshop seat is booked as an extra.",
"price": 395,
"vatRate": 21,
"currency": "EUR",
"capacity": 500,
"taken": 38,
"maxPerOrder": 10,
"visibility": "public",
"salesStartUtc": null,
"salesEndUtc": "2026-11-13T11:00:00.000Z",
"sortOrder": 1
}
],
"updatedUtc": "2026-10-14T21:40:48.036Z"
}400 invalidBody, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidBody",
"title": "The body is not readable",
"status": 400,
"detail": "The body is not JSON, or a field has the wrong type.",
"instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/status",
"code": "invalidBody",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "The body is not JSON, or a field has the wrong type."
}Get event statistics
GET/events/{eventId}/stats
Gets an event's numbers at a glance: registrations against capacity, pending and cancelled tickets, check-ins, the programme's size and, with orders:read, revenue.
- Autorisations
- events:read
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
Réponses
- 200 The numbers. EventStats
Champs
eventIdstring (uuid)The event's id.
namestringIts name.
statusstringDraft, published or closed.
timeZonestringThe venue's time zone.
startDatestring (date)The first day.
endDatestring (date)The last day.
daysToGointeger (int32)Days until the first day; 0 once it has begun.
phasestringBefore, during or after the event, at the venue.
Valeurs possibles :
before,during,afterformatstringInPerson, online or hybrid.
registrationsobjectWho holds a ticket.
Afficher les champs
registeredinteger (int32)Valid tickets, crew left out.
pendinginteger (int32)Tickets in orders waiting for payment, a bank transfer or approval.
cancelledinteger (int32)Cancelled tickets.
crewinteger (int32)Crew tickets.
capacityinteger (int32) ou nullPlaces in all ticket types, or null when one has no limit.
remaininginteger (int32) ou nullPlaces left, or null without a limit.
fillnumber ou nullRegistered and pending as a percentage of capacity.
checkInsobjectWho came in.
Afficher les champs
checkedIninteger (int32)Valid tickets checked in at the main entrance.
ratenumber ou nullAs a percentage of registered.
programmeobjectThe programme's size.
Afficher les champs
sessionsinteger (int32)Sessions.
speakersinteger (int32)Speakers.
sponsorsinteger (int32)Sponsors; 0 when the Sponsors module is off.
moneyobject ou nullWith orders:read: what paid orders came to.
Afficher les champs
currencystringISO 4217.
revenuenumberPaid and on-account orders, VAT included. With the currency's own decimals: 147.00 in EUR, 147 in JPY, 147.000 in KWD.
vatnumberThe VAT in it. With the currency's own decimals: 147.00 in EUR, 147 in JPY, 147.000 in KWD.
paidOrdersinteger (int32)Orders paid.
modulesstring[]The modules switched on.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/stats" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/stats", {
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/events/b3ac0000-0000-4000-8000-000000000001/stats");
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/events/b3ac0000-0000-4000-8000-000000000001/stats",
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/events/b3ac0000-0000-4000-8000-000000000001/stats" -Headers $headers200 Exemple de réponse
{
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"name": "Beacon Summit",
"status": "published",
"timeZone": "Europe/Amsterdam",
"startDate": "2026-11-12",
"endDate": "2026-11-13",
"daysToGo": 29,
"phase": "before",
"format": "inPerson",
"registrations": {
"registered": 74,
"pending": 8,
"cancelled": 0,
"crew": 12,
"capacity": null,
"remaining": null,
"fill": null
},
"checkIns": {
"checkedIn": 0,
"rate": 0
},
"programme": {
"sessions": 30,
"speakers": 11,
"sponsors": 11
},
"money": {
"currency": "EUR",
"revenue": 15216.25,
"vat": 2552.11,
"paidOrders": 46
},
"modules": [
"payments",
"addons"
]
}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/events/b3ac0000-0000-4000-8000-000000000001/stats",
"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 registration questions
GET/events/{eventId}/questions
Lists the questions an event asks beyond name and email, with their ids, which an attendee's answers are keyed by.
- Autorisations
- events:read
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
Réponses
- 200 The questions. QuestionList
Champs
dataQuestion[]The questions.
Afficher les champs
idstringThe question's id, which answers are keyed by.
kindstringWhat kind of answer it takes.
Valeurs possibles :
text,longText,choice,multiChoice,yesNo,consent,phone,rating,scale,filelabelstringWhat is asked, in the event's first language.
requiredbooleanWhether attendees have to answer it.
optionsobject[]The options of a choice.
Afficher les champs
valuestringWhat is stored.
labelstringWhat is shown.
ticketTypesstring (uuid)[]The ticket types it is asked for; all when empty.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/questions" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/questions", {
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/events/b3ac0000-0000-4000-8000-000000000001/questions");
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/events/b3ac0000-0000-4000-8000-000000000001/questions",
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/events/b3ac0000-0000-4000-8000-000000000001/questions" -Headers $headers200 Exemple de réponse
{
"data": [
{
"id": "dietary",
"kind": "choice",
"label": "Dietary requirements",
"required": false,
"options": [
{
"value": "none",
"label": "None"
},
{
"value": "vegetarian",
"label": "Vegetarian"
}
],
"ticketTypes": []
},
{
"id": "interests",
"kind": "multiChoice",
"label": "What are you here for?",
"required": false,
"options": [
{
"value": "cloud",
"label": "Cloud and AI"
},
{
"value": "product",
"label": "Product"
}
],
"ticketTypes": []
}
]
}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/events/b3ac0000-0000-4000-8000-000000000001/questions",
"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."
}Get the answers schema
GET/events/{eventId}/questions/schema
Returns a JSON schema with one property per registration question, so a flow can show the event's own fields.
- Autorisations
- events:read
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
requête
purposestringUse input for the questions an organiser may answer on somebody's behalf, or output for every question.
Valeurs possibles :
output,inputPar défaut :
"output"
Réponses
- 200 The schema, under schema. AnswersSchema
Champs
schemaobjectThe schema: an object with a property per question.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/questions/schema" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/questions/schema", {
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/events/b3ac0000-0000-4000-8000-000000000001/questions/schema");
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/events/b3ac0000-0000-4000-8000-000000000001/questions/schema",
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/events/b3ac0000-0000-4000-8000-000000000001/questions/schema" -Headers $headers401 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/events/b3ac0000-0000-4000-8000-000000000001/questions/schema",
"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."
}Les guides et ce site sont dans votre langue. Les descriptions propres à la référence de l’API restent en anglais, la langue de l’API elle-même.