Music commercial licensing certificate API

Updated 2026-09-18 · Suno-API team

Endpoint description

The music commercial licensing certificate endpoints let you list the songs the current API key's user can license, generate a PDF certificate, query certificate history and download issued files.

All endpoints use the New API Key uniformly:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Base address:

https://www.suno-api.io

Prerequisites

0. Licensing eligibility and identity

Before issuing a certificate you need to check eligibility and bind the identity. Both endpoints are free.

0.1 Check licensing eligibility and identity status

Endpoint: GET /api/music/authorization/context

{
  "code": 200,
  "message": "success",
  "data": {
    "identity": {
      "exists": false
    },
    "eligibility": {
      "current_amount": 216.3,
      "personal_required_amount": 200,
      "company_required_amount": 500,
      "personal_eligible": true,
      "company_eligible": false
    },
    "stats": {
      "authorized_song_count": 0,
      "certificate_count": 0
    }
  }
}
Field Type Notes
identity.exists boolean Whether the licensing identity is already bound; when true, masked identity information is returned
eligibility.current_amount number Current cumulative top-up amount (yuan)
eligibility.personal_required_amount number Cumulative top-up threshold required for individual licensing
eligibility.company_required_amount number Cumulative top-up threshold required for company licensing
eligibility.personal_eligible / company_eligible boolean Whether the corresponding eligibility is currently met
stats.authorized_song_count / certificate_count number Number of licensed songs and number of issued certificates

0.2 Bind the licensing identity

Endpoint: POST /api/music/authorization/identity

{
  "identity_type": "personal",
  "legal_name": "John Smith",
  "id_number": "110101199001010000",
  "contact_name": "John Smith",
  "phone": "13800000000",
  "email": "user@example.com",
  "address": "Chaoyang District, Beijing",
  "confirm_locked": true
}
Parameter Type Required Notes
identity_type string yes personal or company
legal_name string yes Individual name
id_number string yes Individual ID number (stored encrypted on the server; ordinary endpoints return the masked result only)
company_name string required for companies Company name
credit_code string required for companies Unified social credit code
contact_name string yes Contact person
phone string yes Contact phone
email string yes Contact email
address string no Contact address
confirm_locked boolean yes Confirms that the identity information is locked; passing true means accepting that it cannot be changed by yourself after binding

The response returns the masked identity information: {"identity": {...}}. After a successful binding, confirm with the context endpoint that identity.exists has become true, then call the song list and issuing endpoints. If the identity information needs to be changed, contact customer service.

1. List licensable songs

Endpoint: GET /api/music/authorization/songs

Query parameters

Parameter Type Required Default Notes
p number no 1 Page number
page_size number no system default Items per page, maximum 100
q string no - Search by title, prompt or exact Suno Song ID
status string no all all, selectable, authorized or unavailable

Request example

curl "https://www.suno-api.io/api/music/authorization/songs?p=1&page_size=20&status=selectable" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response example

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 1,
    "items": [
      {
        "task_id": 10001,
        "suno_song_id": "suno-song-id-1",
        "title": "Example song",
        "generation_type": "generate",
        "completed_at": 1784000000,
        "created_at": 1783999000,
        "audio_url": "https://example.com/audio.mp3",
        "model_name": "suno-v6",
        "authorization": {
          "selectable": true
        }
      }
    ]
  }
}

When authorization.selectable=false, the response explains the reason through reason_code and reason. Songs that already have a certificate also return certificate_id and certificate_no.

2. Generate a certificate

Endpoint: POST /api/music/authorization/certificates

Body parameters

Parameter Type Required Notes
song_ids string[] yes List of real Suno Song IDs to license
confirm_risk_terms boolean yes Must be true, confirming the licensing scope and risk terms

Request example

curl -X POST https://www.suno-api.io/api/music/authorization/certificates \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "song_ids": ["suno-song-id-1", "suno-song-id-2"],
    "confirm_risk_terms": true
  }'

Response example

{
  "success": true,
  "message": "",
  "data": {
    "certificate": {
      "id": 101,
      "certificate_no": "CERTIFICATE-NO",
      "verification_code": "VERIFY-CODE",
      "status": "issued",
      "song_count": 2,
      "identity_type_snapshot": "personal",
      "licensee_name_masked": "J*",
      "document_no_masked_snapshot": "11**************34",
      "phone_masked_snapshot": "138****0000",
      "pdf_sha256": "PDF_SHA256",
      "issued_at": 1784000100,
      "created_at": 1784000000,
      "updated_at": 1784000100,
      "download_url": "/api/music/authorization/certificates/101/download",
      "songs": []
    }
  }
}

In a successful response status is issued. If PDF rendering fails, the certificate is marked failed and the related songs can still be submitted again once the problem is fixed.

3. Query certificate history

Endpoint: GET /api/music/authorization/certificates

Query parameters

Parameter Type Required Default Notes
p number no 1 Page number
page_size number no system default Items per page, maximum 100
q string no - Search by certificate number or masked licensee name

Request example

curl "https://www.suno-api.io/api/music/authorization/certificates?p=1&page_size=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response structure

The response data is a paginated object containing page, page_size, total and items. Each entry in items is a certificate summary and includes that certificate's song snapshot.

4. Get certificate details

Endpoint: GET /api/music/authorization/certificates/:id

The path parameter id is the certificate's numeric ID. The endpoint only allows access to certificates belonging to the current API key's user.

Request example

curl https://www.suno-api.io/api/music/authorization/certificates/101 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response structure

On success it returns data.certificate, whose fields include the certificate number, status, masked licensee information, issue time, PDF checksum, download address and the licensed song snapshot.

5. Download the certificate PDF

Endpoint: GET /api/music/authorization/certificates/:id/download

Only certificates whose status is issued can be downloaded. The download request still needs a valid API key, and you can only download your own certificates.

Request example

curl https://www.suno-api.io/api/music/authorization/certificates/101/download \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --output authorization-certificate.pdf

A successful response is an application/pdf file stream; the file name follows the backend Content-Disposition.

Common failure reasons

Scenario Suggested handling
The API key is invalid or missing Check the Authorization: Bearer YOUR_API_KEY header
The licensing identity is not bound yet Complete identity binding on the certificate page in Create UI first
Cumulative top-up eligibility is not met Retry once the individual or company requirement is reached
The risk terms were not confirmed Set confirm_risk_terms to true
The song cannot be licensed Look at reason_code and reason returned by the song list
The song already has a certificate Use the returned certificate_id to query the existing certificate
The PDF cannot be generated for now Retry later; a failed record does not consume the song's licensing eligibility

Notes

Get an API key

Create an API key in the console after signing up. ¥0.6 per run returns 2 tracks, downloads are unlimited, and no phone number is required.

Get API key Back to overview