# Signed Delivery | AudioDN Docs

> Signieren Sie Delivery-URLs auf Ihrem eigenen Server mit einem URL-Signing-Key, um Wiedergabesessions vollständig zu überspringen — der schnellste Weg zur Wiedergabe für öffentliche Tracks.

Source: https://audiodeliverynetwork.com/de/docs/integration/signed-delivery/

---

# Signed Delivery (Schnellstart)

Signieren Sie Delivery-URLs auf Ihrem eigenen Server und überspringen Sie Wiedergabesessions vollständig. Kein API-Roundtrip, kein Session-Token, kein `Authorization`\-Header — nur eine URL, die Ihre Hörer sofort streamen können.

#### Ideal für

Öffentliche Kataloge, Marketing-Sites, Previews und jeder Track, den Sie bedenkenlos an jeden mit dem Link ausliefern. Die Einrichtung dauert etwa 20 Minuten.

#### Öffentlicher Zugriff

Jeder mit einer gültig signierten URL kann die Datei streamen, bis die Signatur abläuft. Signieren Sie stets auf Ihrem Server, wählen Sie eine sinnvolle Signaturlaufzeit und löschen Sie Keys, die Sie nicht mehr verwenden. Jede signierte Anfrage zählt zur Wiedergabenutzung und Abrechnung.

## Vergleich mit Wiedergabesessions

Die Pfade [Hybrid](/docs/integration/hybrid) und [Server-Side](/docs/integration/server-side) erstellen eine **Wiedergabesession** — ein kurzlebiges Token pro Hörer, das durch einen Aufruf der AudioDN-API erzeugt wird. Dieser Roundtrip ist das, was es Ihnen ermöglicht, Berechtigungen (Anmeldungen, Abonnements, Käufe) zum Zeitpunkt der Wiedergabe durchzusetzen.

Signed Delivery entfernt diesen Roundtrip. Sie besitzen ein HMAC-Secret pro Organisation und signieren die Delivery-URL selbst, sodass die Anfrage des Hörers **direkt an Ihre Delivery-Domain** geht und am Edge verifiziert wird. Für öffentliche Tracks, bei denen Sie keine Autorisierung pro Wiedergabe benötigen, ist dies die schnellste und einfachste Option.

|  | Wiedergabesession (Hybrid / Server-Side) | Signed Delivery (dieser Pfad) |
| --- | --- | --- |
| API-Roundtrip pro Hörer | Ja — Session erstellen | Nein — lokal signieren |
| Autorisierung pro Wiedergabe | Bei Session-Erstellung durchgesetzt | Ihre Verantwortung (wer einen Link erhält) |
| Am besten geeignet für | Audio hinter einer Paywall / mit Zugangskontrolle | Öffentliche Tracks & Previews |
| Wiedergaben für Abrechnung gezählt | Ja | Ja |

Für die vollständige Referenz — das Signaturschema, den Variantenbezug und Reporting-Details — siehe die Docs der [Signing Keys API](/docs/api/signing-keys).

## Signieren & Liefern

Erstellen Sie einen Signing-Key, signieren Sie auf Ihrem Server, streamen Sie von Ihrer Delivery-Domain.

### 1\. Einen URL-Signing-Key erstellen

