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:

  1. An API key, created in your Artistu settings and limited to the artists you choose, which authenticates your website.
  2. Per-booking online settings, which control whether a booking is announced and what public details it carries.
  3. 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:

  1. The booking status is option or confirmed. Pending and cancelled bookings never appear.
  2. The booking is announced: either the Announced toggle is on, or the Announce on date has passed.
  3. 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:

FieldPurpose
Announce onDate on which the booking automatically becomes announced
AnnouncedManually mark the booking as announced right now
Hide from public APIKeep the booking out of the API even when it is announced
WebsitePublic event or venue website, included in the API response
Ticket linkLink to ticket sales, included in the API response
Line-upPublic line-up text, included in the API response
Public notesAny 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

ParameterFormatDefaultDescription
startDateYYYY-MM-DDtodayFirst date to include
endDateYYYY-MM-DDstartDate + 1 monthLast 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: Bearer header 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-DD format, startDate is after endDate, 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.