Music Credits API
Free REST API for songwriter credits, publisher chains, recording metadata, and music identifier lookups. No signup required.
Quick start
# 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
| Tier | Lookup | Search | MCP | Contribute |
|---|---|---|---|---|
| No key (per IP) | 30/min | 10/min | 20/min | Not available |
| Free API key | 300/min | 60/min | 60/min | 10/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:
| Status | Meaning | Example |
|---|---|---|
| 400 | Missing or invalid parameter | {"error": "ISRC is required"} |
| 401 | API key required | {"error": "API key required for contributions"} |
| 404 | Identifier not found | {"error": "ISRC not found"} |
| 429 | Rate limit exceeded | {"error": "Rate limit exceeded", "retryAfter": 42} |
| 503 | Service unavailable | {"error": "Service unavailable"} |
Get an API key
Generate a free API key instantly. No credit card or approval needed.
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.
| Entity | Input | Example creditsId |
|---|---|---|
| Recording | isrc:GBAYE0601498 | 9b033599-8a5e-565a-b6b6-2dafbb91939c |
| Work | iswc:T-070237966-1 | 359586ff-b848-502f-98aa-8d33b7dba9fd |
| Songwriter | ipi:00014107449 | 699e9761-6d67-5175-81a1-2585fd31e581 |
| Contributor | isni:0000000121174866 | c4d5e6f7-a8b9-5012-3456-789abcdef012 |
| Album | upc:602445790098 | e5f6a7b8-c9d0-5123-4567-89abcdef0123 |
| Musician | musician:0383dadf-... | a1b2c3d4-e5f6-5789-abcd-ef0123456789 |
| Artist | artist: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
/api/search?q={query}Unified search across all identifier types. Auto-detects ISRCs, ISWCs, IPIs, ISNIs, UPCs, Spotify/Apple Music URLs, or performs text search. Every result includes a deterministic creditsId (UUIDv5).
| Parameter | Type | Description |
|---|---|---|
| qrequired | string | Song title, artist name, identifier code, or Spotify/Apple Music URL |
| type | string | Force type: isrc, iswc, ipi, isni, upc, musician, all, or auto (default) |
| limit | number | Results per type, 1-25 (default: 10) |
/api/suggest?q={query}Fast autocomplete suggestions. Returns up to 8 results across all identifier types. Optimized for <300ms response time.
| Parameter | Type | Description |
|---|---|---|
| qrequired | string | Query string (minimum 2 characters) |
Identifier Lookups
/api/isrc/{isrc}Look up a recording by ISRC. Returns songwriter credits, publisher chains, share percentages, ISWC, platform links, and a deterministic Credits ID.
| Parameter | Type | Description |
|---|---|---|
| isrcrequired | string | 12-character ISRC code |
/api/iswc/{iswc}Look up a musical work by ISWC. Returns song title, all recordings (ISRCs), and songwriter credits.
| Parameter | Type | Description |
|---|---|---|
| iswcrequired | string | ISWC code (e.g., T-345246800-1) |
/api/ipi/{ipi}Look up a songwriter or publisher by IPI. Returns works, recordings, co-writers, and portfolio stats.
| Parameter | Type | Description |
|---|---|---|
| ipirequired | string | 9-11 digit IPI number |
/api/isni/{isni}Look up a creative contributor by ISNI. Returns name variants, creation roles, and linked IPIs.
| Parameter | Type | Description |
|---|---|---|
| isnirequired | string | 16-digit ISNI code |
People
/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.
| Parameter | Type | Description |
|---|---|---|
| mbidrequired | string | MusicBrainz artist UUID |
/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).
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Artist ID (22-character alphanumeric) |
Resolution
/api/lookup?url={url}Resolve a Spotify or Apple Music URL to identifiers. Supports tracks, albums, playlists, and artist discographies.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Spotify or Apple Music URL (track, album, playlist, or artist) |
/api/resolve/trackResolve 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.
| Parameter | Type | Description |
|---|---|---|
| name | string | Track name (required if no URL provided) |
| artist | string | Artist name |
| spotify_url | string | Spotify track URL |
| apple_music_url | string | Apple Music track URL |
/api/resolve/batchBatch resolve tracks to ISRCs. Accepts up to 50 track name + artist pairs and resolves each to an ISRC with a Credits.fm link.
| Parameter | Type | Description |
|---|---|---|
| tracksrequired | array | Array of {name, artist} objects (max 50) |
Data
/api/batchBatch 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.
| Parameter | Type | Description |
|---|---|---|
| isrcs | string[] | Array of up to 100 ISRC codes |
| iswcs | string[] | Array of up to 100 ISWC codes |
| ipis | string[] | Array of up to 100 IPI numbers |
| isnis | string[] | Array of up to 100 ISNI codes |
| upcs | string[] | Array of up to 100 UPC barcodes |
/api/contributeSubmit data to improve the Credits index. Requires an API key. Contributions are validated and either auto-accepted or queued for review.
| Parameter | Type | Description |
|---|---|---|
| contributionsrequired | array | Array of contribution objects (max 25) |
| .targetrequired | string | Index type: isrc, iswc, ipi, isni, or upc |
| .idrequired | string | The identifier code to contribute to |
| .fieldrequired | string | Field name (e.g., iswc, song_title, songwriters, mlc_song_code) |
| .valuerequired | string | The value to contribute |
| .type | string | fill_null (default), correction, or append |
| .citation | string | Source citation (e.g., "MusicBrainz MBID xyz") |
/api/coverageIndex coverage metrics — row counts and growth data for all Credits index tables. See where data gaps exist and where contributions are most valuable.
Validation & Audit
/api/validate/batchValidate 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.
| Parameter | Type | Description |
|---|---|---|
| isrcsrequired | string[] | Array of up to 100 ISRC codes to validate |
| include_dsp_check | boolean | Cross-reference ISRCs with Spotify and Apple Music (default: false) |
/api/audit/unmatchedCheck 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.
| Parameter | Type | Description |
|---|---|---|
| isrcsrequired | string[] | Array of up to 100 ISRC codes to check |
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
| Target | Fields | Types |
|---|---|---|
| isrc | recording_title, song_title, artist_names, iswc, songwriters, cover_art_url, mlc_song_code | fill_null |
| ipi | full_name, alternative_names, roles | fill_null, append |
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:
Identifier types
| Code | Full name | Identifies | Format |
|---|---|---|---|
| ISRC | International Standard Recording Code | Sound recordings & music videos | GBAYE0601498 |
| ISWC | International Standard Musical Work Code | Musical compositions | T-070237966-1 |
| IPI | Interested Parties Information | Songwriters & publishers | 00014107449 |
| ISNI | International Standard Name Identifier | Creative contributors | 0000000121174866 |
| UPC | Universal Product Code | Album releases | 602445790098 |
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
- Go to ChatGPT → Explore GPTs → Create
- Under “Actions”, click “Create new action”
- Click “Import from URL”
- Paste:
https://credits.fm/openapi.json - 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
- Add an MCP server in Cursor Settings → MCP
- Or add a
.cursor/mcp.jsonto your project with a fetch-based tool pointing tohttps://credits.fm/api/ - Alternatively, paste the system prompt below into your project's
.cursorrulesfile so the agent knows how to call the API viacurl
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:
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