Public API v1 • SDK Module

SDK Events

Build schedules: events, venues, and speakers — with pagination and predictable ordering.

What it does

The Events module powers your schedule UI. It exposes:

  • Events (talks, workshops, sessions)
  • Venues (rooms / locations)
  • Speakers (bios and headshots)

Everything returned is already filtered to published items for the conference your API key belongs to.

Scopes

  • events:read – required
  • events:write – for workshop registrations + payment proof

Module gate: the Events module must be enabled for the conference.

List events

GET/api/public/v1/events/events

Pagination uses limit and offset. Default limit is 100, max is 500. Ordering is by start_at ascending (schedule order).

SDK
ts
const res = await confera.events.list({ limit: 200, offset: 0 });

// res.data: array of published events
// res.pagination: { offset, limit }
console.log(res.data[0]);
cURL
bash
curl "https://your-domain/api/public/v1/events/events?limit=200&offset=0" \
  -H "X-API-Key: cat_..."

List venues

GET/api/public/v1/events/venues

Venues are returned sorted by name. No pagination is required.

SDK
ts
const venues = await confera.events.listVenues();
console.log(venues.data);

List speakers

GET/api/public/v1/events/speakers

Speakers are returned sorted by name. No pagination is required.

SDK
ts
const speakers = await confera.events.listSpeakers();
console.log(speakers.data);

List workshops

GET/api/public/v1/events/workshops

Returns published workshops only.

SDK
ts
const res = await confera.events.listWorkshops({ limit: 200, offset: 0 });
console.log(res.data);

Register for a workshop

POST/api/public/v1/events/workshops/registrations

Uses the same capacity / waitlist / offer rules as the web app. For paid workshops, a successful registration may return status=offered and a 24h offerExpiresAt.

SDK
ts
const res = await confera.events.registerForWorkshop({
  workshopId: "WORKSHOP_ID",
  registrationId: "REG_ID",
});

console.log(res.data); // { id, status, offerExpiresAt }

Upload workshop payment proof

POST/api/public/v1/events/workshops/payment-proof/upload-url

Paid workshops require a proof file. This flow is two-step: (1) upload to a signed URL, (2) attach the returned storageUri to the workshop registration.

SDK
ts
// 1) Signed URL + upload bytes
const { storageUri } = await confera.events.uploadWorkshopPaymentProof({
  workshopRegistrationId: "WR_ID",
  filename: "receipt.png",
  contentType: "image/png",
  data: fileBytes,
});

// 2) Save it on the workshop registration
await confera.events.setWorkshopPaymentProof({
  workshopRegistrationId: "WR_ID",
  paymentProofUrl: storageUri,
});

UI patterns (what to build)

Schedule list

Fetch events + venues once on your server, then group by day, track, or venue. Use start_at to build time blocks.

Speaker page

Fetch speakers and link them from event cards. Cache speaker data aggressively (it changes rarely).