Advanced
Show your bookings on your website with the Public API
Many agencies and artists show their upcoming dates on their own website: a tour page, a gig calendar, or a simple list of shows. The Artistu Public API gives you a read-only feed of your announced bookings, so your website always shows the same dates you manage in Artistu. No manual copying, no outdated tour pages.
The API is read-only and only ever exposes information you explicitly mark as public. Fees, deals, contacts, internal notes, and unannounced shows are never included.
How it works
Three pieces work together:
- An API key, created in your Artistu settings and limited to the artists you choose, which authenticates your website.
- Per-booking online settings, which control whether a booking is announced and what public details it carries.
- A single endpoint that returns the announced bookings for one artist as JSON.
Create an API key
Go to Settings → Integrations and find the Public API keys section. Click Create key, give the key a name (for example the website it is for) and choose the artists it may read, or tick All artists. You need to be an admin of your organization to do this.
The key is shown once, right after you create it. Copy it straight away: Artistu only stores a fingerprint of the key, so nobody can look it up again, including us. Lost a key? Revoke it and create a new one.
Keys are limited to their artists. A key made for one artist's website only returns that artist's bookings, so a key that leaks exposes that artist and not your whole roster. Create a separate key per website.
Each key in the list shows its artists, when it was created and when it was last used. Revoke stops a key immediately. Any website or integration still using it stops working right away.
Created a token before keys existed? It keeps working for now and has access to all artists. Create a new key, update your website and then revoke the old token.
Control which bookings appear
Not every booking belongs on your website. A booking only appears in the API when all of the following are true:
- The booking status is option or confirmed. Pending and cancelled bookings never appear.
- The booking is announced: either the Announced toggle is on, or the Announce on date has passed.
- The Hide from public API toggle is off.
You manage this per booking. Open a booking, go to the Details tab, and scroll to the Public section. There you find:
| Field | Purpose |
|---|---|
| Announce on | Date on which the booking automatically becomes announced |
| Announced | Manually mark the booking as announced right now |
| Hide from public API | Keep the booking out of the API even when it is announced |
| Website | Public event or venue website, included in the API response |
| Ticket link | Link to ticket sales, included in the API response |
| Line-up | Public line-up text, included in the API response |
| Public notes | Any extra public text, included in the API response |
The Announce on date is useful when a show is confirmed but under embargo until an official announcement date. Set the date, and the booking appears in the API automatically from that day on.
Hide from public API is the override for shows that are announced elsewhere but should not be on your website, for example private events.
Find your artist ID
The API returns bookings for one artist at a time. You find the artist ID in the address bar when viewing the artist in your dashboard:
https://artistu.io/dashboard/artists/{artistId}
The last part of the URL is the ID you pass to the API. If your website shows multiple artists, make one request per artist.
Fetch bookings
GET https://artistu.io/api/public/bookings/{artistId}
Authenticate with your token in the Authorization header:
Authorization: Bearer YOUR_API_TOKEN
Query parameters
| Parameter | Format | Default | Description |
|---|---|---|---|
startDate | YYYY-MM-DD | today | First date to include |
endDate | YYYY-MM-DD | startDate + 1 month | Last date to include |
The date range can span at most 366 days, and startDate must be on or before endDate.
Example request
curl -X GET 'https://artistu.io/api/public/bookings/{artistId}?startDate=2026-08-01&endDate=2026-12-31' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Example response
{
"bookings": [
{
"bookingId": "uq1ye3nqnb4m5f234auf69gk",
"artistName": "DJ Example",
"name": "Summer Festival 2026",
"date": "2026-08-15T00:00:00.000Z",
"time": "22:00",
"duration": 90,
"venue": "Festival Grounds",
"capacity": 15000,
"status": "confirmed",
"address": {
"description": "Festival Grounds, Amsterdam, Netherlands",
"geometry": { "lat": 52.3676, "lng": 4.9041 },
"components": {
"city": "Amsterdam",
"country": "Netherlands",
"countryCode": "NL"
}
},
"website": "https://summerfestival.example",
"ticketLink": "https://tickets.example/summer-festival",
"lineUp": "DJ Example, Support Act",
"publicNotes": "Main stage closing set"
}
],
"truncated": false
}
Bookings are sorted by date, ascending. duration is in minutes. status is either option or confirmed. Fields without a value are null.
A response contains at most 500 bookings. If your date range matches more, truncated is true and a maxResults field is included. Narrow the date range to fetch the rest.
Rate limits
- 60 requests per minute per token
- 120 requests per minute per IP address
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. When you exceed a limit, the API responds with status 429 and tells you how many seconds to wait.
For a typical website, cache the API response on your own server for a few minutes instead of calling the API on every page view. Your tour page stays fast and you stay far away from the limits.
Troubleshooting
- 401 Unauthorized: the key is missing, malformed, or has been revoked. Check the
Authorization: Bearerheader and compare the start of the key with the list in Settings → Integrations. - 404 Artist not found: the artist ID does not exist, belongs to a different organization, or is not one of the artists on the key.
- 400 Bad request: a date is not in
YYYY-MM-DDformat,startDateis afterendDate, or the range exceeds 366 days. - A booking is missing: check the three visibility conditions above. Most often the booking is not announced yet, or its status is still pending.