Credits.fm

Music Credits API

Free REST API for songwriter credits, publisher chains, recording metadata, and music identifier lookups. No signup required.

ISRCISWCIPIISNIUPC

Quick start

Terminal
# Look up songwriter credits for any ISRC
curl https://credits.fm/api/isrc/GBAYE0601498

# Search across all identifier types
curl "https://credits.fm/api/search?q=bohemian+rhapsody"

# Batch lookup — up to 100 identifiers at once
curl -X POST https://credits.fm/api/batch
  -H "Content-Type: application/json"
  -d '{"isrcs":["GBAYE0601498","USUM71922944"]}'

# Resolve a Spotify URL to identifiers
curl "https://credits.fm/api/lookup?url=https://open.spotify.com/track/5eIDxmWYxRA0HJBYM9bIIS"

Base URL: https://credits.fm — All endpoints return JSON with CORS enabled.

Authentication

Pass your API key via the x-api-key header:

curl -H "x-api-key: cfm_your_key_here" \
  https://credits.fm/api/isrc/GBAYE0601498

No key? The API still works — just with lower rate limits.

Rate limits

TierLookupSearchMCPContribute
No key (per IP)30/min10/min20/minNot available
Free API key300/min60/min60/min10/min

Rate limit info is returned in X-RateLimit-Remaining and X-RateLimit-Limit response headers.

Error responses

All errors return JSON with an error field:

StatusMeaningExample
400Missing or invalid parameter{"error": "ISRC is required"}
401API key required{"error": "API key required for contributions"}
404Identifier not found{"error": "ISRC not found"}
429Rate limit exceeded{"error": "Rate limit exceeded", "retryAfter": 42}
503Service unavailable{"error": "Service unavailable"}

Get an API key

Generate a free API key instantly. No credit card or approval needed.

Optional — for contributor attribution

Max 3 keys per email. No credit card required.

Credits ID

Every entity in Credits.fm has a deterministic Credits ID — a UUIDv5 derived from its external identifier. The same input always produces the same UUID, so you can use it as a stable reference across systems.

EntityInputExample creditsId
Recordingisrc:GBAYE06014989b033599-8a5e-565a-b6b6-2dafbb91939c
Workiswc:T-070237966-1359586ff-b848-502f-98aa-8d33b7dba9fd
Songwriteripi:00014107449699e9761-6d67-5175-81a1-2585fd31e581
Contributorisni:0000000121174866c4d5e6f7-a8b9-5012-3456-789abcdef012
Albumupc:602445790098e5f6a7b8-c9d0-5123-4567-89abcdef0123
Musicianmusician:0383dadf-...a1b2c3d4-e5f6-5789-abcd-ef0123456789
Artistartist:1dfeR4HaWD...b2c3d4e5-f6a7-5890-bcde-f01234567890

The creditsId field appears in all API responses. Phase 1 is response-only — you cannot yet query by Credits ID.

Search & Discovery

GET/api/suggest?q={query}

Fast autocomplete suggestions. Returns up to 8 results across all identifier types. Optimized for <300ms response time.

ParameterTypeDescription
qrequiredstringQuery string (minimum 2 characters)
/api/suggest?q=taylor

Identifier Lookups

GET/api/isrc/{isrc}

Look up a recording by ISRC. Returns songwriter credits, publisher chains, share percentages, ISWC, platform links, and a deterministic Credits ID.

ParameterTypeDescription
isrcrequiredstring12-character ISRC code
/api/isrc/GBAYE0601498
GET/api/iswc/{iswc}

Look up a musical work by ISWC. Returns song title, all recordings (ISRCs), and songwriter credits.

ParameterTypeDescription
iswcrequiredstringISWC code (e.g., T-345246800-1)
/api/iswc/T-070237966-1
GET/api/ipi/{ipi}

Look up a songwriter or publisher by IPI. Returns works, recordings, co-writers, and portfolio stats.

ParameterTypeDescription
ipirequiredstring9-11 digit IPI number
/api/ipi/00014107449
GET/api/isni/{isni}

