> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Freigaben

> Erstelle, liste und widerrufe Freigabelinks mit blob.shares und wähle zwischen einer Freigabe und einem Link aus downloadUrl().

Eine **Freigabe** ist ein Link zu einem Objekt, der **ablaufen**, **widerrufen** werden, die **Anzahl der Downloads** begrenzen und bei Pro und Enterprise ein **Passwort** abfragen kann. Wie sich die Links verhalten, erfährst du unter [Links und Freigabe](/de/blob-reference/links-and-sharing).

## Freigabe oder `downloadUrl()`?

|                     | [`downloadUrl()`](/de/sdks/blob/objects#download-links) | `shares.create()`                                                          |
| ------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------- |
| Öffentliches Objekt | Dauerhafte CDN-URL (`expires_at: null`)                 | Leitet auf die dauerhafte öffentliche URL weiter (siehe die Warnung unten) |
| Privates Objekt     | Temporärer Link, bis zu 24 Stunden                      | Freigabelink, bis zu 30 Tage                                               |
| Widerrufbar         | **Nein**                                                | Ja, mit `shares.revoke()`                                                  |
| Download-Limit      | Nein                                                    | Ja, `max_downloads`                                                        |
| Passwort            | Nein                                                    | Ja, Pro und Enterprise                                                     |

Verwende `downloadUrl()` für kurzlebige Links, die du selbst weitergibst, und eine Freigabe, wenn du den Link zurücknehmen oder kontrollieren musst, wer herunterlädt.

## Eine Freigabe erstellen

```typescript theme={"system"}
const share = await blob.shares.create(id, {
    expires_in: 86400,     // seconds, 60 to 2592000 (default 86400)
    max_downloads: 10,     // 1 to 10000
    password: "secret123", // 8 to 128 characters, Pro and Enterprise
});

console.log(share.url);
```

| Option          | Typ      | Beschreibung                                                                     |
| --------------- | -------- | -------------------------------------------------------------------------------- |
| `expires_in`    | `number` | Lebensdauer des Links in Sekunden, 60 bis 2592000 (30 Tage). Standard 86400.     |
| `max_downloads` | `number` | 1 bis 10000.                                                                     |
| `password`      | `string` | 8 bis 128 Zeichen. Pro und Enterprise; andere Pläne erhalten `UPGRADE_REQUIRED`. |

Das Ergebnis hat `id`, `url`, `expires_at`, `max_downloads`, `password` (ob eines gesetzt ist), `object` und `object_is_public`.

<Warning>
  Ist `object_is_public` gleich `true`, leitet der Freigabelink auf die **dauerhafte öffentliche URL** des Objekts weiter: Passwort, Download-Limit und Ablauf **schützen nichts**, weil die Datei unter dieser URL erreichbar bleibt. Mache das Objekt zuerst privat und gib es dann frei:

  ```typescript theme={"system"}
  const [result] = await blob.update(id, { private: true });
  if (result.ok) {
      id = result.id; // the id changes
      const share = await blob.shares.create(id, { max_downloads: 1 });
  }
  ```
</Warning>

## Freigaben auflisten

```typescript theme={"system"}
const shares = await blob.shares.list();
```

Gibt ein Array von Freigaben zurück, jede mit `id`, `url`, `object`, `expires_at`, `remaining_downloads`, `password` und `created_at`.

## Eine Freigabe widerrufen

```typescript theme={"system"}
await blob.shares.revoke(share.id);
```

Der Link funktioniert nicht mehr. `revoke()` wird ohne Wert aufgelöst, und das Widerrufen einer Freigabe, die nicht existiert, schlägt mit `SHARE_NOT_FOUND` fehl.

<Tip>
  Das Löschen, Verschieben oder Umbenennen des Objekts oder eine Änderung seiner Sichtbarkeit macht seine Freigabelinks ebenfalls ungültig: Sie verweisen auf die alte ID. Erstelle neue Freigaben für die neue ID.
</Tip>

<Note>
  `shares.create()` und `shares.revoke()` erhalten **einen einzigen Versuch**. Nur `shares.list()`, ein Lesevorgang, wird [wiederholt](/de/sdks/blob/errors#wiederholungsrichtlinie).
</Note>

API-Referenz: [Create Share](/de/blob-reference/endpoint/shares-create), [List Shares](/de/blob-reference/endpoint/shares-list), [Delete Share](/de/blob-reference/endpoint/shares-delete).
