API reference
Start a verification
Create a check from your signup or ticketing system, send the guest to their phone, and take the result from a signed webhook.
VenueGo reads a passport or driving licence in the camera. It does not look up DVLA, the passport office, or any other government database, and it does not read a passport chip. Documents in scope are UK, Irish and US passports (photo page) and driving licences (front and back).
The API base URL is https://verify.venuego.co.uk/api/v1. The same API is served on verify.venueora.com. Call it from your server. Never put an API key in a browser or app.
How a check moves
- Your server creates a session with your own
sessionId. The response includes aurl. - You send the guest to that URL. On a desktop they see a QR code and continue on their phone. The check takes about two minutes: face capture, the document, then a photo holding it.
- VenueGo posts a signed webhook as the status changes. The same body is available from
GET /verification-sessions/:sessionId. - A clear result is
approvedordeclined. Anything uncertain isneeds_reviewuntil your team, or VenueOra, decides.
A session stays open for 24 hours and allows 3 attempts. Repeating the same sessionId while it is still open returns that session. Once it has finished, that id returns 409 and session_closed, and you need a new sessionId.
Create one
curl https://verify.venuego.co.uk/api/v1/verification-sessions \
-H "Authorization: Bearer $VERIFYME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "order_8412",
"minimumAge": 18,
"webhookUrl": "https://example.com/webhooks/venuego",
"successUrl": "https://example.com/checkout/verified",
"failureUrl": "https://example.com/checkout/not-verified",
"metadata": { "customerId": "cus_1043", "ticketType": "VIP" }
}'
A new session returns 201 and "created": true. Repeating the same sessionId returns 200 and "created": false with the current payload.
const res = await fetch("https://verify.venuego.co.uk/api/v1/verification-sessions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VERIFYME_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
sessionId: order.id,
minimumAge: 18,
successUrl: `https://example.com/orders/${order.id}/verified`,
failureUrl: `https://example.com/orders/${order.id}/not-verified`,
metadata: { customerId: order.customerId },
}),
});
const session = await res.json();
// Send the guest to session.url. Do not trust a later browser redirect on its own.
What to build next
- Add to your app if a coding agent is wiring this into an existing signup or checkout.
- Authentication for API keys.
- Sessions for every field, idempotency, and cancel.
- Webhooks for the signature and retries.
- Results for status, identity, and reason codes.
Confirm the outcome from the webhook or a GET. successUrl and failureUrl are conveniences for the guest's browser. They can be opened by anyone who has the link.