Look up a creative contributor by ISNI. Returns name variants, creation roles, and linked IPIs.

ParameterTypeDescription
isnirequiredstring16-digit ISNI code
/api/isni/0000000121174866

People

GET/api/musician/{mbid}

Musician profile by MusicBrainz MBID. The real person behind the music — songwriter credits, performer credits, group memberships, IPI/ISNI identifiers. See /api/artist for DSP release artist discography.

ParameterTypeDescription
mbidrequiredstringMusicBrainz artist UUID
/api/musician/0383dadf-2a4e-4d10-a46a-e9e041da8eb3
GET/api/artist/{id}

Artist discography by ID. The performing entity / release artist on DSPs — full catalog with albums, tracks, ISRCs, UPCs, and streaming links. See /api/musician for the real person (songwriter credits, IPI/ISNI).

ParameterTypeDescription
idrequiredstringArtist ID (22-character alphanumeric)
/api/artist/1dfeR4HaWDbWqFHLkxsg1d

Resolution

GET/api/lookup?url={url}

Resolve a Spotify or Apple Music URL to identifiers. Supports tracks, albums, playlists, and artist discographies.

ParameterTypeDescription
urlrequiredstringSpotify or Apple Music URL (track, album, playlist, or artist)
/api/lookup?url=https://open.spotify.com/track/5eIDxmWYxRA0HJBYM9bIIS
POST/api/resolve/track

Resolve a track to its ISRC and songwriter credits. Accepts track name + artist, Spotify URL, or Apple Music URL. Returns the ISRC, full songwriter credits, and a Credits.fm link.

ParameterTypeDescription
namestringTrack name (required if no URL provided)
artiststringArtist name
spotify_urlstringSpotify track URL
apple_music_urlstringApple Music track URL
POST {"name": "Bohemian Rhapsody", "artist": "Queen"}
POST/api/resolve/batch

Batch resolve tracks to ISRCs. Accepts up to 50 track name + artist pairs and resolves each to an ISRC with a Credits.fm link.

ParameterTypeDescription
tracksrequiredarrayArray of {name, artist} objects (max 50)
POST {"tracks": [{"name": "Bohemian Rhapsody", "artist": "Queen"}]}

Data

POST/api/batch

Batch lookup for multiple identifiers in a single request. Accepts up to 100 ISRCs, ISWCs, IPIs, ISNIs, or UPCs per type. Falls back to MusicBrainz for identifiers not yet in the index.

ParameterTypeDescription
isrcsstring[]Array of up to 100 ISRC codes
iswcsstring[]Array of up to 100 ISWC codes
ipisstring[]Array of up to 100 IPI numbers
isnisstring[]Array of up to 100 ISNI codes
upcsstring[]Array of up to 100 UPC barcodes
POST {"isrcs": ["GBAYE0601498", "USUM71922944"]}
POST/api/contribute

Submit data to improve the Credits index. Requires an API key. Contributions are validated and either auto-accepted or queued for review.

ParameterTypeDescription
contributionsrequiredarrayArray of contribution objects (max 25)
.targetrequiredstringIndex type: isrc, iswc, ipi, isni, or upc
.idrequiredstringThe identifier code to contribute to
.fieldrequiredstringField name (e.g., iswc, song_title, songwriters, mlc_song_code)
.valuerequiredstringThe value to contribute
.typestringfill_null (default), correction, or append
.citationstringSource citation (e.g., "MusicBrainz MBID xyz")
POST {"contributions": [{"target": "isrc", "id": "GBAYE0601498", "field": "iswc", "value": "T-070237966-1"}]}
GET/api/coverage

Index coverage metrics — row counts and growth data for all Credits index tables. See where data gaps exist and where contributions are most valuable.

/api/coverage

Validation & Audit

POST/api/validate/batch

Validate ISRCs against MLC ownership data and optionally cross-reference with Spotify and Apple Music. Returns match status, songwriter shares, and any issues found. Supports CSV export via ?format=csv query parameter.