Gehen Sie im [AudioDN-Dashboard](https://account.audiodeliverynetwork.com) zu **Settings → API Keys** und erstellen Sie einen **URL Signing**\-Key. Das Secret wird **einmalig** angezeigt — speichern Sie es sicher auf Ihrem Server. Optional können Sie eine Signaturlaufzeit (`ttl`) festlegen und den Key auf bestimmte Varianten beschränken.

### 2\. Ihre Delivery-Domain finden

Jede Organisation erhält eine dedizierte Delivery-Subdomain in der Form `{organization_id}.audiodelivery.net`. Kopieren Sie Ihre unter **Settings → Organization → Delivery Domain**. Die vollständige URL einer Datei besteht aus Ihrer Delivery-Domain plus dem Pfad der Datei:

```
https://1bb2f0c4-....audiodelivery.net/7e4386f0-..../20260709145408659.uSYrzmRWTDvEyjFz_lq.aac
```

### 3\. Die URL auf Ihrem Server signieren

Berechnen Sie ein HMAC-SHA256-Token über den Anfragepfad plus den aktuellen Zeitstempel und hängen Sie es als `verify`\-Query-Parameter an. Diese Referenzimplementierung nutzt die Web-Crypto-API und läuft in Node 18+, Deno, Bun und den meisten Edge-Runtimes:

```
function base64url(bytes) {
  let binary = '';
  const b = new Uint8Array(bytes);
  for (let i = 0; i < b.byteLength; i++) binary += String.fromCharCode(b[i]);
  return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

async function hmacSha256(key, data) {
  const cryptoKey = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(key),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']
  );
  return new Uint8Array(await crypto.subtle.sign('HMAC', cryptoKey, new TextEncoder().encode(data)));
}

// secret = the URL Signing key secret from the dashboard (keep this server-side)
// domain = your org delivery host, e.g. "1bb2....audiodelivery.net"
// path   = the file path, e.g. "folder-id/track-index_lq.mp3"
async function signUrl(secret, domain, path) {
  const u = new URL('https://' + domain + '/' + path);
  u.searchParams.delete('verify');

  const message = u.pathname + (u.search || '');
  const issued = Math.floor(Date.now() / 1000).toString();

  const mac = await hmacSha256(secret, message + issued);
  u.searchParams.append('verify', issued + '-' + base64url(mac)); // verify MUST be last

  return u.toString();
}
```

#### Secret serverseitig halten

Das Signing-Secret darf niemals den Browser erreichen. Falls doch, kann jeder URLs für Ihr Audio erstellen. Signieren Sie in einer Backend-Route und geben Sie nur die fertige URL an den Client zurück.

### 4\. Die signierte URL an den Client ausliefern

```
// Express example: hand a freshly signed URL to your frontend.
app.get('/api/track-url', async (req, res) => {
  const url = await signUrl(
    process.env.ADN_SIGNING_SECRET,      // never expose this to the client
    process.env.ADN_DELIVERY_DOMAIN,     // e.g. 1bb2....audiodelivery.net
    req.query.path                       // folder-id/track-index_lq.mp3
  );
  res.json({ url });
});
```

Das Frontend ruft eine wiedergabefertige URL ab — es wird kein Schlüsselmaterial offengelegt.

### 5\. Überall abspielen, wo eine URL funktioniert

Eine signierte URL ist einfach eine URL, daher lässt sie sich direkt in ein natives `<audio>`\-Element, Ihren eigenen individuellen Player oder einen Download-Link einsetzen.

```
<!-- The signed URL works anywhere a normal audio URL does. -->
<audio controls src="https://{org}.audiodelivery.net/{file_path}?verify={issued}-{mac}">
</audio>
```

#### Nutzen Sie die ADN-Player-Komponente?

Die [Player](/docs/components/player)\-Komponente authentifiziert sich mit einem Client-Side-API-Key oder einer `play-session-id`, nicht mit einer vorab signierten URL. Wenn Sie die Player-UI von ADN nutzen möchten, verwenden Sie den Pfad [Web](/docs/integration/web) oder [Hybrid](/docs/integration/hybrid). Signed Delivery ist für direktes Streaming ohne Wiedergabesession gedacht.

### 6\. Wiedergaben & Reporting

Signierte URLs umgehen die Wiedergabesession, doch Ihre Wiedergabestatistiken bleiben genau — Wiedergaben werden anhand der tatsächlichen Audio-Auslieferung auf Ihrer Domain gemessen und stündlich aggregiert. Da jede signierte Anfrage eine echte Auslieferung ist, zählt sie zu Ihrer Wiedergabenutzung und Abrechnung genauso wie ein Stream über eine Wiedergabesession.
