Dokumentacja 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.
- Uprawnienia
- events:read
- Moduł
checkinOdrzucane z kodem moduleOff, gdy organizator wydarzenia wyłączył ten moduł.
Parametry
ścieżka
eventIdstring (uuid)wymaganeThe event's id.
Odpowiedzi
- 200 The doors. DoorList
Pola
dataDoor[]The doors.
Pokaż pola
doorIdstring (uuid)The door's id.
namestringWhat the steward sees.
kindstringEntrance, session or area.
Jedno z:
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.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound
Żądanie
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 Przykładowa odpowiedź
{
"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.
- Uprawnienia
- checkins:read
- Moduł
checkinOdrzucane z kodem moduleOff, gdy organizator wydarzenia wyłączył ten moduł.
Parametry
ścieżka
eventIdstring (uuid)wymaganeThe event's id.
zapytanie
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.
Domyślnie:
0pageSizeinteger (int32)How many on a page, up to 500. The same as limit.
Domyślnie:
100sortstringThe order of the list: changed for the oldest change first (the default, for a sync), or -created for the newest first.
Jedno z:
changed,-createdDomyślnie:
"changed"limitinteger (int32)How many on a page, up to 500.
Domyślnie:
100
Odpowiedzi
- 200 Scans, and the cursor to pass next time. CheckInPage
Pola
dataCheckIn[]The scans.
Pokaż pola
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.
Jedno z:
entrance,session,areasessionIdstring (uuid)The session the door belongs to.
directionstringIn or out.
Jedno z:
in,outresultstringWelcome (first time), again, or out.
Jedno z:
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 lub 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.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidSort
Żądanie
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 Przykładowa odpowiedź
{
"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.
- Uprawnienia
- checkins:read
- Moduł
checkinOdrzucane z kodem moduleOff, gdy organizator wydarzenia wyłączył ten moduł.
Parametry
ścieżka
eventIdstring (uuid)wymaganeThe event's id.
Odpowiedzi
- 200 The counts. CheckInSummary
Pola
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 lub nullChecked in as a percentage of registered.
lastHourinteger (int32)Let in at an entrance in the last hour.
doorsobject[]Each door.
Pokaż pola
doorIdstring (uuid)The door's id.
namestringIts name.
kindstringEntrance, session or area.
sessionIdstring (uuid) lub nullThe session the door belongs to.
capacityinteger (int32) lub 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.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound onlineEvent
Żądanie
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 Przykładowa odpowiedź
{
"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 Zmienia dane
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.
- Uprawnienia
- checkins:write
- Moduł
checkinOdrzucane z kodem moduleOff, gdy organizator wydarzenia wyłączył ten moduł.
- Wyślij Idempotency-Key, aby ponowienia były bezpieczne. →
Parametry
ścieżka
eventIdstring (uuid)wymaganeThe event's id.
attendeeIdstring (uuid)wymaganeThe attendee's id.
nagłówek
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.
Treść CheckInRequest
The door, when it is not the main entrance.
doorIdstring (uuid)The door, when it is not the main entrance.
Odpowiedzi
- 200 What the door decided. CheckInResult
Pola
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.
Pokaż pola
doorIdstring (uuid)The door's id.
namestringThe door's name.
kindstringEntrance, session or area.
attendeeAttendeeSomebody holding a ticket, or who held one.
Pokaż pola
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 lub nullFirst name. Null without people:read, or when erased.
lastNamestring lub nullLast name. Null without people:read, or when erased.
emailstring (email) lub nullEmail address. Null without people:read, or when erased.
companystring lub nullCompany. Null without people:read, or when erased.
jobTitlestring lub nullJob title. Null without people:read, or when erased.
languagestringThe language they registered in.
answersobject lub nullAnswers to the event's registration questions, by question id. Null without people:read, or when erased.
statusstringActive, or cancelled.
Jedno z:
active,cancelledorderStatusstringThe order's status.
Jedno z:
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) lub nullWhen they were first checked in, in UTC.
createdUtcstring (date-time)When they registered, in UTC.
changedUtcstring (date-time) lub nullWhen anything about the attendee or their order last changed. Pass the latest you have as updatedSince.
updatedUtcstring (date-time) lub 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).
Jedno z:
included,withheld,erased
- 400 invalidIdempotencyKey.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound, attendeeNotFound, noDoor.
- 409 moduleOff, onlineEvent, idempotencyKeyInUse.
- 422 idempotencyKeyReused.
- 429 rateLimited.
Odmowy
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound attendeeNotFound noDoor onlineEvent demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey
Żądanie
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."
}Przewodniki i ta witryna są w twoim języku. Opisy w samej dokumentacji API są po angielsku, tak jak mówi samo API.