EntryWick developers

Quick-starts

Replace $KEY with your key and $EVENT with an event id from GET /events. Base URL: https://api.staging.entrywick.com/v1.

1. Register people

Types and days are named by their codes. The registration goes through the event's own rules, capacity and approval, and its tickets are issued when it is confirmed.

curl

curl -X POST "https://api.entrywick.io/v1/events/$EVENT/registrations" \
  -H "Authorization: Bearer $KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"attendees":[{"attendee_type":"VOL","first_name":"Amina","last_name":"Rahim","email":"amina@example.org","days":["DAY1"]}]}'

JavaScript

const res = await fetch(`https://api.entrywick.io/v1/events/${event}/registrations`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${key}`, 'Idempotency-Key': crypto.randomUUID(), 'Content-Type': 'application/json' },
  body: JSON.stringify({ attendees: [{ attendee_type: 'VOL', first_name: 'Amina', last_name: 'Rahim', email: 'amina@example.org', days: ['DAY1'] }] }),
});
const registration = await res.json();

PHP

$registration = Http::withToken($key)
    ->withHeaders(['Idempotency-Key' => (string) Str::uuid()])
    ->post("https://api.entrywick.io/v1/events/{$event}/registrations", [
    'attendees' => [['attendee_type' => 'VOL', 'first_name' => 'Amina', 'last_name' => 'Rahim', 'email' => 'amina@example.org', 'days' => ['DAY1']]],
    ])->json();

Python

import requests, uuid
registration = requests.post(
    f"https://api.entrywick.io/v1/events/{event}/registrations",
    headers={"Authorization": f"Bearer {key}", "Idempotency-Key": str(uuid.uuid4())},
    json={"attendees": [{"attendee_type": "VOL", "first_name": "Amina", "last_name": "Rahim", "email": "amina@example.org", "days": ["DAY1"]}]},
).json()

2. Keep a list in step

Ask for what changed since your last run with updated_since, and follow page.next_cursor until has_more is false.

# curl
curl "https://api.entrywick.io/v1/events/$EVENT/attendees?updated_since=2027-05-01T00:00:00Z&limit=200" -H "Authorization: Bearer $KEY"

// JavaScript
let cursor = null, people = [];
do {
  const url = new URL(`https://api.entrywick.io/v1/events/${event}/attendees`);
  url.searchParams.set('updated_since', since);
  if (cursor) url.searchParams.set('cursor', cursor);
  const page = await (await fetch(url, { headers: { Authorization: `Bearer ${key}` } })).json();
  people.push(...page.data); cursor = page.page.next_cursor;
} while (cursor);

// PHP
$page = Http::withToken($key)->get("https://api.entrywick.io/v1/events/{$event}/attendees", ['updated_since' => $since])->json();

# Python
page = requests.get(f"https://api.entrywick.io/v1/events/{event}/attendees", headers={"Authorization": f"Bearer {key}"}, params={"updated_since": since}).json()

3. Record a scan

A key with the scanner scope gets exactly the decision the EntryWick scanner makes. client_uuid makes a retried scan count once.

# curl
curl -X POST "https://api.entrywick.io/v1/events/$EVENT/scan" \
  -H "Authorization: Bearer $KEY" -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{"code":"EW1:DAY1-0001-HOU:1a2b3c4d","check_in_point":"GATE1","client_uuid":"'"$(uuidgen)"'","scanned_at":"2027-05-01T13:05:00Z"}'

// JavaScript
const scan = await (await fetch(`https://api.entrywick.io/v1/events/${event}/scan`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${key}`, 'Idempotency-Key': crypto.randomUUID(), 'Content-Type': 'application/json' },
  body: JSON.stringify({ code, check_in_point: 'GATE1', client_uuid: crypto.randomUUID(), scanned_at: new Date().toISOString() }),
})).json(); // scan.result: accepted, duplicate, wrong_day…

// PHP
$scan = Http::withToken($key)->withHeaders(['Idempotency-Key' => (string) Str::uuid()])
    ->post("https://api.entrywick.io/v1/events/{$event}/scan", ['code' => $code, 'check_in_point' => 'GATE1', 'client_uuid' => (string) Str::uuid(), 'scanned_at' => now()->toIso8601ZuluString()])->json();

# Python
scan = requests.post(f"https://api.entrywick.io/v1/events/{event}/scan",
    headers={"Authorization": f"Bearer {key}", "Idempotency-Key": str(uuid.uuid4())},
    json={"code": code, "check_in_point": "GATE1", "client_uuid": str(uuid.uuid4()), "scanned_at": "2027-05-01T13:05:00Z"}).json()