UniHub API

The campus
events API.

Everything UniHub runs on, available to your product: events, ticketing, door check-in, registrations, communities, payments, notifications and webhooks. Sign up and every service answers on your first request.

Free test key, instantly 27 services on every key REST, JSON, OpenAPI 3.1
curl https://try-unihub-server.pxxl.click/platform/v1/events \
  -H "Authorization: Bearer $UNIHUB_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Hack Night",
    "venue": "Innovation Hub",
    "date": "28/11/2026",
    "capacity": 120,
    "ticketTypes": [{ "name": "Student", "price": 1500 }]
  }'
201 Createdapplication/json
{
  "data": {
    "id": "evt_8Fq2…",
    "name": "Hack Night",
    "venue": "Innovation Hub",
    "date": "28/11/2026",
    "capacity": 120,
    "ticketTypes": [
      { "name": "Student", "price": 1500, "sold": 0 }
    ],
    "visibility": "public"
  }
}
What you can build

From one club page to a whole campus app.

The pieces most student products end up rebuilding (ticketing, check-in, payments, communities, sign-in) already exist. Use the ones you need.

TICKETING ON YOUR SITE

Sell tickets without building a payment stack.

Start a hosted Paystack checkout for one of your events, priced from the event itself. When the payment lands, your wallet is credited and you get a charge.succeeded webhook to issue the ticket.

01Your site calls POST /charges
02The buyer pays on Paystack
03A webhook tells you to issue the ticket
POST/chargesGET/charges/{ref}GET/wallet
SIGN IN WITH UNIHUB

Let students log in with the account they already have.

OAuth 2.0 with PKCE. They see who is asking and approve exactly what you can access.

CLUB AND UNION PORTALS

Run the whole organizer workflow.

Events with private access codes, approval queues, waitlists and guest-list export, plus communities with roles, pinned posts and stats.

POST/eventsPOST/registrations/…/approveGET/events/{id}/guests
DOOR CHECK-IN

Build your own scanner, or plug into ours.

Record check-ins from any device. A ticket admits once, a repeat scan answers instead of blocking the door, and every admission can fire a webhook to your dashboard or spreadsheet.

POST/checkinsGET/events/{id}/tickets
DISCOVERY

Put campus events on any website.

Read the public calendar across UniHub, filtered by date and category, to power a listings page, a newsletter or a screen in the student centre.

GET/discovery/eventsGET/institutions
AUTOMATION

React to everything as it happens.

17 webhook events cover sales, registrations, check-ins, payouts and community activity.

One key

Every service, switched on.

Every key you create carries all 27 scopes from the moment it exists. Narrow a key to what one service needs whenever you like.

Events
Create and run events, and read the public calendar.
events:writeCreate and update events owned by your organization
events:readRead events owned by your organization
institutions:readRead the country / university directory
Tickets and check-in
Issue tickets and admit people at the door.
tickets:writeIssue tickets and record check-ins
tickets:readRead tickets and check-in state for your events
Registrations
Approvals, cancellations and waitlists.
registrations:writeApprove, reject and cancel registrations
registrations:readRead registrations, pending approvals and waitlists
Payments
Hosted checkout, your wallet, and payouts.
charges:writeStart payments for your events and verify them
wallet:readRead your organization's wallet balance and transactions
payouts:writeRequest payouts of available wallet balance
Communities
Spaces, members, roles, feeds and moderation.
communities:writeCreate communities, manage members and post to feeds
communities:readRead communities and posts owned by your organization
social:readRead public profiles, search users, and read follow lists
social:writeFollow and unfollow on behalf of a user
reports:writeFile abuse reports on behalf of a user
Messaging
In-app notifications, push, and email or SMS through your own provider.
notifications:sendSend in-app and push notifications to UniHub users
notifications:readRead and manage a user's own notification inbox and preferences
messages:sendSend email and SMS through your own connected provider
connections:writeConnect, test and remove your own provider accounts
connections:readSee which provider accounts your organization has connected
Identity
Bring your own users, or let students sign in with UniHub.
users:writeCreate and manage your own end users, and mint their sessions
users:readRead the end users your organization created
oauth:manageRegister and manage your Sign in with UniHub applications
Operations
Webhooks, analytics and media storage.
webhooks:writeCreate, update and delete webhook endpoints
webhooks:readList webhook endpoints and delivery attempts
analytics:readRead usage and sales analytics scoped to your organization
media:writeUpload images and files to UniHub's CDN
Getting started

Live in three steps.

01

Sign up

Create a developer account and an organization. A test key and a live key appear on screen straight away, with every service already enabled. No application form, no per-service approval.

02

Build against the test key

The whole API answers from the first request against real infrastructure, so what works in test works in production. Watch every request and webhook delivery in your dashboard.

03

Verify and go live

Submit your organization for review from its settings. Once it is verified, the live key you already have starts working, with no re-minting and no redeploy.

Production-ready

The boring parts, done properly.

Real money and real door queues run on this, so it is built for retries, failures and scrutiny from the start.

Safe to retry

Writes that move money or issue tickets take an Idempotency-Key. Retry after a timeout and you get the original result, never a second ticket or charge.

Signed webhooks, delivered

17 event types, each signed with HMAC-SHA256 over the timestamp and body (X-UniHub-Signature), and retried with backoff for up to six attempts.

Predictable limits

Per key, not per address: 60 requests a minute on test keys and 600 on live keys, with RateLimit-* headers on every response.

Test and live, side by side

sk_test_ and sk_live_ keys share one API. Keys are stored only as hashes, scoped, and can be revoked from the dashboard at any time.

Consent you can show

With Sign in with UniHub, students approve exactly what you can see or do, on a consent screen in their own words. Your token is limited to that, whatever your key allows.

Everything observable

Request logs, webhook deliveries and usage live in your dashboard, and the full reference is an OpenAPI 3.1 document you can load into any tool.

Pricing

Free to build on.
2% when you sell.

No plans and no per-request charges. When you sell paid tickets through the API, UniHub keeps the same 2% it keeps in the app.

₦0API access, test and live
2%of each paid ticket you sell
2%on payouts to your bank