Public API v1 • Stable

Build on Confera

Copy/paste integrations for schedule data, website content, and check-ins — without learning the whole system.

What this API is

The Confera Public API lets you use your conference data in your own website or app. Think: show the live schedule, render the public website pages, or build a check-in kiosk.

Every API key is tied to a single conference and only works while the conference is live and before the plan ends.

Fast start

Use copy/paste examples. No SDK required.

Safe by default

Keys expire automatically when the plan ends.

Get an API key (2 minutes)

  1. 1) Open your conference dashboard → DeveloperAPI keys.
  2. 2) Click Create key and choose what it can do (read schedule, write check-ins, etc.).
  3. 3) Copy the secret once and store it safely (you won’t see it again).
Important: API keys must stay on your server. Don’t paste them into browser code.

Authentication

Send your key as X-API-Key (recommended) or as a Bearer token. If the key is missing/invalid/expired, you’ll get 401.

Simple request
bash
curl "https://your-domain/api/public/v1/events/events" \
  -H "X-API-Key: cat_..."

Security basics (non-negotiable)

  • Keep the key on the server (never in the browser).
  • Use the smallest scopes you need.
  • Create separate keys for separate integrations.
  • Revoke keys immediately if they leak.
Recommended: proxy from your app server
ts
// Example (Next.js Route Handler)
// /app/api/my-site/schedule/route.ts

export async function GET() {
  const res = await fetch(process.env.CONFERA_API_BASE + "/api/public/v1/events/events", {
    headers: { "X-API-Key": process.env.CONFERA_API_KEY! },
    cache: "no-store",
  });

  return new Response(await res.text(), {
    status: res.status,
    headers: { "Content-Type": "application/json" },
  });
}

Pagination & errors

Pagination

Most list endpoints support limit and offset.

Example
bash
curl "https://your-domain/api/public/v1/events/events?limit=50&offset=0" \
  -H "X-API-Key: cat_..."

Errors

Errors return JSON with a clear message.

Typical error
json
{ "error": { "code": "unauthorized", "message": "Missing API key" } }
GET/api/public/v1/health

Health check

Use this to confirm your key works.

Request
bash
curl "https://your-domain/api/public/v1/health" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/website/site

Website “site” document

Fetch the public site JSON to render pages on your own front-end.

Request
bash
curl "https://your-domain/api/public/v1/website/site" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/website/pages

Website pages (deprecated)

Kept for backward compatibility. Prefer /api/public/v1/website/site.

Request
bash
curl "https://your-domain/api/public/v1/website/pages" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/events/events

Events

List the schedule events (talks, workshops, etc.).

Request
bash
curl "https://your-domain/api/public/v1/events/events?limit=50" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/events/venues

Venues

List venue rooms/locations for schedule grouping.

Request
bash
curl "https://your-domain/api/public/v1/events/venues" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/events/speakers

Speakers

List speakers for your schedule UI.

Request
bash
curl "https://your-domain/api/public/v1/events/speakers" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/events/workshops

Workshops

List published workshops for a custom enrollment UI.

Request
bash
curl "https://your-domain/api/public/v1/events/workshops?limit=50" \
  -H "X-API-Key: cat_..."
POST/api/public/v1/events/workshops/registrations

Register for a workshop

Enroll (or waitlist) a registration into a workshop.

Request
bash
curl -X POST "https://your-domain/api/public/v1/events/workshops/registrations" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"registrationId":"<registration_id>","workshopId":"<workshop_id>"}'
POST/api/public/v1/events/workshops/payment-proof/upload-url

Workshop payment proof upload

Get a signed upload URL for payment proof (server-side upload).

Request
bash
curl -X POST "https://your-domain/api/public/v1/events/workshops/payment-proof/upload-url" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"workshopRegistrationId":"<workshop_registration_id>","filename":"receipt.png","contentType":"image/png"}'
POST/api/public/v1/badges/checkin

Badge check-in

Record a badge scan/check-in. Use this for kiosks.

