mysetlist.ai

Developer Reference

Artist Node API

Programmatic access to the mysetlist.ai Artist Node Registry for labels, distributors, PROs, broadcasters, sync houses, and DSPs.

Carrier API access requires an approved application. Individual artist lookups are open. To request bulk or automated access, apply below.

Request Carrier Access

Base URL

https://mysetlist.ai

All endpoints are served over HTTPS. There is no versioned subdomain — versioning is in the path (/api/v1/).

Authentication

The Artist Node lookup endpoint supports two access modes:

Public (no auth)

Any client can look up a single artist node by UUID. No key required. Suitable for artist dashboards and one-off integrations.

GET /api/v1/artist/{uuid}
# No Authorization header required

Carrier (bearer token)

Automated or bulk access requires a carrier API key. Pass it as a Bearer token. All carrier requests are logged.

GET /api/v1/artist/{uuid}
Authorization: Bearer ck_live_{your-48-char-hex-key}

Carrier keys are issued after approval. Key format: ck_live_{48 hex chars}. Keys are never returned after initial issuance — store them securely.

Endpoints

GET /api/v1/artist/{uuid}
Retrieve the public Artist Node record for a given UUID.
Parameter In Type Description
uuid required path string (UUID v4) The UUID portion of the artist's Node ID. Not the full msl:artist:… string — just the UUID.

Response — 200 OK

{
  "nodeId":       "msl:artist:radiohead:550e8400-e29b-41d4-a716-446655440000",
  "uuid":         "550e8400-e29b-41d4-a716-446655440000",
  "artistName":   "Radiohead",
  "isni":         "0000000121707484",
  "isrc":         "GBBRL9300135",
  "platforms":    ["spotify", "tidal", "apple_music"],
  "reviewStatus": "approved",
  "submittedAt":  "2026-05-25T14:30:00.000Z"
}

Response fields

FieldTypeDescription
nodeIdstringFull Artist Node identifier in msl:artist:{slug}:{uuid} format.
uuidstringUUID v4 — the primary lookup key.
artistNamestringRegistered artist or act name.
isnistring | nullInternational Standard Name Identifier if provided at registration.
isrcstring | nullInternational Standard Recording Code if provided at registration.
platformsstring[]Carrier distribution preferences. Values: spotify, apple_music, youtube_music, tidal, amazon_music, deezer, soundcloud, beatport, bandcamp.
reviewStatusstringpending — awaiting review. approved — node is active. rejected — not admitted.
submittedAtstring (ISO 8601)UTC timestamp of registration.

What is never returned

The API deliberately omits: email address, email hash, IP hash, submission pitch, Cloudflare ray ID, and country of origin. These fields exist in the internal record but are never exposed via any public endpoint.

Rate Limits

Beta: 1,000 requests / day per carrier key

Rate limits are enforced per carrier key. Exceeding the limit returns 429 Too Many Requests. Public (unauthenticated) requests share a global IP-based limit.

If your integration requires higher volume, note it in your carrier access application.

Error Responses

All errors return JSON with an error string field.

StatusMeaning
201Created — submission accepted.
400Bad request — invalid UUID format or missing required field.
401Unauthorized — carrier key missing, malformed, or not recognised.
403Forbidden — carrier key is suspended.
404Not found — no Artist Node exists for the given UUID.
405Method not allowed.
413Payload too large.
429Rate limit exceeded.
500Server error — try again shortly.

Integration Examples

cURL

curl -s \
  -H "Authorization: Bearer ck_live_{your-key}" \
  "https://mysetlist.ai/api/v1/artist/550e8400-e29b-41d4-a716-446655440000"

JavaScript (fetch)

// Node.js / browser / CF Worker
const res = await fetch(
  `https://mysetlist.ai/api/v1/artist/${uuid}`,
  { headers: { Authorization: `Bearer ${CARRIER_KEY}` } }
);
if (!res.ok) throw new Error(`MSL API ${res.status}`);
const node = await res.json();
console.log(node.artistName, node.isni, node.platforms);

Python

import requests

CARRIER_KEY = "ck_live_{your-key}"
UUID        = "550e8400-e29b-41d4-a716-446655440000"

r = requests.get(
    f"https://mysetlist.ai/api/v1/artist/{UUID}",
    headers={"Authorization": f"Bearer {CARRIER_KEY}"},
    timeout=5,
)
r.raise_for_status()
node = r.json()
print(node["artistName"], node["isni"], node["platforms"])

Node ID Format

Every registered artist receives a Node ID in the following format:

msl:artist:{slug}:{uuid-v4}

# Example
msl:artist:radiohead:550e8400-e29b-41d4-a716-446655440000

slug — URL-safe lowercase version of the artist name. Cosmetic only; not unique.

uuid-v4 — The primary identifier. Cryptographically random. This is what you use for API lookups.

The format follows the W3C Decentralised Identifier (DID) naming convention and is forward-compatible with a future did:msl: method registration.

Terms of Service

Use of the mysetlist.ai API is governed by the API Terms of Service. Key obligations: no resale of data, no artist surveillance, attribution required in downstream products, breach triggers immediate key revocation. By applying for carrier access you agree to these terms.

Getting Access

Carrier access applications are reviewed manually. Typical turnaround is 3–5 business days. To apply:

  1. Complete the Carrier Access application form.
  2. Describe your organisation type, jurisdiction, and intended use case.
  3. Agree to the API Terms of Service.
  4. If approved, you'll receive a ck_live_ key via email.
Apply for Carrier Access →