ParameterTypeDescription
isrcsrequiredstring[]Array of up to 100 ISRC codes to validate
include_dsp_checkbooleanCross-reference ISRCs with Spotify and Apple Music (default: false)
POST {"isrcs": ["GBAYE0601498", "USRC17607839"], "include_dsp_check": true}
POST/api/audit/shares

Audit songwriter share percentages for ISRCs. Identifies songs with incomplete shares (< 100%), missing shares, or over-allocated shares (> 100%). Supports CSV export via ?format=csv.

ParameterTypeDescription
isrcsrequiredstring[]Array of up to 100 ISRC codes to audit
POST {"isrcs": ["GBAYE0601498", "USRC17607839"]}
POST/api/audit/unmatched

Check which ISRCs are matched or unmatched at the MLC. Categorizes each ISRC as matched, unmatched, or not in database. Supports CSV export via ?format=csv.

ParameterTypeDescription
isrcsrequiredstring[]Array of up to 100 ISRC codes to check
POST {"isrcs": ["GBAYE0601498", "USRC17607839"]}

Contribute data

Help improve the Credits index by submitting missing data. Every contribution is validated and either auto-accepted or queued for review. Requires a free API key.

What you can contribute

TargetFieldsTypes
isrcrecording_title, song_title, artist_names, iswc, songwriters, cover_art_url, mlc_song_codefill_null
ipifull_name, alternative_names, rolesfill_null, append
Example: Add a missing ISWC to an ISRC
curl -X POST https://credits.fm/api/contribute \
  -H "Content-Type: application/json" \
  -H "x-api-key: cfm_your_key_here" \
  -d '{
    "contributions": [{
      "target": "isrc",
      "id": "GBAYE0601498",
      "field": "iswc",
      "value": "T-070237966-1",
      "citation": "CISAC registry"
    }]
  }'

Contributions build trust over time. New keys start with manual review; accepted contributions increase your trust score for auto-acceptance.

What you get

Songwriter credits

Names, roles (lyricist, composer, arranger), and ownership share percentages from MLC data

Publisher chains

Full publisher hierarchy — original publishers, sub-publishers, and administrator relationships

Recording metadata

Titles, artist names, ISWC connections, match status, and platform links (Spotify, Apple Music)

Musician profiles

The real person behind the music — songwriter + performer credits, group memberships, IPI/ISNI identifiers

Artist discographies

Full DSP catalog for any release artist — albums, tracks with ISRCs, UPCs, cover art, and streaming links

Cross-references

ISRC to ISWC, IPI to ISNI, recording to work — every identifier linked to every other

URL resolution

Paste a Spotify or Apple Music link, get back ISRCs, UPCs, and full track listings

Data sources

Every response aggregates data from multiple authoritative sources in parallel:

MLCSongwriter names, publisher chains, ownership shares, roles
MusicBrainzRecording metadata, artist credits, ISWCs, group memberships (CC0)
CISACAuthoritative ISWC registry with redirect resolution
ISNI.orgCreative contributor identities, name variants, cross-industry linking
SpotifyTrack/album/playlist/artist lookup, cover art, streaming links
Apple MusicTrack/album lookup, cover art, streaming links

Identifier types

CodeFull nameIdentifiesFormat
ISRCInternational Standard Recording CodeSound recordings & music videosGBAYE0601498
ISWCInternational Standard Musical Work CodeMusical compositionsT-070237966-1
IPIInterested Parties InformationSongwriters & publishers00014107449
ISNIInternational Standard Name IdentifierCreative contributors0000000121174866
UPCUniversal Product CodeAlbum releases602445790098

Use with AI

Credits.fm is designed to work with AI assistants. Use the MCP server for native tool access, the OpenAPI spec for one-click setup, or copy a system prompt for any AI tool.

Claude Code, Cursor, Windsurf (MCP)

Connect directly via the Credits.fm MCP server — 8 tools, no auth required.

See credits.fm/mcp/docs for setup configs.

