Suno tekst naar muziek
Gebruik het eindpunt voor tekst naar muziek om een asynchrone taak aan te maken.
Overzicht
Gebruik het eindpunt voor tekst naar muziek met een ondersteund model. Gebruik de geretourneerde taak-ID om de status op te halen, of geef callback_url op voor de hieronder gedocumenteerde leveringen.
Snelstart
- Maak een API-sleutel aan en stel deze in als RUNAPI_API_KEY.
- Kies een ondersteund model en stuur een POST-verzoek waarvan de body overeenkomt met het schema van dat model.
- Sla de geretourneerde taak-ID op en poll vervolgens totdat een eindstatus is bereikt, of verwerk de hieronder gedocumenteerde callbacks.
Eindpunt
- Basis-URL
https://runapi.ai- API-versie
v1- Authenticatie
Authorization: Bearer YOUR_API_TOKEN
Ondersteunde modellen
Open een modelpagina voor actuele prijzen, snelheidslimieten en details over commercieel gebruik.
Verzoekschema
Velden en toegestane waarden zijn afhankelijk van het geselecteerde model. Indien opgegeven, ontvangt callback_url de hieronder gedocumenteerde taakaflevering.
suno-v415 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
suno-v4.515 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
suno-v4.5-all15 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
suno-v4.5-plus15 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
suno-v515 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
suno-v5.516 velden
audio_weightnumberAudiogewicht (0-1).
Bereik:0 - 1
callback_urlstringWebhook-URL voor asynchrone meldingen.
continue_atnumberTijdstempel in seconden om vanaf verder te gaan.
duration_secondsintegerGewenste duur in seconden; alleen beschikbaar voor aangepaste Suno V5.5-aanvragen.
Bereik:10 - 360
lyricsstringExacte songteksten om te zingen.
Grens:5000
modelstringModel-slug.
negative_tagsstringTe vermijden stijlen.
persona_idstringPersona-ID.
persona_typestringType persona.
Toegestane waarden:style, voice
promptstringSongomschrijving voor automatische songteksten.
Grens:5000
stylestringMuziekstijl.
Grens:1000
style_weightnumberGewicht voor stijlnaleving (0-1).
Bereik:0 - 1
titlestringMuziekitel.
Grens:80
vocal_genderstringVocaal geslacht.
Toegestane waarden:male, female
vocal_modestringVocale generatiemodus.
Toegestane waarden:auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumberVreemdheidsbeperking (0-1).
Bereik:0 - 1
Voorwaardelijke regels
Deze vereisten zijn van toepassing wanneer alle vermelde voorwaarden overeenkomen.
-
Wanneer
vocal_mode = auto_lyrics- Vereist
prompt- Niet geaccepteerd
lyrics,style,title,negative_tags,vocal_gender,duration_seconds
-
Wanneer
vocal_mode = exact_lyrics- Vereist
lyrics,style,title- Niet geaccepteerd
prompt
-
Wanneer
vocal_mode = instrumental- Vereist
style,title- Niet geaccepteerd
prompt,lyrics,vocal_gender
-
Wanneer
model = suno-v4- Vereist
- Niet geaccepteerd
duration_seconds
-
Wanneer
model = suno-v4.5- Vereist
- Niet geaccepteerd
duration_seconds
-
Wanneer
model = suno-v4.5-all- Vereist
- Niet geaccepteerd
duration_seconds
-
Wanneer
model = suno-v4.5-plus- Vereist
- Niet geaccepteerd
duration_seconds
-
Wanneer
model = suno-v5- Vereist
- Niet geaccepteerd
duration_seconds
Acceptatie aanmaken
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
},
"task_replayed": {
"type": "boolean"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Pollen bezig
GET /api/v1/suno/text_to_music/:id
Responsschema
{
"properties": {
"audios": {
"items": {
"properties": {
"audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"duration": {
"type": "number"
},
"id": {
"type": "string"
},
"image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"lyrics": {
"type": "string"
},
"model_name": {
"type": "string"
},
"stream_audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"generation_stage": {
"enum": [
"text_generated",
"first_audio_ready"
],
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"generation_stage": "text_generated",
"id": "tsk_reference_demo",
"status": "processing"
}
Pollen voltooid
GET /api/v1/suno/text_to_music/:id
Responsschema
{
"properties": {
"audios": {
"items": {
"properties": {
"audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"duration": {
"type": "number"
},
"id": {
"type": "string"
},
"image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"lyrics": {
"type": "string"
},
"model_name": {
"type": "string"
},
"stream_audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"generation_stage": {
"enum": [
"text_generated",
"first_audio_ready",
"all_audios_ready",
"failed"
],
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"completed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"audios",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"audios": [
{
"audio_url": "https://file.runapi.ai/reference-audio.mp3",
"id": "audio_reference"
}
],
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed"
}
Pollen mislukt
GET /api/v1/suno/text_to_music/:id
Responsschema
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"error": {
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": "Task processing failed.",
"id": "tsk_reference_demo",
"status": "failed"
}
Callback van klant: wordt verwerkt
POST callback_url
Responsschema
{
"properties": {
"audios": {
"items": {
"properties": {
"audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"duration": {
"type": "number"
},
"id": {
"type": "string"
},
"image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"lyrics": {
"type": "string"
},
"model_name": {
"type": "string"
},
"stream_audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"generation_stage": {
"enum": [
"text_generated",
"first_audio_ready"
],
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
}
},
"required": [
"id",
"status"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"generation_stage": "text_generated",
"id": "tsk_reference_demo",
"status": "processing"
}
Callback van klant: voltooid
POST callback_url
Responsschema
{
"properties": {
"audios": {
"items": {
"properties": {
"audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"duration": {
"type": "number"
},
"id": {
"type": "string"
},
"image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"lyrics": {
"type": "string"
},
"model_name": {
"type": "string"
},
"stream_audio_url": {
"type": "string",
"x-runapi-generated-media": true
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"generation_stage": {
"enum": [
"text_generated",
"first_audio_ready",
"all_audios_ready",
"failed"
],
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"completed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"audios"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"audios": [
{
"audio_url": "https://file.runapi.ai/reference-audio.mp3",
"id": "audio_reference"
}
],
"id": "tsk_reference_demo",
"status": "completed"
}
Callback van klant: mislukt
POST callback_url
Responsschema
{
"properties": {
"error": {
"oneOf": [
{
"type": "string"
},
{
"properties": {
"code": {
"type": "string"
},
"limit_cents": {
"type": "integer"
},
"message": {
"type": "string"
},
"reset_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"used_cents": {
"type": "integer"
},
"window": {
"enum": [
"1h",
"1d",
"7d",
"daily",
"weekly",
"monthly",
"lifetime"
],
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object",
"unevaluatedProperties": false
}
]
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": {
"code": "generation_failed",
"message": "Task processing failed."
},
"id": "tsk_reference_demo",
"status": "failed"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Authentication required"
}
Fouten
GET /api/v1/suno/text_to_music/:id
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Authentication required"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"oneOf": [
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
},
{
"properties": {
"error": {
"description": "Leesbare validatiesamenvatting.",
"type": "string"
},
"errors": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Validatieberichten gekoppeld aan het openbare aanvraagveld, met een reeks leesbare tekenreeksen per veld.",
"type": "object"
}
},
"required": [
"error",
"errors"
],
"type": "object",
"unevaluatedProperties": false
}
]
}
Responsvoorbeeld
{
"error": "Validation failed",
"errors": {
"prompt": [
"is required"
]
}
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Insufficient balance"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "API key credit limit exceeded"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "The request uses features that are not supported for the selected model"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Rate limit reached. Please retry later."
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Service under maintenance, please try again later"
}
Fouten
POST /api/v1/suno/text_to_music
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "The request timed out"
}
Fouten
GET /api/v1/suno/text_to_music/:id
Responsschema
{
"properties": {
"error": {
"description": "Leesbare foutmelding.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Responsvoorbeeld
{
"error": "Task with id 'tsk_reference_demo' not found"
}
Gegenereerde codevoorbeelden
Gebruik cURL rechtstreeks, of installeer een SDK voor uw taal. Elk voorbeeld dient het gevalideerde verzoek in dat in deze referentie wordt getoond.
Installeren
pip install runapi-suno
import os
from runapi.suno import SunoClient
client = SunoClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.text_to_music.create(
model="suno-v5",
vocal_mode="auto_lyrics",
prompt="An uplifting acoustic pop song about a rainy city night.",
persona_id="persona_reference",
persona_type="style"
)