The venue API is an add-on that opens your data to your own website and tools. A key in a header, a request to your-venue.mlttp.com/api/v1/, and you have your leaderboard as JSON for your homepage, your drivers for a mailing tool, your league standings for a widget, or a booking created from a form you designed. Webhooks work the other way: Multitap calls your server, with a signed message, the moment a lap lands or a record falls.
Enabling the add-on
The API is enabled per venue by Multitap. Until then the API page in your admin panel shows a short description and a link to the reference. Once enabled, the page shows an Enabled badge, your rate limit and monthly quota, a usage panel and the key and webhook managers.
The API page
Usage This Month
Requests so far this month against your quota, how many remain, a bar that turns amber past 70 percent and red past 90, and a sparkline of the last thirty days.
API Keys
Press Create Key.
| Field | What it does |
|---|---|
| Type | Secret keys start with sk_ and are for your server. Never put one in a web page. Publishable keys start with pk_ and are for browser code on your own site: they are read-only and only work from the origins you list. |
| Label | A name for your own reference, such as Venue website. |
| Include driver contact data | Secret keys only. Grants the driver endpoints, which include names, emails and birthdates. Leave it off unless the integration needs them. |
| Allowed origins | Publishable keys only. One website origin per line, for example https://www.yourvenue.com. Browser requests from anywhere else are refused. |
The full key is shown once, in a Copy your key now dialog. Store it; it cannot be displayed again. The table lists each key's prefix, label, type, scopes, who created it and when it was last used. Revoke stops a key immediately after a confirmation. You can hold up to ten active keys.
Webhooks
Press Add Endpoint, enter a public https:// address on your server, and tick the events you want. A signing secret is shown once, and can be revealed again later from the table. Each endpoint row has Secret, Rotate, Test (sends a ping and reports the response time), Deliveries (the last 25 attempts with status and timing), Disable or Enable, and Delete. Up to five active endpoints.
| Event | Sent when |
|---|---|
lap.completed | Any lap is recorded, valid or not: game, driver, car, track, time, sectors, validity, tyre, top speed and cuts. |
personal_best.set | A valid lap beats the driver's previous best on that car and track, with the previous time. |
record.broken | A valid lap takes first place for a class and track, with the previous holder and time. Ticked by default. |
league.round_confirmed | A league round is confirmed: the top ten and links to the standings and results. |
Deliveries are signed with an X-Multitap-Signature header containing a timestamp and an HMAC-SHA256 of the body, so your server can verify each message came from Multitap. A delivery that does not get a 2xx response is retried at one minute, five minutes, thirty minutes and two hours before being marked dead. An endpoint that fails ten times in a row is disabled automatically until you re-enable it.
Using the API
curl https://your-venue.mlttp.com/api/v1/leaderboard?track=monza \
-H "Authorization: Bearer sk_your_key"
Responses wrap results in a data field with paging information in meta. Errors carry a code and a message. Every response includes rate-limit headers so your code can back off. Limits are per key per minute, with publishable keys getting half the venue's rate, and a monthly quota shared across keys.
Endpoints
| Endpoint | Returns |
|---|---|
GET /venue | Venue name, branding and enabled games. A handy key check. |
GET /usage | This month's request count and quota. |
GET /leaderboard | Best valid lap per driver, filtered by game, period, track, car or class, paged. |
GET /laps | Full lap history with the same filters plus player and validity. |
GET /activity | Recent laps with their milestone, for a live ticker. |
GET /drivers, /drivers/{id}, /drivers/{id}/stats | Registered drivers, their linked names, and their statistics. Needs the driver contact scope. |
GET /leagues, /leagues/{id}, /leagues/{id}/standings, /leagues/{id}/rounds | Championships, standings and rounds. |
GET /rounds/{id}/results, /rounds/{id}/laps, /rounds/{id}/incidents | Results, laps and incidents for a round's practice, qualifying or race. |
GET /traffic/leaderboard, /traffic/players/{name} | Traffic scores by track, and one player's history. |
GET /content/cars, /content/tracks | Your catalogue with display names, classes, regions and preview image links. |
Booking endpoints
| Endpoint | Purpose |
|---|---|
GET /booking/config | Durations, slot increment, opening hours, prices, terms and bookable rigs. |
GET /booking/availability | Free start times for a date and duration, optionally for a party size and rig type. |
POST /booking | Creates a confirmed booking and queues the confirmation email. Needs a secret key with the booking write scope. |
GET /booking/{id} | One booking. |
POST /booking/{id}/cancel | Cancels it. |
Reference
The full reference, with every parameter, response schema, error code and a webhook verification example, is published at your-venue.mlttp.com/api/docs. It is public, so your developer can read it before a key exists.