Chordal · InstantClear™ Network
Licensing API Reference
The InstantClear™ Licensing API lets approved platforms launch a synchronization-licensing product over fractionally-owned commercial songs — browse pre-cleared catalogs, build projects, download audio, and report usage back to Chordal.
- Base URL
- https://api.chordal.com
- Version
- v1 (path-prefixed)
- Format
- JSON over HTTPS
- Auth
- Bearer token (JWT)
- Availability
- Tiered — white-label in Enterprise
- Machine-readable
- OpenAPI · Postman
Overview
Chordal's InstantClear™ API enables approved platforms to quickly launch a sync-licensing product backed by fractionally-owned commercial songs. It is offered in multiple tiers depending on how deeply you integrate — from simple music pulls to a fully white-labeled user experience (Enterprise tier).
Core concepts
| Term | Meaning |
|---|---|
| InstantClear template preclearedProgram | A pre-negotiated licensing program (media, territory, term, duration, pricing windows) configured for your company. Tracks are licensed under a template's terms. |
| Project | A working container tied to one InstantClear template. You group tracks and run licensing inside a project. |
| Track | A song available within a project's catalog, with rich musical metadata, audio, and stems. |
| License | A usage confirmation you report back to Chordal for a specific track in a project. |
| Rate type | How a program prices usage: FLAT (a fixed per-use fee) or METERED (variable, reported per accounting period). Set by your Chordal account manager. |
Typical integration flow
| # | Step | Endpoint |
|---|---|---|
| 1 | Discover the InstantClear templates available to you | GET /v1/licensing/preclearedPrograms |
| 2 | Create a project under a template | POST /v1/licensing/projects |
| 3 | Browse the project's tracks | GET /v1/licensing/projects/{id}/tracks |
| 4 | Download audio / stems for production | GET …/{model_type}/{model_id}/download |
| 5 | Report usage back to Chordal | POST …/tracks/{track_id}/licenses |
Authentication
Every endpoint requires authentication. Chordal issues you a signed JSON Web Token (JWT), which the platform verifies on every request. Send it as a Bearer token in the Authorization header.
Authorization: Bearer {YOUR_AUTH_KEY}
Accept: application/json
Content-Type: application/json # on requests with a JSON body
Base URL & versioning
All requests go to a single host, with the version baked into the path. The current and only version is v1.
https://api.chordal.com/v1/licensing/{endpoint}
Pagination & sorting
List endpoints share a common set of query parameters and return a paginated envelope.
| Parameter | Type | Default | Description |
|---|---|---|---|
| order_by | string | id | Field to sort by (varies per endpoint). |
| sort_type | string | asc | asc or desc. |
| page | integer | 1 | Page number. |
| per_page | integer | 15 | Results per page. |
{
"data": [ ... ],
"links": { "first": "…?page=1", "last": "…?page=10", "prev": null, "next": "…?page=2" },
"meta": { "current_page": 1, "from": 1, "last_page": 10, "per_page": 15, "to": 15, "total": 150 }
}
Errors
The API uses conventional HTTP status codes. A successful create/read returns 200; a successful delete returns 204 with an empty body. 4xx means the request was rejected; 5xx indicates a problem on Chordal's side.
| Status | Meaning |
|---|---|
200 | OK — request succeeded. |
204 | No Content — delete succeeded, empty body. |
401 | Unauthorized — missing or invalid token. |
403 | Forbidden — token lacks access to this resource. |
404 | Not found — the project, track or program id does not exist or is not visible to you. |
422 | Unprocessable — payload failed validation (e.g. METERED fields missing, period_ends not after period_starts). |
429 | Too many requests. |
Endpoints
InstantClear templates
Lists all InstantClear templates associated with your company's account.
| Query param | Type | Default | Description |
|---|---|---|---|
| name | string | — | Search by program name. |
| order_by | string | id | One of idnamecreated_at |
| sort_type | string | asc | asc / desc |
| page / per_page | integer | 1 / 15 | Pagination. |
Response 200
{
"data": [
{
"id": 1,
"name": "Program Name",
"description": "A brief description of the program.",
"media": "TV and Streaming",
"territory": "United States",
"term": "1 Year",
"duration": "Up to 0:60",
"subscription_starts_at": "2025-03-21T12:00:00Z",
"subscription_ends_at": "2026-03-21T12:00:00Z",
"usage_starts_at": "2025-03-21T12:00:00Z",
"usage_ends_at": "2026-03-21T12:00:00Z",
"payment_deadline_at": "2026-03-21T12:00:00Z",
"created_at": "2025-03-21T12:00:00Z"
}
],
"links": { "first": "…?page=1", "last": "…?page=10", "prev": null, "next": "…?page=2" },
"meta": { "current_page": 1, "last_page": 10, "per_page": 15, "total": 150 }
}
List projects
Lists the projects associated with an InstantClear template in your company's account.
| Query param | Type | Default | Description |
|---|---|---|---|
| title | string | — | Search by project title. |
| license_status | string | — | One of all-activepending-confirmationpending-paypaid |
| order_by | string | id | One of idtitlecreated_at |
| sort_type | string | asc | asc / desc |
| page / per_page | integer | 1 / 15 | Pagination. |
Response 200
{
"data": [
{
"id": 1,
"title": "Project Title",
"slug": "project-title",
"description": "A brief description of the project.",
"preclearedProgram": { "id": 1, "name": "Program Name" },
"tags": [ { "id": 1, "name": "Tag Name 1" } ],
"image_url": "https://cdn.chordal.com/image.jpg",
"created_at": "2025-03-21T12:00:00Z"
}
],
"links": { "first": "…?page=1", "last": "…?page=10", "prev": null, "next": "…?page=2" },
"meta": { "current_page": 1, "last_page": 10, "per_page": 15, "total": 150 }
}
Create a project
Creates a project under an InstantClear template. Sent as multipart/form-data so you can upload a cover image.
| Field | Type | Description | |
|---|---|---|---|
| title | string | required | The project title. |
| description | string | optional | Project description. |
| precleared_program_id | integer | optional | The InstantClear template this project belongs to. |
| image | file | optional | Cover image upload. |
| image_url | string | optional | Cover image by URL (alternative to image). |
| tags | string[] | optional | Tags to attach (tags[] form fields). |
Example request
POST /v1/licensing/projects
Content-Type: multipart/form-data
title=Euphoria
description=A brief description of the project.
precleared_program_id=1
image_url=https://cdn.chordal.com/image.jpg
tags[]=tag1
image=@cover.jpg
Response 200
{
"data": {
"id": 1,
"title": "Project Title",
"slug": "project-title",
"description": "A brief description of the project.",
"preclearedProgram": { "id": 1, "name": "Program Name" },
"tags": [ { "id": 1, "name": "Tag Name 1" } ],
"image_url": "https://cdn.chordal.com/image.jpg",
"created_at": "2025-03-21T12:00:00Z"
}
}
Delete a project
Deletes a project. Returns 204 No Content on success.
| Path param | Type | Description |
|---|---|---|
| project_id | integer | The id of the project to delete. |
Response 204
// empty body
List project tracks
Lists the tracks available in a project, with full musical metadata. Supports rich search and opt-in/opt-out date filters.
| Param | In | Type | Description |
|---|---|---|---|
| project_id | path | integer | The project id. |
| title | query | string | Search by track title. |
| isrc | query | string | Filter by ISRC. |
| iswc | query | string | Filter by ISWC. |
| opted_in_from / opted_in_to | query | date | Window for when a track opted in. |
| opted_out_from / opted_out_to | query | date | Window for when a track opted out. |
| order_by | query | string | One of idtitlealbum.titleartist.name (default id). |
| sort_type | query | string | asc / desc |
| page / per_page | query | integer | Pagination. |
Response 200 (one track)
{
"id": 1,
"isrc": "USRC17607839",
"iswc": "T-123.456.789-0",
"title": "Track Title",
"year": 2020,
"release_date": "2020-05-20",
"language_code": "en",
"version_type": "original",
"mix_type": "instrumental",
"structure": "has-build",
"key": "C major",
"tempo": 120,
"energy_level": "high",
"emotional_tone": "bright-uplifting",
"recognizability": 750,
"artists": [ { "id": 1, "name": "Artist One" } ],
"albums": [ { "id": 1, "title": "Album One" } ],
"genres": [ { "id": 1, "name": "Pop" } ],
"subgenres": [ { "id": 1, "name": "Indie Pop" } ],
"moods": [ { "id": 1, "name": "Happy" } ],
"instruments": [ { "id": 1, "name": "Guitar" } ],
"creativeKeywords":[ { "id": 1, "name": "Uplifting" } ],
"lyricMoods": [ { "id": 1, "name": "Sad" } ],
"lyricThemes": [ { "id": 1, "name": "Ambition" } ],
"lyrics_summary": "A summary of the lyrics",
"image_url": "https://cdn.chordal.com/image.jpg",
"audio_url": "https://cdn.chordal.com/audio.mp3",
"duration": 180,
"stems": [
{ "id": 101, "title": "Guitar Stem", "instrument": "Guitar", "audio_url": "https://cdn.chordal.com/stems/guitar.mp3", "duration": 180 }
]
}
See the Track & Stem model for the meaning and allowed values of each musical field (version_type, mix_type, energy_level, emotional_tone, etc.).
Download audio
Downloads the audio file for a track or a stem. Returns the binary file.
| Param | In | Type | Description |
|---|---|---|---|
| project_id | path | integer | The project id. |
| model_type | path | string | tracks or stems. |
| model_id | path | integer | The track or stem id to download. |
| track_quality | query | string | Audio quality — hi-res or mp3. |
Example
GET /v1/licensing/projects/1/tracks/10/download?track_quality=hi-res
// → 200 OK, binary audio file
Report a license
Delivers a license / usage confirmation back to Chordal for a track in a project.
total_reported_royalties, period_starts and period_ends (these three are required for METERED programs). Your rate type is configured by your Chordal account manager.| Param | In | Type | Description | |
|---|---|---|---|---|
| project_id | path | integer | required | The project id. |
| track_id | path | integer | required | The track id. |
| brief_title | body | string | optional | Title of the brief. Defaults to "Usage Report DD/MM/YYYY (Period: …)". |
| air_date | body | date | optional | Air date of the license. |
| links | body | string[] | optional | Reference links for the usage. |
| total_reported_royalties | body | integer | METERED | Price in cents (required if rate type is METERED). |
| period_starts | body | date | METERED | Start of the usage period (required if METERED). |
| period_ends | body | date | METERED | End of the usage period; must be after period_starts. |
| external_id | body | string | optional | Your own identifier for the license. |
| metadata | body | object | optional | Arbitrary additional metadata. |
Example request
POST /v1/licensing/projects/1/tracks/10/licenses
{
"brief_title": "Upbeat, emotional electronic tracks",
"air_date": "2024-09-25",
"links": [ "https://www.youtube.com/watch?v=dQw4w9WgXc" ],
"total_reported_royalties": 1000,
"period_starts": "2024-10-01",
"period_ends": "2024-12-31",
"external_id": "EXT-12345",
"metadata": { "key": "value" }
}
Response 200
{
"data": {
"id": "SYNCHID-1.1",
"total_reported_royalties": 1000,
"external_id": "EXT-12345",
"period_starts": "2024-10-01",
"period_ends": "2024-12-31",
"air_date": "2024-09-25",
"links": [ { "id": 1, "url": "https://www.youtube.com/watch?v=dQw4w9WgXc" } ],
"metadata": { "key": "value" },
"created_at": "2024-09-25T12:34:56Z"
}
}
Data models
PreclearedProgram (InstantClear template)
| Field | Type | Description |
|---|---|---|
| id | integer | Program id. |
| name / description | string | Program name and description. |
| media | string | Permitted media, e.g. "TV and Streaming". |
| territory | string | Licensed territory, e.g. "United States". |
| term | string | License term, e.g. "1 Year". |
| duration | string | Max use duration, e.g. "Up to 0:60". |
| subscription_starts_at / subscription_ends_at | datetime | Subscription window. |
| usage_starts_at / usage_ends_at | datetime | Permitted usage window. |
| payment_deadline_at | datetime | When payment is due. |
| created_at | datetime | Creation timestamp. |
Project
| Field | Type | Description |
|---|---|---|
| id | integer | Project id. |
| title / slug | string | Title and URL-friendly slug. |
| description | string | Project description. |
| preclearedProgram | object | The linked template: { id, name }. |
| tags | object[] | Tags: { id, name }. |
| image_url | string | Cover image URL. |
| created_at | datetime | Creation timestamp. |
Track & Stem
| Field | Type | Description / allowed values |
|---|---|---|
| id | integer | Track id. |
| isrc / iswc | string | Recording / work identifiers. |
| title | string | Track title. |
| year | integer | Release year. |
| release_date | date | Release date. |
| language_code | string | ISO language code, e.g. en. |
| version_type | string | originalcoverremix |
| mix_type | string | mixedinstrumentalacapellacleanradio |
| structure | string | has-buildconsistent |
| key | string | Musical key, e.g. C major, C minor. |
| tempo | integer | Beats per minute. |
| energy_level | string | highmediumlowvariable |
| emotional_tone | string | bright-upliftingbright-focusedbright-emotionaldark-emotionaldark-focuseddark-disturbing |
| recognizability | integer | Score from 0 to 1000. |
| artists / albums | object[] | { id, name } / { id, title }. |
| genres / subgenres / moods / instruments / creativeKeywords / lyricMoods / lyricThemes | object[] | Tag collections, each { id, name }. |
| lyrics_summary | string | Short summary of the lyrics. |
| image_url / audio_url | string | Artwork and audio URLs. |
| duration | integer | Length in seconds. |
| stems | object[] | Per-instrument stems (see below). |
Stem
| Field | Type | Description |
|---|---|---|
| id | integer | Stem id (used as model_id for download). |
| title | string | Stem name, e.g. "Guitar Stem". |
| instrument | string | Instrument, e.g. "Guitar". |
| audio_url | string | Stem audio URL. |
| duration | integer | Length in seconds. |
License
| Field | Type | Description |
|---|---|---|
| id | string | Chordal sync id, e.g. SYNCHID-1.1. |
| total_reported_royalties | integer | Reported amount, in cents. |
| external_id | string | Your identifier echoed back. |
| period_starts / period_ends | date | Usage period. |
| air_date | date | Air date. |
| links | object[] | Reference links: { id, url }. |
| metadata | object | Echoed metadata. |
| created_at | datetime | Creation timestamp. |
Notes & open questions
While rewriting these docs, a few things in the auto-generated source were unclear, inconsistent or missing. They've been cleaned up here where safe; the items below are worth confirming on the backend.
| Topic | What to confirm / fixed |
|---|---|
| Error responses | Source documents only 200/204. The error model here (codes + 422 validation) is the conventional shape implied by the stack — confirm exact codes and body. |
| Malformed paths | Source heading read projects/{project_id/tracks/{track_id}/licenses (missing brace) — corrected to projects/{project_id}/tracks/{track_id}/licenses. |
| Tracks example was invalid JSON | The source response used pseudo-union values ("original" | "cover" | "remix"), a stray extra } and a trailing comma. Captured here as enums on the Track model. |
| DELETE params | Source listed both project_id and a second id ("voluptate") — it is a single integer path param. |
| POST projects field | Source marked title as "required optional" with a copy-pasted "to search" description — treated as a required project title. |
| Download uses GET + body | The download endpoint documented a request body (track_quality) duplicated as a query param. Use the query param. |
| Date examples | Several date examples had leading spaces (" 2024-10-01") — trimmed here. |
| Rate types | FLAT / METERED behavior and which fields each requires should be confirmed against your program configuration. |