clipIdsquery · RequiredQuery multiple clips
/api/v1/suno/clipsAuthentication · x-api-key
Free direct batch read with the same per-clip access projection as the detail endpoint. Preserves request order, reports definitively absent IDs in missingClipIds, and reserves errors for transient per-ID read failures. No Task is created and no credits are charged.
Request
Responses
200 OK
application/json
Unknown fields are not accepted.
-
Response 200 ·
errorsRequiredarray<object>1 field
-
Response 200 ·
errors[]Each itemobjectUnknown fields are not accepted.
4 fields
-
Response 200 ·
errors[].clipIdRequiredstring -
Response 200 ·
errors[].codeRequiredstring -
Response 200 ·
errors[].messageRequiredstring -
Response 200 ·
errors[].retryableRequiredboolean
-
-
-
Response 200 ·
itemsRequiredarray<object>1 field
-
Response 200 ·
items[]Each itemobjectUnknown fields are not accepted.
23 fields
-
Response 200 ·
items[].accessLevelRequired"owned" | "shared" | "external"Read projection only. owned returns the full public Clip contract; shared is public or remixable; external is merely readable by clipId. This value does not grant derive or export permission.
-
Response 200 ·
items[].audioUrlRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].audioUrl · anyOf 1Alternativestring -
Response 200 ·
items[].audioUrl · anyOf 2Alternativenull
-
-
Response 200 ·
items[].clipIdRequiredstringSuno clip identifier (`mid`); do not substitute an OmnAPI resource identifier.
-
Response 200 ·
items[].createdAtRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].createdAt · anyOf 1AlternativestringFormat: date-time.
-
Response 200 ·
items[].createdAt · anyOf 2Alternativenull
-
-
Response 200 ·
items[].deliveryStatusRequired"submitted" | "queued" | "streaming" | "complete" | "error" -
Response 200 ·
items[].durationRequirednumber | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].duration · anyOf 1AlternativenumberClip duration in seconds. Missing eventually-consistent metadata is repaired on later reads.
Minimum: 0.
-
Response 200 ·
items[].duration · anyOf 2Alternativenull
-
-
Response 200 ·
items[].errorCodeRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].errorCode · anyOf 1Alternativestring -
Response 200 ·
items[].errorCode · anyOf 2Alternativenull
-
-
Response 200 ·
items[].errorMessageRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].errorMessage · anyOf 1Alternativestring -
Response 200 ·
items[].errorMessage · anyOf 2Alternativenull
-
-
Response 200 ·
items[].imageUrlRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].imageUrl · anyOf 1Alternativestring -
Response 200 ·
items[].imageUrl · anyOf 2Alternativenull
-
-
Response 200 ·
items[].indexRequirednumberMinimum: 0.
-
Response 200 ·
items[].instrumentalRequiredboolean | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].instrumental · anyOf 1Alternativeboolean -
Response 200 ·
items[].instrumental · anyOf 2Alternativenull
-
-
Response 200 ·
items[].majorModelVersionRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].majorModelVersion · anyOf 1AlternativestringExact Suno major_model_version value reported for this clip, for example v4.5-all.
-
Response 200 ·
items[].majorModelVersion · anyOf 2Alternativenull
-
-
Response 200 ·
items[].modelRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].model · anyOf 1AlternativestringCompatibility model label. Prefer modelCode, providerModelName and majorModelVersion for unambiguous integrations.
-
Response 200 ·
items[].model · anyOf 2Alternativenull
-
-
Response 200 ·
items[].modelCodeRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].modelCode · anyOf 1AlternativestringCanonical OmnAPI model code selected for an owned generation. Null when a clip is read directly from Suno without a local task.
-
Response 200 ·
items[].modelCode · anyOf 2Alternativenull
-
-
Response 200 ·
items[].playableRequiredboolean -
Response 200 ·
items[].playbackRequiredobjectUnknown fields are not accepted.
8 fields
-
Response 200 ·
items[].playback.deliveryRequired"none" | "chunked" | "progressive" -
Response 200 ·
items[].playback.expiresAtRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].playback.expiresAt · anyOf 1AlternativestringFormat: date-time.
1 field
-
Response 200 ·
items[].playback.expiresAt · anyOf 1See schemastringExpand this value in the interactive reference.
Format: date-time.
-
-
Response 200 ·
items[].playback.expiresAt · anyOf 2Alternativenull1 field
-
Response 200 ·
items[].playback.expiresAt · anyOf 2See schemanullExpand this value in the interactive reference.
-
-
-
Response 200 ·
items[].playback.mimeTypeRequired"audio/mpeg" | "audio/mp4" | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].playback.mimeType · anyOf 1Alternative"audio/mpeg" | "audio/mp4"Must match at least one alternative.
1 field
-
Response 200 ·
items[].playback.mimeType · anyOf 1See schema"audio/mpeg" | "audio/mp4"Expand this value in the interactive reference.
Must match at least one alternative.
-
-
Response 200 ·
items[].playback.mimeType · anyOf 2Alternativenull1 field
-
Response 200 ·
items[].playback.mimeType · anyOf 2See schemanullExpand this value in the interactive reference.
-
-
-
Response 200 ·
items[].playback.retryAfterMsRequirednumber | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].playback.retryAfterMs · anyOf 1AlternativenumberMinimum: 0.
1 field
-
Response 200 ·
items[].playback.retryAfterMs · anyOf 1See schemanumberExpand this value in the interactive reference.
Minimum: 0.
-
-
Response 200 ·
items[].playback.retryAfterMs · anyOf 2Alternativenull1 field
-
Response 200 ·
items[].playback.retryAfterMs · anyOf 2See schemanullExpand this value in the interactive reference.
-
-
-
Response 200 ·
items[].playback.seekableRequiredboolean -
Response 200 ·
items[].playback.sessionCreateUrlRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].playback.sessionCreateUrl · anyOf 1AlternativestringDeprecated compatibility field. New integrations should use playback.url directly; no separate playback-session request is needed.
Deprecated; omit in new integrations.
1 field
-
Response 200 ·
items[].playback.sessionCreateUrl · anyOf 1See schemastringExpand this value in the interactive reference.
Deprecated; omit in new integrations.
-
-
Response 200 ·
items[].playback.sessionCreateUrl · anyOf 2Alternativenull1 field
-
Response 200 ·
items[].playback.sessionCreateUrl · anyOf 2See schemanullExpand this value in the interactive reference.
-
-
-
Response 200 ·
items[].playback.stateRequired"preparing" | "live" | "final" | "error" | "unavailable" -
Response 200 ·
items[].playback.urlRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].playback.url · anyOf 1AlternativestringCurrent playback URL. Live Generation reads provide a temporary URL; final reads provide the completed audio URL. Resolve relative URLs against the API base URL and open them without an API key. A null value means to wait and query the Generation again. Treat the complete URL as private and do not construct or modify it.
1 field
-
Response 200 ·
items[].playback.url · anyOf 1See schemastringExpand this value in the interactive reference.
-
-
Response 200 ·
items[].playback.url · anyOf 2Alternativenull1 field
-
Response 200 ·
items[].playback.url · anyOf 2See schemanullExpand this value in the interactive reference.
-
-
-
-
Response 200 ·
items[].promptRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].prompt · anyOf 1AlternativestringGeneration prompt for owned clips only. Shared and external clips always return null.
-
Response 200 ·
items[].prompt · anyOf 2Alternativenull
-
-
Response 200 ·
items[].providerModelNameRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].providerModelName · anyOf 1AlternativestringExact Suno model_name value reported for this clip, for example chirp-hawk.
-
Response 200 ·
items[].providerModelName · anyOf 2Alternativenull
-
-
Response 200 ·
items[].roleRequired"candidate" | "final" -
Response 200 ·
items[].titleRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].title · anyOf 1Alternativestring -
Response 200 ·
items[].title · anyOf 2Alternativenull
-
-
Response 200 ·
items[].updatedAtRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].updatedAt · anyOf 1AlternativestringFormat: date-time.
-
Response 200 ·
items[].updatedAt · anyOf 2Alternativenull
-
-
Response 200 ·
items[].videoUrlRequiredstring | nullMay be null. Must match at least one alternative.
2 fields / alternatives
-
Response 200 ·
items[].videoUrl · anyOf 1Alternativestring -
Response 200 ·
items[].videoUrl · anyOf 2Alternativenull
-
-
-
-
Response 200 ·
missingClipIdsRequiredarray<string>1 field
-
Response 200 ·
missingClipIds[]Each itemstring
-
400 Bad Request
application/json
-
Response 400 ·
errorRequiredobject3 fields
-
Response 400 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 400 ·
error.messageRequiredstringHuman readable error message
-
Response 400 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 400 ·
successRequiredfalseAlways false for error responses
401 Unauthorized
application/json
-
Response 401 ·
errorRequiredobject3 fields
-
Response 401 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 401 ·
error.messageRequiredstringHuman readable error message
-
Response 401 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 401 ·
successRequiredfalseAlways false for error responses
403 Forbidden
Forbidden: the API key lacks the required scope or its IP policy rejects this request.
application/json
-
Response 403 ·
errorRequiredobject3 fields
-
Response 403 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 403 ·
error.messageRequiredstringHuman readable error message
-
Response 403 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 403 ·
successRequiredfalseAlways false for error responses
429 Too Many Requests
Request allowance or task admission capacity exceeded. Follow Retry-After when present; otherwise wait for active tasks and use bounded backoff. Limits do not guarantee throughput. For SSE, this is the HTTP connection response, not an event.
application/json
-
Response 429 ·
errorRequiredobject3 fields
-
Response 429 ·
error.codeRequiredstringRATE_LIMITED for request and task admission rejections.
-
Response 429 ·
error.messageRequiredstring -
Response 429 ·
error.detailsOptionalobjectOptional and scope-dependent. Request limits supply scope/policy/type/limit/current/retryAfterSec. Task admission supplies inFlight/limit/tier, plus scope=apiKey for a key cap. IP rejection can omit details. In-flight rejection does not promise Retry-After.
8 fields
-
Response 429 ·
error.details.currentOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.inFlightOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.limitOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.policyOptional"operation" | "query" -
Response 429 ·
error.details.retryAfterSecOptionalintegerMinimum: 1.
-
Response 429 ·
error.details.scopeOptional"user" | "api-key" | "ip" | "apiKey" -
Response 429 ·
error.details.tierOptional"FREE" | "PREMIUM" | "ENTERPRISE" -
Response 429 ·
error.details.typeOptional"rps" | "daily" | "monthly"
-
-
-
Response 429 ·
successRequiredfalseDefault: false.
500 Internal Server Error
application/json
-
Response 500 ·
errorRequiredobject3 fields
-
Response 500 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 500 ·
error.messageRequiredstringHuman readable error message
-
Response 500 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 500 ·
successRequiredfalseAlways false for error responses
503 Service Unavailable
application/json
-
Response 503 ·
errorRequiredobject3 fields
-
Response 503 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 503 ·
error.messageRequiredstringHuman readable error message
-
Response 503 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 503 ·
successRequiredfalseAlways false for error responses