> ## 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.

# Blob Create Share

> Créez un lien de partage avec POST /v1/shares : valable jusqu'à 30 jours, révocable, avec une limite de téléchargements optionnelle et, sur Pro et Enterprise, un mot de passe.

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  La clé d'API de votre compte. Vous pouvez la trouver dans les [paramètres de votre compte](https://squarecloud.app/fr/account/security).
</ParamField>

Create Share crée un lien (`https://files.squarecloud.dev/s/...`) pour remettre un fichier à des personnes : un client, une équipe, un testeur. Il fonctionne pour les fichiers publics et privés, dure jusqu'à 30 jours, peut être révoqué à tout moment et peut limiter le nombre de téléchargements du fichier. Sur **Pro et Enterprise**, il peut aussi demander un mot de passe. Nécessite le scope `blob:write`.

Ouvrir le lien télécharge le fichier. Un lien protégé par mot de passe affiche d'abord une page demandant le mot de passe, dans la langue du visiteur. Le lien est lié à l'id actuel du fichier : supprimer, déplacer ou changer la visibilité du fichier le fait répondre `404` immédiatement, sans consommer de téléchargement. Consultez [Liens et partage](/fr/blob-reference/links-and-sharing) pour une comparaison avec les liens temporaires.

<ParamField body="object" type="string" required>
  L'id du fichier à partager.
</ParamField>

<ParamField body="expires_in" type="number" default="86400">
  Durée de validité du lien, de 60 à 2592000 secondes (30 jours).
</ParamField>

<ParamField body="max_downloads" type="number">
  Nombre de téléchargements autorisés par le lien, de 1 à 10000. Une fois épuisé, il répond `410`. Sans ce paramètre, il n'y a pas de limite.
</ParamField>

<ParamField body="password" type="string">
  Un mot de passe de 8 à 128 caractères que le visiteur doit saisir avant de télécharger. Pro et Enterprise uniquement.
</ParamField>

<Warning>Pour un fichier **public**, le lien redirige vers son URL publique permanente, que toute personne qui l'ouvre peut continuer à utiliser. Le mot de passe, la limite de téléchargements et l'expiration ne protègent réellement que les fichiers **privés**.</Warning>

### Limites

<Note>
  * 30 liens par minute (`RATE_LIMITED`, 429), et jusqu'à 1000 liens actifs par compte (`TOO_MANY_SHARES`, 409).
  * Chaque lien accepte 120 visites par minute par IP. Les mots de passe erronés sont limités par IP et par lien.
  * Le téléchargement d'un fichier privé passe par un lien temporaire : 60 requêtes par minute par IP, plus la limite globale de votre compte. Pour distribuer un fichier à beaucoup de personnes, rendez-le public.
</Note>

### Réponse

Répond `201 Created`.

<ResponseField name="status" type="string">
  "success" en cas de succès, "error" sinon.
</ResponseField>

<ResponseField name="response" type="object">
  <Expandable title="Afficher l'objet">
    <ResponseField name="id" type="string">
      L'id du partage. Utilisez-le avec [Supprimer un partage](/fr/blob-reference/endpoint/shares-delete).
    </ResponseField>

    <ResponseField name="url" type="string">
      Le lien à distribuer.
    </ResponseField>

    <ResponseField name="expires_at" type="ISO 8601">
      Date d'expiration du lien.
    </ResponseField>

    <ResponseField name="max_downloads" type="number | null">
      La limite de téléchargements, ou `null`.
    </ResponseField>

    <ResponseField name="password" type="boolean">
      Indique si le lien demande un mot de passe.
    </ResponseField>

    <ResponseField name="object" type="string">
      L'id du fichier partagé.
    </ResponseField>

    <ResponseField name="object_is_public" type="boolean">
      `true` lorsque le fichier est public : toute personne disposant de son URL publique peut toujours le télécharger, donc révoquer, limiter ou protéger le partage ne restreint pas l'accès au fichier lui-même.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://blob.squarecloud.app/v1/shares' \
    --header 'Authorization: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
      "object": "prv/3155597145698959364/reports/q3_mugws5c0-9f86d081884c7d659a2feaa0c55ad015.pdf",
      "expires_in": 604800,
      "max_downloads": 5
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://blob.squarecloud.app/v1/shares', {
    method: 'POST',
    headers: {
      Authorization: 'YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      object: 'prv/3155597145698959364/reports/q3_mugws5c0-9f86d081884c7d659a2feaa0c55ad015.pdf',
      expires_in: 7 * 24 * 60 * 60,
      max_downloads: 5,
    }),
  });
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "status": "success",
    "response": {
      "id": "q8Zr2LwX7nT0vKc4Hs1YbA",
      "url": "https://files.squarecloud.dev/s/q8Zr2LwX7nT0vKc4Hs1YbA",
      "expires_at": "2026-10-02T12:00:00.000Z",
      "max_downloads": 5,
      "password": false,
      "object": "prv/3155597145698959364/reports/q3_mugws5c0-9f86d081884c7d659a2feaa0c55ad015.pdf",
      "object_is_public": false
    }
  }
  ```
</ResponseExample>

### Erreurs

| Code                    | HTTP | Quand                                                            |
| ----------------------- | ---- | ---------------------------------------------------------------- |
| `INVALID_OBJECT`        | 400  | `object` est absent, mal formé ou ne vous appartient pas.        |
| `INVALID_EXPIRES_IN`    | 400  | `expires_in` n'est pas un entier de 60 à 2592000.                |
| `INVALID_MAX_DOWNLOADS` | 400  | `max_downloads` n'est pas un entier de 1 à 10000.                |
| `INVALID_PASSWORD`      | 400  | Le mot de passe ne comporte pas de 8 à 128 caractères.           |
| `UPGRADE_REQUIRED`      | 403  | Les mots de passe nécessitent Pro ou Enterprise.                 |
| `OBJECT_NOT_FOUND`      | 404  | Le fichier n'existe pas.                                         |
| `TOO_MANY_SHARES`       | 409  | Le compte a 1000 liens actifs. Révoquez-en d'abord quelques-uns. |
| `RATE_LIMITED`          | 429  | Plus de 30 liens en une minute.                                  |