Request
bash
curl -X POST "https://your-domain/api/public/v1/badges/checkin" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"qr":"ABC123","location":"kiosk-1"}'
POST/api/public/v1/attendance/checkin

Attendance check-in

Record an attendance scan (daily badges).

Request
bash
curl -X POST "https://your-domain/api/public/v1/attendance/checkin" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"qr":"confera-attendance:DAY1-XYZ","location":"gate-a"}'
GET/api/public/v1/abstracts/abstracts

Accepted abstracts

List accepted abstracts for public pages and program books.

Request
bash
curl "https://your-domain/api/public/v1/abstracts/abstracts?limit=50&include=authors" \
  -H "X-API-Key: cat_..."
GET/api/public/v1/abstracts/abstracts/:abstractId

Get one accepted abstract

Use this for a detail page, deep link, or QR-to-abstract lookup.

Request
bash
curl "https://your-domain/api/public/v1/abstracts/abstracts/ABS123?include=authors" \
  -H "X-API-Key: cat_..."
POST/api/public/v1/abstracts/submissions

Submit an abstract

Advanced flow: you can submit abstracts (with authors, and optional uploaded attachments) using a key with abstracts:write.

Request
bash
curl -X POST "https://your-domain/api/public/v1/abstracts/submissions" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"registrationId":"<registration_id>","title":"My Research Title","authors":[{"fullName":"Aisha Khan"}]}'
GET/api/public/v1/exhibition/exhibits

Published exhibits

Show sponsor/exhibitor booths on a custom website or app.

Request
bash
curl "https://your-domain/api/public/v1/exhibition/exhibits?limit=100" \
  -H "X-API-Key: cat_..."
POST/api/public/v1/exhibition/submissions/payment-proof/upload-url

Upload an exhibition submission payment proof

If exhibition submissions require a payment proof, request a signed upload URL (PUT) and then pass the returned storage:// URI in your submission payload. Requires exhibition:write.

Request
bash
curl -X POST "https://your-domain/api/public/v1/exhibition/submissions/payment-proof/upload-url" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"filename":"receipt.png","contentType":"image/png"}'
POST/api/public/v1/exhibition/submissions

Submit an exhibit

Submit an exhibit/booth application. Behavior depends on the conference’s exhibition settings (open/close window, optional registration requirement, optional fee + proof). Requires exhibition:write.

Request
bash
curl -X POST "https://your-domain/api/public/v1/exhibition/submissions" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Acme Health",
    "exhibitType": "sponsor",
    "shortDescription": "AI triage tools for clinics",
    "driveUrl": "https://drive.google.com/...",
    "presenter": { "fullName": "Aisha Khan", "email": "aisha@example.com" },
    "teamPeople": ["Omar Ali", "Sara Noor"],
    "payment": { "paymentMethodId": "<payment_method_id>", "paymentReference": "TXN-123" }
  }'
GET/api/public/v1/registrations/config

Registration config

Fetch fields, open pricing phase, ticket types, and payment methods.

Request
bash
curl "https://your-domain/api/public/v1/registrations/config" \
  -H "X-API-Key: cat_..."
POST/api/public/v1/registrations/evidence/upload-url

Upload a private receipt/proof file

Optional: if you don’t want to host receipts yourself, request a signed upload URL and then pass the returned storage:// URI as paymentProofUrl.

Request
bash
curl -X POST "https://your-domain/api/public/v1/registrations/evidence/upload-url" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{"filename":"receipt.png","contentType":"image/png"}'
POST/api/public/v1/registrations/registrations

Create a registration

Use this to accept registrations from an external website or vendor.

Request
bash
curl -X POST "https://your-domain/api/public/v1/registrations/registrations" \
  -H "X-API-Key: cat_..." \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Aisha",
    "lastName": "Khan",
    "email": "aisha@example.com",
    "ticketTypeId": "<ticket_type_id>",
    "paymentMethodId": "<payment_method_id>",
    "paymentReference": "TXN-12345",
    "paymentProofUrl": "https://example.com/receipt.png"
  }'

Want the full reference?

See every endpoint, field, and example in the interactive API reference.

Open Reference