
Suno API Key: crea tu clave y envía la primera solicitud
Obtén una Suno API key para reAPI, configura Bearer, envía una solicitud en cuatro lenguajes, consulta el audio y resuelve errores de clave, saldo o tarea.
Para obtener una Suno API key para la vía de reAPI, inicia sesión en reAPI, abre API Keys y crea una clave. Envíala como Authorization: Bearer <key> a https://reapi.ai/api/v1. Es una credencial de reAPI para sus endpoints, no una clave de desarrollador emitida por Suno.[1]
A 14 de septiembre de 2026, el material oficial de Suno comprobado para esta serie remite a una solicitud de interés para socios, en lugar de un proceso público documentado de autoservicio para obtener claves. El artículo sobre el estado de la API oficial explica la diferencia. Esta guía sigue el flujo de reAPI desde la creación hasta la primera solicitud y un resultado de audio completado.[2]
Puntos clave
- Crea la clave en los ajustes de API Keys de reAPI y guárdala al mostrarse: la documentación de autenticación dice que solo se muestra completa una vez.[1]
- Envía la cabecera Bearer desde tu servidor. El inicio de sesión o la suscripción de Suno no equivalen a esta credencial.
- Envía
model: "suno-music"conversion: "V6"al endpoint de generación de audio.[3] - Guarda el
iddevuelto y consulta la tarea. HTTP 200 por sí solo no significa que la música se haya completado correctamente.[4] - Una solicitud de canción completada cuesta 60 créditos, 0,06 USD, e incluye dos tomas. Las consultas son gratuitas; revisa el saldo antes de enviar.[3]
Crear una Suno API key para usar reAPI
Necesitas una cuenta de reAPI, acceso a sus ajustes de API Keys y créditos suficientes para la operación elegida. Usa una terminal, Python con requests, un entorno Node.js con fetch integrado o Go. Elige un ejemplo: ejecutar los cuatro crea cuatro solicitudes de generación.
- Inicia sesión y abre los ajustes de API Keys.
- Pulsa CREATE API KEY, la etiqueta observada en la página actual. La guía de autenticación la llama «Create new key».
- Asigna un nombre reconocible, como
music-development. - Copia la clave cuando aparezca y guárdala en el gestor de secretos del servidor o en un archivo de entorno local excluido del control de versiones.[1]
Configura REAPI_API_KEY en el entorno del proceso que ejecuta el ejemplo. Es nuestro nombre de variable, no un campo obligatorio de la API. No pegues una clave real en el código, un paquete de navegador, un repositorio, una URL ni un mensaje de soporte. El prefijo de producción documentado es rk_live_. rk_test_, con respuestas simuladas, sigue marcado como «coming soon» y no es una vía de prueba gratuita disponible en esta guía.[1]
Enviar la primera solicitud de canción autenticada
Los cuatro ejemplos envían la misma solicitud en modo inspiración. custom_mode: false hace que prompt sea una descripción de la canción; instrumental: false solicita voz. La operación va en model y la versión de generación en version. Usa los nombres actuales en snake_case.[3]
Los 30 segundos son un tiempo de espera de red, no un plazo de finalización de la canción. La generación continúa de forma asíncrona tras el envío. Cada ejemplo comprueba los errores HTTP e imprime el ID de tarea. Son alternativas para enviar; después debes consultar el resultado.
cURL
Esta versión también usa jq para extraer id. La variable de entorno ya debe contener tu clave.
: "${REAPI_API_KEY:?Set REAPI_API_KEY in your environment}"
curl --fail-with-body --silent --show-error --max-time 30 \
https://reapi.ai/api/v1/audio/generations \
-H "Authorization: Bearer $REAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-music",
"version": "V6",
"custom_mode": false,
"instrumental": false,
"prompt": "An upbeat acoustic song about taking the first train home"
}' > suno-submit.json && jq -er '.id' suno-submit.jsonPython
Instala requests si hace falta. Guarda y ejecuta el código en el servidor o en la terminal local.
import os
import requests
response = requests.post(
"https://reapi.ai/api/v1/audio/generations",
headers={"Authorization": f"Bearer {os.environ['REAPI_API_KEY']}"},
json={
"model": "suno-music",
"version": "V6",
"custom_mode": False,
"instrumental": False,
"prompt": "An upbeat acoustic song about taking the first train home",
},
timeout=30,
)
response.raise_for_status()
print(response.json()["id"])Node.js
Guárdalo como submit.mjs y ejecuta node submit.mjs con la variable de entorno configurada.
const key = process.env.REAPI_API_KEY;
if (!key) throw new Error("Set REAPI_API_KEY in your environment");
const response = await fetch("https://reapi.ai/api/v1/audio/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${key}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "suno-music",
version: "V6",
custom_mode: false,
instrumental: false,
prompt: "An upbeat acoustic song about taking the first train home",
}),
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const task = await response.json();
if (!task.id) throw new Error("Submission response has no task id");
console.log(task.id);Go
Guárdalo como main.go y ejecuta go run main.go. Solo utiliza la biblioteca estándar.
package main
import (
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
"strings"
"time"
)
func main() {
if err := submit(); err != nil {
log.Fatal(err)
}
}
func submit() error {
key := os.Getenv("REAPI_API_KEY")
if key == "" {
return fmt.Errorf("set REAPI_API_KEY in your environment")
}
payload := `{"model":"suno-music","version":"V6","custom_mode":false,"instrumental":false,"prompt":"An upbeat acoustic song about taking the first train home"}`
req, err := http.NewRequest("POST",
"https://reapi.ai/api/v1/audio/generations", strings.NewReader(payload))
if err != nil {
return err
}
req.Header.Set("Authorization", "Bearer "+key)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return err
}
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return fmt.Errorf("HTTP %d: %s", resp.StatusCode, body)
}
var task struct { ID string `json:"id"` }
if err := json.Unmarshal(body, &task); err != nil {
return err
}
if task.ID == "" {
return fmt.Errorf("submission response has no task id")
}
fmt.Println(task.ID)
return nil
}Conservar el ID y consultar hasta que el audio esté listo
El envío devuelve id, model, status y created_at. El campo que debes guardar es id, aunque el texto explicativo lo llame ID de tarea. No intentes leer un task_id de nivel superior que no existe en esa respuesta.[3]
Sustituye el marcador por el ID recibido. El comando realiza una sola consulta; repítela aproximadamente cada tres segundos mientras el estado sea processing, con un límite de espera del cliente adecuado para tu aplicación. La referencia de tareas recomienda espaciar las consultas, que no consumen créditos.[4]
: "${REAPI_API_KEY:?Set REAPI_API_KEY in your environment}"
TASK_ID='replace-with-the-returned-id'
curl --fail-with-body --silent --show-error --max-time 30 \
"https://reapi.ai/api/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $REAPI_API_KEY"Comprueba el estado JSON además del HTTP:
processing: conserva el ID y espera antes de consultar de nuevo.completed: leeoutput.audio_urlsy los registrostracksdocumentados para Suno.failed: detén el bucle y revisaerror.code,error.messageyusage.credits.[3][4]
La comprobación en producción para esta serie terminó y devolvió dos URL de audio. Valida un flujo de generación, no un benchmark de latencia ni el éxito de todas las solicitudes. La referencia de Suno garantiza url por pista; los metadatos como ID, letra y duración pueden omitirse cuando están vacíos. Guarda los IDs disponibles si los necesitas para editar después.[3]
Si alcanzas el límite local de espera después de recibir un ID, puedes seguir consultando esa tarea más tarde. No generes otra inmediatamente solo porque el cliente dejó de esperar. Para conservar el audio a largo plazo, cópialo a tu propio almacenamiento; el contrato de tareas no promete retención permanente en el CDN.[4]
Resolver errores de autenticación, saldo y parámetros
La referencia pública distingue errores HTTP de fallos de tarea. Una tarea encontrada puede devolver HTTP 200 y, a la vez, status: "failed" con un error 8xxxx en el JSON.[5]
| HTTP o resultado | Qué comprobar | Siguiente acción |
|---|---|---|
401, 10001–10004 | Cabecera Bearer ausente o incorrecta; clave inválida o revocada | Corregir la cabecera o sustituir la clave |
400, 20002–20004 | Campo obligatorio ausente, valor inválido o modelo incorrecto para el endpoint | Usar el endpoint de audio, suno-music, version y los campos actuales |
402, 30001 | Créditos insuficientes para la solicitud | Revisar el saldo antes de volver a enviar |
404, 40001 | Tarea inexistente o de otro usuario | Usar el ID recibido y la cuenta correspondiente |
429, 50001 | Límite de frecuencia superado | Esperar según Retry-After |
200 con status: "failed" | Error de ejecución en error.code | Leer el error de tarea, sin interpretar HTTP 200 como éxito |
Conserva request_id si el error lo incluye, además del método y la hora aproximada. Ayudan a investigar sin compartir tu clave. Corrige los problemas de validación, autenticación o saldo antes de reintentar.[5]
Qué significan el acceso gratuito y la rotación de claves
Una clave autentica solicitudes; no hace gratuita la generación. Un saldo hipotético de 0,10 USD equivale a 100 créditos. A 60 créditos por solicitud de canción completada, permite una solicitud y deja 40 créditos, insuficientes para una segunda canción completa. Comprueba la elegibilidad promocional y el saldo real, en lugar de asumir que existe una Suno API key gratuita e ilimitada.[3]
La guía de precios de Suno API detalla los cargos de edición y exportación. Si expones una clave, revócala en los ajustes. Para una rotación normal, crea una sustituta, actualiza el secreto del servidor, comprueba la credencial nueva y revoca la antigua. La documentación indica que las tareas ya pendientes continúan tras revocar y pueden seguir cobrando créditos. La revocación bloquea solicitudes nuevas, no cancela esos trabajos.[1]
Preguntas frecuentes
¿Dónde consigo una Suno API key?
Para reAPI, usa los ajustes de API Keys. Crean una credencial de reAPI. El formulario oficial de interés de Suno es una solicitud de colaboración independiente.[1][2]
¿La suscripción de Suno incluye esta clave?
No. Tu suscripción de Suno y tu cuenta de reAPI son independientes. Usa la credencial del servicio cuyo endpoint llamas; consulta la explicación del acceso oficial.
¿Hay una API de Suno gratis y sin límites?
Una credencial no implica crédito ilimitado. Comprueba el saldo y el precio de la operación. El saldo de ejemplo de 0,10 USD cubre una solicitud de canción de 0,06 USD, no generación gratuita continua.[3]
¿Cómo funciona la autenticación de Suno API en reAPI?
Envía Authorization: Bearer <key> tanto en el POST de generación como en el GET de tarea. Conserva la clave en el servidor; no va en el prompt del cuerpo JSON.[1]
¿Por qué recibí HTTP 200 sin una canción?
El envío es asíncrono. Guarda id y consulta hasta que el estado JSON sea completed o failed. Una consulta puede devolver HTTP 200 aunque la tarea haya fallado.[4][5]
¿Cambia mi clave al pasar a V6 Mini o Wild?
La autenticación Bearer sigue igual. Selecciona V6_MINI o V6_WILD en version para una operación compatible; no sustituyas model por la versión. La guía de integración V6 explica las reglas.[3]
Termina con una solicitud completada
Una Suno API key válida es solo el primer paso. Conserva el ID de tarea, gestiona ambos estados finales y guarda el audio de una tarea completada. Cuando funcione ese pequeño flujo, añade letras propias, otras variantes V6 o ediciones según la referencia de Suno, teniendo presentes sus parámetros y tarifas.
Referencias
- reAPI. Authentication and key management. Retrieved September 14, 2026 from Authentication; key-creation button also checked at API Keys.
- Suno. Developer API partner-interest application. Retrieved September 14, 2026 from official application.
- reAPI. Suno operation and version reference. Retrieved September 14, 2026 from Suno, Suno V6 and the public rate card.
- reAPI. Task polling reference. Retrieved September 14, 2026 from Tasks.
- reAPI. Error codes and handling. Retrieved September 14, 2026 from Errors.
Autor

Categorías
Más publicaciones

Cómo usar Claude Sonnet 5: esfuerzo, coste y límites
Cómo usar Claude Sonnet 5: comparación con Opus 4.8, escala de esfuerzo que define coste, codificador denso e infla facturas, y pasos de migración.


Restaurar vídeo antiguo con IA: costo y procedimiento
Restaurar vídeo antiguo con IA: preajuste old_film, solicitud campo por campo, costos reales desde $2.46 por carrete, límites de la restauración automática.


Mejores alternativas a WaveSpeed en 2026: 5 opciones comparadas
¿Buscas una alternativa a WaveSpeed? Compara fal.ai, Replicate, Together AI, RunPod y reAPI por catálogo, precios, velocidad y diseño de API.
