Loading...
What is inside the QR, and how to issue tickets that look like yours rather than ours.
The bare registration id, as a plain string — for example pNd1m0TRqN8Hx5a1QopI. No URL, no JSON, no signature. Just the id.
So you never need an endpoint from us to draw a ticket. The moment you have the registration id you have the entire payload, and you can render the QR yourself at any size, in any format, inside your own ticket design. There is no endpoint that returns a QR image, and there does not need to be.
registrationId from POST /events/{id}/registerregistrationId from the registration.confirmed webhookid on each row of GET /events/{id}/registrationsTeam bookings issue one ticket per member, each with its own id. The webhook carries the primary registration id — pull the roster to get each member’s.
Any QR library will do. This is exactly what our own mailer runs, so a code you draw this way scans in the Vihaya check-in app identically to one we sent.
import QRCode from 'qrcode';
const png = await QRCode.toBuffer(registrationId, {
type: 'png', width: 480, margin: 1, errorCorrectionLevel: 'M',
});The scanner additionally parses {"eventId":"…","registrationId":"…"} if you would rather encode JSON. A bare id is what Vihaya itself emits.
Vihaya’s ticket email is not customisable — there is no template uploader and no per-organiser branding. You do not have to use it. Everything needed to send your own already crosses the wire, so it becomes your template, your domain and your sender reputation.
name, email, eventTitle, ticketType and quantity are all in data. A standard ticket needs no follow-up call.data.registrationId, as above.sendTicketEmails is fixed in Firestore rules so an organiser cannot silence their own attendees’ tickets by accident. Until support flips it, the attendee receives both emails.Switching our delivery off does not reduce your platform fee. The delivery slice of the rate is currently 0% — the published rate and the platform’s own rate are the same number — so there is nothing to give back. Do not plan around a discount.