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 token, generated once in your Artistu settings, 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.

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:

  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 Settings tab, and scroll to the Online 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 token is missing, malformed, or has been regenerated or revoked. Check the Authorization: Bearer header 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-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.