FHX Kenangan
Guests send photos, videos and wishes from their phone. Private gallery and a big-screen display.
fhxlabs.com/product/kenangan
FHX Kenangan, Pesta Duel and MajlisKita each work on their own, and they connect to each other. Here is what connects to what, how accounts are linked, and the APIs we offer.
Guests send photos, videos and wishes from their phone. Private gallery and a big-screen display.
fhxlabs.com/product/kenangan
Scan-to-join crowd games: phones become controllers, the big screen shows the race, draw or quiz.
pestaduel.fhxlabs.com
Event management: registration, tickets, check-in, sessions, speakers and vendors.
majliskita.fhxlabs.com
| From β to | What you get | Status |
|---|---|---|
| MajlisKita β Kenangan | Each event gets a Kenangan event: the guest QR on e-tickets and the attendee portal, the gallery in the organiser console, the big-screen display on the host screen. | Live with an API key Planned via linked accounts |
| MajlisKita β Pesta Duel | Open a Pesta Duel event for a MajlisKita event, bring registered attendees in as players, see winners and prize claims back in MajlisKita. | Planned |
| Pesta Duel β Kenangan | A "Kongsi kenangan" QR between games and on the podium, and the Kenangan display between rounds. | Live with an API key Planned via linked accounts |
Linked accounts (FHX Connect) are Planned. Until then, connect apps with a Kenangan API key.
All APIs use JSON. Errors are { "error": "β¦" } with an HTTP status code.
Base URL https://fhxlabs.com/api/kenangan. These routes can be called from any website.
| Who | Auth | Routes |
|---|---|---|
| Guests | none | GET /events/:code Β· POST /events/:code/media (photo or video as the raw body) Β· POST /events/:code/wishes |
| Big screen | display link token | GET /display/:code?t=β¦ |
| Your app | organiser API keyAuthorization: Bearer kn_β¦ | GET /v1/event Β· GET /v1/items?type=&since=&limit= Β· PATCH /v1/event (open/close) Β· DELETE /v1/items/:id |
Limits: photos up to 15 MB, videos up to 50 MB and 60 seconds, and the limits of the event's package (Event Pass: 1,000 photos, 100 videos, 1,000 wishes).
const KENANGAN = 'https://fhxlabs.com/api/kenangan';
const res = await fetch(`${KENANGAN}/v1/items?limit=50`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { items } = await res.json();
// items[0] β { id, type: 'image', name, at, url, downloadUrl }
Base URL https://pestaduel.fhxlabs.com/api/v1, for linked accounts: list and create events, import players, read winners and prize claims, attach a Kenangan event.
Base URL https://majliskita.fhxlabs.com/api/v1, for linked accounts: list events. Webhooks for registrations and check-ins later.
The same linking flow on every platform: sign in on the other app, which checks that the email is the same, then you approve. Built on OAuth 2.0 (authorization code with PKCE). Linked apps get a revocable link token and one-time login links.
GET /v1/event with the key. Show guestUrl as a QR code and open displayUrl on the big screen.Building an integration? βοΈ hello@fhxlabs.com