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 token, generated once in your Artistu settings, 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.
Generate your API token
Go to Settings → Integrations and find the Public API section. Click Generate token. You need to be an admin of your organization to do this.
The token is a 64-character string. Treat it like a password: anyone who has it can read your public booking data. It is masked in the interface after generation, use the Show button to reveal it again.
Two more actions are available once a token exists:
- Regenerate token creates a new token and immediately invalidates the old one. Any website or integration still using the old token stops working right away.
- Revoke token deletes the token without creating a new one. All API access stops until you generate a new 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 Settings tab, and scroll to the Online 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 token is missing, malformed, or has been regenerated or revoked. Check the
Authorization: Bearerheader and compare the token with the one in Settings → Integrations. - 404 Artist not found: the artist ID does not exist or belongs to a different organization than the token.
- 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.