API-Referenz
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.
- Scopes
- events:read
- Modul
checkinWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
Parameter
Pfad
eventIdstring (uuid)erforderlichThe event's id.
Antworten
- 200 The doors. DoorList
Felder
dataDoor[]The doors.
Felder anzeigen
doorIdstring (uuid)The door's id.
namestringWhat the steward sees.
kindstringEntrance, session or area.
Einer von:
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.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound
Anfrage
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 Beispielantwort
{
"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.
- Scopes
- checkins:read
- Modul
checkinWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
Parameter
Pfad
eventIdstring (uuid)erforderlichThe event's id.
Query
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.
Standard:
0pageSizeinteger (int32)How many on a page, up to 500. The same as limit.
Standard:
100sortstringThe order of the list: changed for the oldest change first (the default, for a sync), or -created for the newest first.
Einer von:
changed,-createdStandard:
"changed"limitinteger (int32)How many on a page, up to 500.
Standard:
100
Antworten
- 200 Scans, and the cursor to pass next time. CheckInPage
Felder
dataCheckIn[]The scans.
Felder anzeigen
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.
Einer von:
entrance,session,areasessionIdstring (uuid)The session the door belongs to.
directionstringIn or out.
Einer von:
in,outresultstringWelcome (first time), again, or out.
Einer von:
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 oder 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.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidSort
Anfrage
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 Beispielantwort
{
"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.
- Scopes
- checkins:read
- Modul
checkinWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
Parameter
Pfad
eventIdstring (uuid)erforderlichThe event's id.
Antworten
- 200 The counts. CheckInSummary
Felder
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 oder nullChecked in as a percentage of registered.
lastHourinteger (int32)Let in at an entrance in the last hour.
doorsobject[]Each door.
Felder anzeigen
doorIdstring (uuid)The door's id.
namestringIts name.
kindstringEntrance, session or area.
sessionIdstring (uuid) oder nullThe session the door belongs to.
capacityinteger (int32) oder 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.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound onlineEvent
Anfrage
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 Beispielantwort
{
"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 Ändert Daten
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.
- Scopes
- checkins:write
- Modul
checkinWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
- Senden Sie einen Idempotency-Key, damit Wiederholungen sicher sind. →
Parameter
Pfad
eventIdstring (uuid)erforderlichThe event's id.
attendeeIdstring (uuid)erforderlichThe attendee's id.
Header
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.
Body CheckInRequest
The door, when it is not the main entrance.
doorIdstring (uuid)The door, when it is not the main entrance.
Antworten
- 200 What the door decided. CheckInResult
Felder
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.
Felder anzeigen
doorIdstring (uuid)The door's id.
namestringThe door's name.
kindstringEntrance, session or area.
attendeeAttendeeSomebody holding a ticket, or who held one.
Felder anzeigen
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 oder nullFirst name. Null without people:read, or when erased.
lastNamestring oder nullLast name. Null without people:read, or when erased.
emailstring (email) oder nullEmail address. Null without people:read, or when erased.
companystring oder nullCompany. Null without people:read, or when erased.
jobTitlestring oder nullJob title. Null without people:read, or when erased.
languagestringThe language they registered in.
answersobject oder nullAnswers to the event's registration questions, by question id. Null without people:read, or when erased.
statusstringActive, or cancelled.
Einer von:
active,cancelledorderStatusstringThe order's status.
Einer von:
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) oder nullWhen they were first checked in, in UTC.
createdUtcstring (date-time)When they registered, in UTC.
changedUtcstring (date-time) oder nullWhen anything about the attendee or their order last changed. Pass the latest you have as updatedSince.
updatedUtcstring (date-time) oder 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).
Einer von:
included,withheld,erased
- 400 invalidIdempotencyKey.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound, attendeeNotFound, noDoor.
- 409 moduleOff, onlineEvent, idempotencyKeyInUse.
- 422 idempotencyKeyReused.
- 429 rateLimited.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound attendeeNotFound noDoor onlineEvent demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey
Anfrage
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."
}Die Anleitungen und diese Website sind in Ihrer Sprache. Die Beschreibungen in der API-Referenz selbst sind auf Englisch, so wie die API selbst spricht.