Offre de lancement : Les forfaits Creator et Business sont réduits pour une durée limitée. Voir les tarifs

Intégration côté serveur

Utilisez l’API ADN directement pour stocker des pistes et gérer la lecture. Créez des expériences entièrement personnalisées sans les composants ADN.

Idéal pour

Plateformes personnalisées, entreprise, et équipes ayant besoin d’un contrôle API complet. La configuration prend 1 à 2 heures.

Lecture des pistes

Créez des sessions de lecture et récupérez les URL de piste depuis votre serveur.

Utilisez l’API ADN directement depuis votre serveur pour créer des sessions de lecture et récupérer les URL de piste. Créez des expériences de lecture entièrement personnalisées — sans composants web ADN.

1. Créer une clé API

Allez dans Settings → API Keys et créez une clé API Access.

2. Créer une session de lecture

const response = await fetch('https://api.audiodelivery.net/v1/play_session/collection', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    collection_id,
    variants: ['preview'],
    is_downloadable: false,
    expires_in: 3600 // session duration in seconds (default: 3600, min: 60, max: 86400)
  })
});

const { play_session_id, tracks } = await response.json();

C’est ici que vous appliquez la logique métier — vérifiez les abonnements, validez les achats, ou appliquez des règles d’accès avant de créer la session.

3. Récupérer les données de piste

const { id: track_id } = tracks[0];

// No auth needed - the session ID acts as a bearer token
const response = await fetch(`https://api.audiodelivery.net/v1/play/${play_session_id}/${track_id}`);

const { variants } = await response.json();
const preview = variants.find(v => v.variant.index === 'preview');
console.log(`Play Audio File: ${preview.url}`);

4. Lecture personnalisée

Utilisez l’URL renvoyée dans votre propre implémentation de lecteur audio. Compatible avec n’importe quelle bibliothèque de lecteur ou API audio mobile native.

Données de forme d'onde

ADN génère automatiquement des données de forme d’onde RMS normalisées (320 échantillons) pour chaque piste. Le champ levels dans la réponse de la piste contient les données — utilisez-les pour afficher des formes d’onde dans votre propre lecteur, ou générez des formes d’onde personnalisées via le type de variante Analyse audio.

Images de couverture et couleurs de thème

ADN scanne chaque piste envoyée pour une pochette intégrée et la rend disponible comme cover_image dans la réponse de la piste (en tailles icon/small/regular/large). Vous pouvez aussi envoyer une image de couverture séparément via l’API. Lorsqu’une image de couverture est présente, ADN extrait une palette de couleurs et sélectionne un player_color principal — utilisez-les pour styliser l’interface de votre lecteur. À côté, les réponses incluent player_color_light et player_color_dark, des variantes ajustées en contraste pour afficher la couleur sur des fonds clairs et sombres respectivement. Le tableau theme complet contient toutes les couleurs extraites avec les valeurs hexadécimales, l’aire, la luminosité et les données de saturation.

Pistes publiques ? Ignorez la session

Pour les pistes publiquement disponibles, vous pouvez signer les URL de livraison sur votre propre serveur avec une clé URL Signing et ignorer entièrement les sessions de lecture — pas d’aller-retour API par auditeur. Voir la voie rapide Livraison signée et l’API Signing Keys.

Envoi des pistes

Utilisez l’API ADN pour gérer tout le flux d’envoi depuis votre serveur.

Utilisez l’API ADN directement depuis votre serveur pour créer des sessions d’envoi, stocker des pistes et gérer tout le flux d’envoi. Créez des interfaces d’envoi entièrement personnalisées — sans composants web ADN.

1. Créer une clé API

Allez dans Settings → API Keys et créez une clé API Access.

2. Créer une session d'envoi

const response = await fetch('https://api.audiodelivery.net/v1/upload_session', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    collection_id: 'COLLECTION-ID',
    expires_in: 3600 // session duration in seconds (default: 3600, min: 60, max: 86400)
    // Optional: add track: { file_name: 'song.wav' } to also create a track and get track_upload.upload_url
  })
});

const { upload_session } = await response.json();

3. Créer des pistes dans la session

const { id: upload_session_id } = upload_session;

// One request per file. No Authorization header needed here — the
// upload session ID authorizes track creation.
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, expires_at } = track_upload;

4. Envoyer les fichiers

const file = document.querySelector('input[type="file"]').files[0];

await fetch(upload_url, {
  method,
  headers: { 'Content-Type': file.type },
  body: file
});

Répétez les étapes 3 et 4 pour chaque fichier que vous souhaitez ajouter à la session — chaque piste a besoin de sa propre requête POST /v1/upload/:upload_session_id/track et de sa propre URL d’envoi signée. Vous pouvez aussi inclure un objet track imbriqué sur POST /v1/upload_session pour créer la première piste d’emblée, puis utiliser l’étape 3 pour tout fichier supplémentaire.

5. Attendre que la piste soit prête

Le traitement démarre automatiquement une fois que le fichier est dans le stockage. Attendez que le statut de la piste soit ready avant de créer une session de lecture ou de signer des URL de livraison — soit en interrogeant, soit avec un webhook.

// Processing runs automatically after the upload. Poll the track until it is
// ready, or configure a webhook (below) to be notified instead of polling.
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_KEY' }
  });
  ({ track } = await res.json());
} while (track.track_status_id !== 'ready');

// The track is now ready — create a play session or sign a delivery URL.

6. Optionnel : Webhooks

Au lieu d’interroger, activez un webhook sous Settings → Webhook pour être notifié lorsqu’une piste atteint un résultat terminal (ready, incomplete, error ou init_error) et lorsque son jeu de fichiers complet est prêt. Voir la documentation du webhook Track Processing.

Images de couverture

ADN scanne automatiquement les pistes envoyées pour une pochette intégrée. Vous pouvez aussi envoyer une image de couverture séparément via l’API Covers. Lorsqu’une image est présente, ADN extrait des couleurs (disponibles comme theme) qui peuvent être utilisées pour styliser l’interface de votre lecteur.

Génération de clés

Générez des clés côté client limitées depuis votre serveur.

Une fois que vous avez une clé API Access, vous pouvez générer des clés player et uploader de façon programmatique — par exemple, une clé lecteur par client limitée à une seule collection. Les clés Inline Share et URL Signing ne sont pas créées via l’API ; provisionnez-les depuis Settings → API Keys dans le tableau de bord. Voir la référence Clés API pour tous les paramètres.

Créer une clé limitée

// Use your API Access key to mint a scoped Client-Side Player key.
const response = await fetch('https://api.audiodelivery.net/v1/api_key', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_ACCESS_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'Customer Player Key',
    api_key_type_id: 'player',   // 'player' | 'uploader' (share & signing keys are dashboard-only)
    collection_id: 'COLLECTION_ID' // optional: limit the key to one collection
    // expires_at is optional via the API — omit for a key that never expires
  })
});

// The full key is returned once — store it securely, it cannot be retrieved again.
const { api_key } = await response.json();

Via l’API, expires_at est optionnel pour les deux types de clés — omettez-le pour une clé qui n’expire jamais dans le temps. Les clés API Access, Inline Share et URL Signing doivent être créées dans le tableau de bord.