ChatGPT Custom GPTs

  1. Go to ChatGPT → Explore GPTs → Create
  2. Under “Actions”, click “Create new action”
  3. Click “Import from URL”
  4. Paste: https://credits.fm/openapi.json
  5. Done — your GPT can now call all Credits.fm endpoints

Optional: under Authentication, select “API Key”, header name x-api-key, and paste your key for higher rate limits.

Cursor

  1. Add an MCP server in Cursor Settings → MCP
  2. Or add a .cursor/mcp.json to your project with a fetch-based tool pointing to https://credits.fm/api/
  3. Alternatively, paste the system prompt below into your project's .cursorrules file so the agent knows how to call the API via curl

System prompt for ChatGPT, Claude, Cursor, or any AI assistant

Paste this into your Custom GPT instructions, Claude Project instructions, Cursor rules, or any system prompt:

System prompt
You are a music credits research assistant powered by the Credits.fm API (https://credits.fm). You help users find songwriter credits, music identifiers, and music metadata.

Base URL: https://credits.fm

Endpoints:
- GET /api/search?q={query} — Search by song title, artist name, or identifier code
- GET /api/isrc/{isrc} — Look up recording by ISRC (songwriter credits, publisher chains)
- GET /api/iswc/{iswc} — Look up musical work by ISWC (all recordings, songwriters)
- GET /api/ipi/{ipi} — Look up songwriter/publisher by IPI (works, co-writers)
- GET /api/isni/{isni} — Look up creative contributor by ISNI
- GET /api/musician/{mbid} — Musician profile (the real person: songwriter + performer credits, IPI/ISNI, groups)
- GET /api/artist/{id} — Artist discography (the release artist on DSPs: albums, tracks, ISRCs, streaming links)
- POST /api/batch — Batch lookup up to 100 identifiers per type, with MusicBrainz fallback
- GET /api/suggest?q={query} — Fast autocomplete (<300ms)
- GET /api/lookup?url={url} — Resolve Spotify/Apple Music URLs
- POST /api/contribute — Submit data contributions (requires API key)
- GET /api/coverage — Index coverage metrics and data gap analysis
- POST /api/validate/batch — Validate up to 100 ISRCs against MLC data + optionally cross-reference Spotify/Apple Music
- POST /api/audit/shares — Audit songwriter share percentages (find incomplete/missing/over-allocated shares). CSV export via ?format=csv.
- POST /api/audit/unmatched — Check which ISRCs are matched or unmatched at the MLC. CSV export via ?format=csv.

Workflow:
1. When a user asks about a song or artist, start with: GET /api/search?q={query}
2. Use the identifiers from search results for detailed lookups
3. For songwriter credits, look up the ISRC: GET /api/isrc/{isrc}
4. For work details (all recordings of a composition), look up the ISWC: GET /api/iswc/{iswc}
5. For songwriter/publisher profiles, look up the IPI: GET /api/ipi/{ipi}
6. For Spotify/Apple Music links, use: GET /api/lookup?url={url}
7. If a record is missing data, contribute it: POST /api/contribute
8. To see where data gaps exist: GET /api/coverage

Key concepts:
- Credits ID = deterministic UUIDv5 identifier for every entity. Included in all responses as creditsId.
- ISRC = specific recording (performance). Different for each remix/version.
- ISWC = musical composition (the underlying song). One ISWC can have many ISRCs.
- IPI = songwriter or publisher identifier. Links to their full catalog.
- ISNI = cross-industry creative identity. Links to IPIs.
- UPC = album barcode. Contains multiple ISRCs (one per track).
- Artist = performing entity / release artist on DSPs (e.g., "Queen"). Use /api/artist/{id}.
- Musician = the real person behind the music (e.g., Freddie Mercury). Has songwriter + performer credits. Identified by MusicBrainz MBID. Use /api/musician/{mbid}.

Always present songwriter credits with their roles and share percentages when available. Link to credits.fm detail pages for users to explore further.

Powered by Notes.fm