Skip to content

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

  1. Your server creates a session with your own sessionId. The response includes a url.
  2. 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.
  3. VenueGo posts a signed webhook as the status changes. The same body is available from GET /verification-sessions/:sessionId.
  4. A clear result is approved or declined. Anything uncertain is needs_review until 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

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.