Référence de l’API
Check-in
Doors, door scans and checking people in.
List doors
GET/events/{eventId}/doors
Lists the doors of an event where people are checked in: the main entrance, session doors and areas.
- Autorisations
- events:read
- Module
checkinRefusée avec moduleOff tant que l’organisateur de l’événement l’a désactivé.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
Réponses
- 200 The doors. DoorList
Champs
dataDoor[]The doors.
Afficher les champs
doorIdstring (uuid)The door's id.
namestringWhat the steward sees.
kindstringEntrance, session or area.
Valeurs possibles :
entrance,session,areasessionIdstring (uuid)The session the door belongs to.
capacityintegerHow many may be inside at once, when limited.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 409 moduleOff.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/doors" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/doors", {
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/doors");
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/doors",
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/doors" -Headers $headers200 Exemple de réponse
{
"data": [
{
"doorId": "b3ac0010-0000-4000-8000-000000000000",
"name": "Main entrance",
"kind": "entrance",
"sessionId": null,
"capacity": null
},
{
"doorId": "b3ac0010-0000-4000-8000-000000000001",
"name": "Workshop Lab: threat modelling",
"kind": "session",
"sessionId": "b3ac0004-0000-4000-8000-00000000000c",
"capacity": 30
}
]
}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/doors",
"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 door scans
GET/events/{eventId}/check-ins
Lists scans that let somebody in or out at any door of the event, oldest first after a given one, or the latest arrivals with sort=-created.
- Autorisations
- checkins:read
- Module
checkinRefusée avec moduleOff tant que l’organisateur de l’événement l’a désactivé.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
requête
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
afterinteger (int64)The last check-in ID you have, or 0 for the start. Kept from before cursors.
Par défaut :
0pageSizeinteger (int32)How many on a page, up to 500. The same as limit.
Par défaut :
100sortstringThe order of the list: changed for the oldest change first (the default, for a sync), or -created for the newest first.
Valeurs possibles :
changed,-createdPar défaut :
"changed"limitinteger (int32)How many on a page, up to 500.
Par défaut :
100
Réponses
- 200 Scans, and the cursor to pass next time. CheckInPage
Champs
dataCheckIn[]The scans.
Afficher les champs
checkInIdinteger (int64)The scan's id, which only grows.
eventIdstring (uuid)The event's id.
attendeeIdstring (uuid)The attendee's id.
checkInListIdstring (uuid)The door's id.
listNamestringThe door's name.
listKindstringEntrance, session or area.
Valeurs possibles :
entrance,session,areasessionIdstring (uuid)The session the door belongs to.
directionstringIn or out.
Valeurs possibles :
in,outresultstringWelcome (first time), again, or out.
Valeurs possibles :
welcome,again,outscannedUtcstring (date-time)When, in UTC.
offlinebooleanWhether the scanner was offline.
afterinteger (int64)Pass this as after next time.
hasMorebooleanWhether there are more after these.
nextCursorstring ou nullThe cursor for the next page, or null on the last. Pass it as cursor; it pages without counting, unlike page.
- 400 invalidCursor, invalidSort.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 409 moduleOff.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidSort
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/check-ins?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/check-ins?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/b3ac0000-0000-4000-8000-000000000001/check-ins?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/b3ac0000-0000-4000-8000-000000000001/check-ins", 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/b3ac0000-0000-4000-8000-000000000001/check-ins?limit=2" -Headers $headers200 Exemple de réponse
{
"data": [],
"after": 0,
"hasMore": false,
"nextCursor": null
}400 invalidCursor, invalidSort.
{
"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/b3ac0000-0000-4000-8000-000000000001/check-ins",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Get door counts
GET/events/{eventId}/check-ins/summary
Gets how the doors stand right now: checked in against registered, the last hour's arrivals and each door's counts.
- Autorisations
- checkins:read
- Module
checkinRefusée avec moduleOff tant que l’organisateur de l’événement l’a désactivé.
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
Réponses
- 200 The counts. CheckInSummary
Champs
eventIdstring (uuid)The event's id.
registeredinteger (int32)Valid tickets, crew left out.
checkedIninteger (int32)Of whom checked in at the main entrance.
notYetinteger (int32)Registered and not checked in yet.
ratenumber ou nullChecked in as a percentage of registered.
lastHourinteger (int32)Let in at an entrance in the last hour.
doorsobject[]Each door.
Afficher les champs
doorIdstring (uuid)The door's id.
namestringIts name.
kindstringEntrance, session or area.
sessionIdstring (uuid) ou nullThe session the door belongs to.
capacityinteger (int32) ou nullIts capacity.
admittedinteger (int32)People let in, each once.
insideinteger (int32)In and not out again.
lastHourinteger (int32)Let in in the last hour.
refusedinteger (int32)Scans refused.
atUtcstring (date-time)When this was counted, in UTC.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 409 moduleOff, onlineEvent.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound onlineEvent
Requête
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/check-ins/summary" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/check-ins/summary", {
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/check-ins/summary");
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/check-ins/summary",
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/check-ins/summary" -Headers $headers200 Exemple de réponse
{
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"registered": 74,
"checkedIn": 0,
"notYet": 74,
"rate": 0,
"lastHour": 0,
"doors": [
{
"doorId": "b3ac0010-0000-4000-8000-000000000000",
"name": "Main entrance",
"kind": "entrance",
"sessionId": null,
"capacity": null,
"admitted": 0,
"inside": 0,
"lastHour": 0,
"refused": 0
},
{
"doorId": "b3ac0010-0000-4000-8000-000000000001",
"name": "Workshop Lab: threat modelling",
"kind": "session",
"sessionId": "b3ac0004-0000-4000-8000-00000000000c",
"capacity": 30,
"admitted": 0,
"inside": 0,
"lastHour": 0,
"refused": 0
}
],
"atUtc": "2026-10-14T21:47:33.737Z"
}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/check-ins/summary",
"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."
}Check in an attendee Modifie des données
POST/events/{eventId}/attendees/{attendeeId}/check-in
Checks an attendee in at the main entrance or at another door, by the same rules as a steward's scanner: a cancelled or unpaid ticket, a full room or a ticket type the door does not admit is refused, and result says so.
- Autorisations
- checkins:write
- Module
checkinRefusée avec moduleOff tant que l’organisateur de l’événement l’a désactivé.
- Envoyez un Idempotency-Key pour que les nouvelles tentatives soient sans risque. →
Paramètres
chemin
eventIdstring (uuid)obligatoireThe event's id.
attendeeIdstring (uuid)obligatoireThe attendee's id.
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 CheckInRequest
The door, when it is not the main entrance.
doorIdstring (uuid)The door, when it is not the main entrance.
Réponses
- 200 What the door decided. CheckInResult
Champs
resultstringWelcome (in for the first time), again, or why not: cancelled, unpaid, notOnList, noAddOn, full or noReentry.
admittedbooleanWhether the attendee was let in.
firstCheckInUtcstring (date-time)When they were first checked in at the main entrance, in UTC.
doorobjectThe door.
Afficher les champs
doorIdstring (uuid)The door's id.
namestringThe door's name.
kindstringEntrance, session or area.
attendeeAttendeeSomebody holding a ticket, or who held one.
Afficher les champs
attendeeIdstring (uuid)The attendee's id.
eventIdstring (uuid)The event's id.
orderIdstring (uuid)The order's id.
orderReferencestringThe order's six-character reference.
ticketTypeIdstring (uuid)The ticket type's id.
ticketTypeNamestringThe ticket type's name.
firstNamestring ou nullFirst name. Null without people:read, or when erased.
lastNamestring ou nullLast name. Null without people:read, or when erased.
emailstring (email) ou nullEmail address. Null without people:read, or when erased.
companystring ou nullCompany. Null without people:read, or when erased.
jobTitlestring ou nullJob title. Null without people:read, or when erased.
languagestringThe language they registered in.
answersobject ou nullAnswers to the event's registration questions, by question id. Null without people:read, or when erased.
statusstringActive, or cancelled.
Valeurs possibles :
active,cancelledorderStatusstringThe order's status.
Valeurs possibles :
pending,paid,free,onAccount,transfer,requested,declined,cancelled,expired,refundedvalidbooleanWhether the ticket lets them in: not cancelled, and the order paid or free.
checkedInUtcstring (date-time) ou nullWhen they were first checked in, in UTC.
createdUtcstring (date-time)When they registered, in UTC.
changedUtcstring (date-time) ou nullWhen anything about the attendee or their order last changed. Pass the latest you have as updatedSince.
updatedUtcstring (date-time) ou nullWhen anything about the attendee or their order last changed, in UTC: the same as changedUtc.
erasedbooleanWhether the person deleted their data from the event app; then nothing personal is returned, whatever the key may read.
personalDatastringWhether the personal fields are here: included, withheld (the key lacks people:read) or erased (the person deleted their data).
Valeurs possibles :
included,withheld,erased
- 400 invalidIdempotencyKey.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound, attendeeNotFound, noDoor.
- 409 moduleOff, onlineEvent, idempotencyKeyInUse.
- 422 idempotencyKeyReused.
- 429 rateLimited.
Refus
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound attendeeNotFound noDoor onlineEvent demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey
Requête
curl -X POST "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/attendees/b3ac0008-0000-4000-8000-000000000000/check-in" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"doorId": "b3ac0010-0000-4000-8000-000000000000"
}'const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/attendees/b3ac0008-0000-4000-8000-000000000000/check-in", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json"
},
body: JSON.stringify({
"doorId": "b3ac0010-0000-4000-8000-000000000000"
})
});
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/b3ac0000-0000-4000-8000-000000000001/attendees/b3ac0008-0000-4000-8000-000000000000/check-in");
request.Headers.Add("Idempotency-Key", Guid.NewGuid().ToString());
request.Content = new StringContent("""
{
"doorId": "b3ac0010-0000-4000-8000-000000000000"
}
""", 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/b3ac0000-0000-4000-8000-000000000001/attendees/b3ac0008-0000-4000-8000-000000000000/check-in",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}",
"Idempotency-Key": str(uuid.uuid4())
},
json={
"doorId": "b3ac0010-0000-4000-8000-000000000000"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
"Idempotency-Key" = [guid]::NewGuid().ToString()
}
$body = @'
{
"doorId": "b3ac0010-0000-4000-8000-000000000000"
}
'@
$data = Invoke-RestMethod -Method Post -Uri "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/attendees/b3ac0008-0000-4000-8000-000000000000/check-in" -Headers $headers -ContentType "application/json" -Body $body400 invalidIdempotencyKey.
{
"type": "https://attendbeacon.com/developers/errors#invalidIdempotencyKey",
"title": "Idempotency-Key is not valid",
"status": 400,
"detail": "An Idempotency-Key is 1 to 255 visible ASCII characters; a UUID is a good one.",
"instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/attendees/{attendeeId}/check-in",
"code": "invalidIdempotencyKey",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "An Idempotency-Key is 1 to 255 visible ASCII characters; a UUID is a good one."
}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.