Subir pistas
Elige quién crea o autoriza la sesión de subida y — si tu servidor la crea — cómo se transfieren los archivos. La reproducción es una decisión aparte; consulta Reproducir y acceder a pistas.
Ciclo de vida de subida por archivo
Una sesión de subida puede autorizar muchos archivos, pero cada archivo necesita su propia pista y URL de subida.
Crea la sesión y, para cada archivo, llama a POST /v1/upload/{upload_session_id}/track y
haz PUT de los bytes a track_upload.upload_url. Opcionalmente incluye un track anidado
al crear la sesión para el primer archivo. Referencia completa: Upload Sessions.
Subir tracks
Elige quién crea la upload session y luego — si hace falta — cómo se transfieren los archivos. Las elecciones de carga y reproducción son independientes.
AudioDN Uploader o (voice) Recorder (componentes web) con una Client-Side Upload key
Configuración más rápida. Una Client-Side Upload key con alcance; el componente crea la sesión y sube cada archivo.
Crear una Client-Side Upload key
En el dashboard ve a Settings → API Keys y crea una clave Client-Side Upload. Opcionalmente limítala a una colección. Esta clave solo puede crear sesiones de subida — no leer ni eliminar pistas.
Instalar el componente web
npm install @audiodn/components Uploader:
import '@audiodn/components/uploader' O (voice) Recorder:
import '@audiodn/components/recorder' Alternativas CDN:
<script type="module" src="https://unpkg.com/@audiodn/components@latest/dist/uploader.js"></script> <script type="module" src="https://unpkg.com/@audiodn/components@latest/dist/recorder.js"></script> Renderizar el componente web
<audiodn-uploader
api-key="CLIENT-SIDE-UPLOAD-KEY"
collection-id="COLLECTION-ID"
accent-color="#ff00ff"
></audiodn-uploader> <audiodn-recorder
api-key="CLIENT-SIDE-UPLOAD-KEY"
collection-id="COLLECTION-ID"
accent-color="#ff00ff"
></audiodn-recorder> Si la clave está limitada a una colección, puedes omitir collection-id.
Nunca establezcas ambos api-key y upload-session-id.
Qué hace el componente web
Para cada archivo, el componente crea (o reutiliza) una sesión de subida, llama a
POST /v1/upload/:upload_session_id/track y sube los bytes a
track_upload.upload_url. Luego AudioDN procesa las variantes configuradas.
Opcional: configura un webhook de track-processing para saber cuándo una pista está lista.
Subida personalizada en el cliente con una Client-Side Upload key
Tu navegador o app nativa crea la sesión de subida y sube cada archivo. Tú construyes la interfaz.
Crear una Client-Side Upload key
Crea una clave Client-Side Upload con alcance en el dashboard. Segura para incrustar en la app. Nunca uses una API Access key en código de cliente.
Crear una sesión de subida
const response = await fetch('https://api.audiodelivery.net/v1/upload_session', {
method: 'POST',
headers: {
'Authorization': 'Bearer CLIENT-SIDE-UPLOAD-KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ collection_id: 'COLLECTION-ID', expires_in: 3600 })
});
const { upload_session_id } = await response.json(); Crear una pista por cada archivo
const response = await fetch(
`https://api.audiodelivery.net/v1/upload/${upload_session_id}/track`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ file_name: 'song.wav' })
}
);
const { track_id, track_upload } = await response.json();
const { method, upload_url } = track_upload; También puedes incluir un objeto track anidado al crear la sesión para el primer archivo, y luego usar este paso para archivos adicionales.
La URL de subida está en track_upload.upload_url (no en el objeto track).
Subir los bytes
await fetch(upload_url, {
method,
headers: { 'Content-Type': file.type },
body: file
}); Esperar el procesamiento
Consulta GET /v1/track/{track_id} hasta que track.track_status_id sea ready
(requiere una API Access key o el dashboard), o usa un webhook.
Las Client-Side Upload keys no pueden leer el estado de la pista — prefiere webhooks o un sondeo en el servidor para la disponibilidad.
Sesión de subida creada en el servidor con el AudioDN Uploader o (voice) Recorder (componentes web)
Tu servidor autoriza la subida, crea una sesión de corta duración y la pasa al componente.
Mantén una API Access key en tu servidor
Crea una clave API Access en el dashboard. Nunca la envíes al navegador ni a la app móvil.
Autorizar y luego crear una sesión de subida
Aplica tus propias comprobaciones (inicio de sesión, cuota, permisos) y luego:
const response = await fetch('https://api.audiodelivery.net/v1/upload_session', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_ACCESS_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
collection_id: 'COLLECTION-ID',
expires_in: 3600
// Optional: track: { file_name: 'song.wav' } to also create the first track
})
});
const { upload_session_id, upload_session } = await response.json();
// Pass upload_session_id to the client (Uploader) or continue with per-track create. Pasar la sesión al componente web
npm install @audiodn/components import '@audiodn/components/uploader' <audiodn-uploader
upload-session-id="UPLOAD-SESSION-ID"
accent-color="#ff00ff"
></audiodn-uploader> <audiodn-recorder
upload-session-id="UPLOAD-SESSION-ID"
accent-color="#ff00ff"
></audiodn-recorder> Usa solo upload-session-id — no establezcas también api-key.
El componente web sube
El Uploader o (voice) Recorder (componente web) realiza por ti la creación por pista y la subida de bytes. Opcional: webhook para la disponibilidad.
Sesión de subida creada en el servidor con una interfaz personalizada
Tu servidor crea la sesión; tu UI web o nativa personalizada crea pistas y sube archivos.
Mantén una API Access key en tu servidor
Crea una clave API Access. Solo en el servidor.
Crear una sesión de subida en el servidor
const response = await fetch('https://api.audiodelivery.net/v1/upload_session', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_ACCESS_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
collection_id: 'COLLECTION-ID',
expires_in: 3600
// Optional: track: { file_name: 'song.wav' } to also create the first track
})
});
const { upload_session_id, upload_session } = await response.json();
// Pass upload_session_id to the client (Uploader) or continue with per-track create. Devuelve upload_session_id al cliente. No devuelvas la API Access key.
Crear una pista por cada archivo (cliente o servidor)
const response = await fetch(
`https://api.audiodelivery.net/v1/upload/${upload_session_id}/track`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ file_name: 'song.wav' })
}
);
const { track_id, track_upload } = await response.json();
const { method, upload_url } = track_upload; Subir los bytes
await fetch(upload_url, {
method,
headers: { 'Content-Type': file.type },
body: file
}); Esperar hasta que esté lista
// Processing starts automatically. Poll until ready, or use a webhook.
let track;
do {
await new Promise((r) => setTimeout(r, 5000));
const res = await fetch(`https://api.audiodelivery.net/v1/track/${track_id}`, {
headers: { 'Authorization': 'Bearer YOUR_API_ACCESS_KEY' }
});
({ track } = await res.json());
} while (track.track_status_id !== 'ready'); O usa el webhook de track-processing en lugar de sondear.