Referencia de la 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.
- Ámbitos
- events:read
- Módulo
checkinSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
Respuestas
- 200 The doors. DoorList
Campos
dataDoor[]The doors.
Mostrar los campos
doorIdstring (uuid)The door's id.
namestringWhat the steward sees.
kindstringEntrance, session or area.
Uno de:
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.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound
Solicitud
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 Respuesta de ejemplo
{
"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.
- Ámbitos
- checkins:read
- Módulo
checkinSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
consulta
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.
Por defecto:
0pageSizeinteger (int32)How many on a page, up to 500. The same as limit.
Por defecto:
100sortstringThe order of the list: changed for the oldest change first (the default, for a sync), or -created for the newest first.
Uno de:
changed,-createdPor defecto:
"changed"limitinteger (int32)How many on a page, up to 500.
Por defecto:
100
Respuestas
- 200 Scans, and the cursor to pass next time. CheckInPage
Campos
dataCheckIn[]The scans.
Mostrar los campos
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.
Uno de:
entrance,session,areasessionIdstring (uuid)The session the door belongs to.
directionstringIn or out.
Uno de:
in,outresultstringWelcome (first time), again, or out.
Uno de:
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 o 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.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidSort
Solicitud
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 Respuesta de ejemplo
{
"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.
- Ámbitos
- checkins:read
- Módulo
checkinSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
Respuestas
- 200 The counts. CheckInSummary
Campos
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 o nullChecked in as a percentage of registered.
lastHourinteger (int32)Let in at an entrance in the last hour.
doorsobject[]Each door.
Mostrar los campos
doorIdstring (uuid)The door's id.
namestringIts name.
kindstringEntrance, session or area.
sessionIdstring (uuid) o nullThe session the door belongs to.
capacityinteger (int32) o 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.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound onlineEvent
Solicitud
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 Respuesta de ejemplo
{
"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 Modifica datos
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.
- Ámbitos
- checkins:write
- Módulo
checkinSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
- Envía una Idempotency-Key para que los reintentos sean seguros. →
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
attendeeIdstring (uuid)obligatorioThe attendee's id.
cabecera
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.
Cuerpo CheckInRequest
The door, when it is not the main entrance.
doorIdstring (uuid)The door, when it is not the main entrance.
Respuestas
- 200 What the door decided. CheckInResult
Campos
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.
Mostrar los campos
doorIdstring (uuid)The door's id.
namestringThe door's name.
kindstringEntrance, session or area.
attendeeAttendeeSomebody holding a ticket, or who held one.
Mostrar los campos
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 o nullFirst name. Null without people:read, or when erased.
lastNamestring o nullLast name. Null without people:read, or when erased.
emailstring (email) o nullEmail address. Null without people:read, or when erased.
companystring o nullCompany. Null without people:read, or when erased.
jobTitlestring o nullJob title. Null without people:read, or when erased.
languagestringThe language they registered in.
answersobject o nullAnswers to the event's registration questions, by question id. Null without people:read, or when erased.
statusstringActive, or cancelled.
Uno de:
active,cancelledorderStatusstringThe order's status.
Uno de:
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) o nullWhen they were first checked in, in UTC.
createdUtcstring (date-time)When they registered, in UTC.
changedUtcstring (date-time) o nullWhen anything about the attendee or their order last changed. Pass the latest you have as updatedSince.
updatedUtcstring (date-time) o 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).
Uno de:
included,withheld,erased
- 400 invalidIdempotencyKey.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope, demoWorkspace.
- 404 eventNotFound, attendeeNotFound, noDoor.
- 409 moduleOff, onlineEvent, idempotencyKeyInUse.
- 422 idempotencyKeyReused.
- 429 rateLimited.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound attendeeNotFound noDoor onlineEvent demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey
Solicitud
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."
}Las guías y este sitio están en tu idioma. Las descripciones de la referencia de la API están en inglés, el idioma de la propia API.