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

# Fichiers

> Importez des PDF, des images, des vidéos et des logos pour vos QR codes.

> [!NOTE]
>
> L'API GetQR est en version bêta et réservée à certains espaces de travail. Certains détails peuvent changer avant la disponibilité générale.

Les QR codes PDF, Image et Video pointent vers un fichier, et un logo personnalisé est aussi un fichier. L'import se fait en deux étapes : enregistrer le fichier pour obtenir une URL, puis envoyer les octets à cette URL.

| Méthode | Chemin | Description |
| - | - | - |
| `POST` | `/api/v1/files` | [Enregistrer un import de fichier](#enregistrer-un-import-de-fichier) |

## Importer un fichier

**1. Enregistrez le fichier**

Appelez [Enregistrer un import de fichier](#enregistrer-un-import-de-fichier) avec la `target`, le `contentType` et la `size` du fichier. La `target` détermine les types de contenu acceptés et la limite de taille. Vous obtenez un `fileId` et une `uploadUrl`.

**2. Envoyez le fichier**

Envoyez le fichier avec une requête `PUT` vers `uploadUrl`. Ses en-têtes `Content-Type` et `Content-Length` doivent correspondre exactement au `contentType` et à la `size` enregistrés : sinon, l'import est refusé. L'URL est pré-signée : n'ajoutez donc pas votre clé API. Elle expire après 10 minutes.

```bash theme={null}
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/pdf" \
  --data-binary @menu.pdf
```

**3. Utilisez l'ID du fichier**

Transmettez `fileId` quand vous [créez un QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md) :

* En tant que `fileId` pour un QR code `pdf`, `image` ou `video`. Importez avec la cible correspondante.
* En tant que `fileId` pour l'image de profil d'un QR code `vcard`, `social`, `multilink` ou `event`. Importez avec la cible `logo`.
* En tant que `logoOptions.fileId`, avec `logoOptions.type` défini sur `uploaded`, pour un logo personnalisé. Importez avec la cible `logo`. Consultez [Personnalisation](https://docs.getqr.com/fr/api/guides/customization.md).

## Limites

| `target` | Types de contenu acceptés | Taille maximale |
| - | - | - |
| `pdf` | `application/pdf` | 20 Mo (20 971 520 octets) |
| `image` | `image/*` | 5 Mo (5 242 880 octets) |
| `video` | `video/*` | 50 Mo (52 428 800 octets) |
| `logo` | `image/*` | 5 Mo (5 242 880 octets) |

* **Type MIME simple.** Envoyez un seul type et sous-type en minuscules, comme `image/png`. Les paramètres comme `;charset=` et les listes sont refusés.
* **Pas de SVG.** Les types basés sur XML comme `image/svg+xml` ne sont pas acceptés. Importez une image matricielle comme `image/png` ou `image/jpeg`.

## En-têtes

**Authorization** `string` *required*

`Bearer` suivi de votre clé API. Consultez [Authentification](https://docs.getqr.com/fr/api/authentication.md).

**Content-Type** `string` *required*

`application/json`.

## Enregistrer un import de fichier

`POST /api/v1/files`

Enregistre un fichier et renvoie une URL pré-signée vers laquelle l'importer. Cet appel n'importe pas le fichier lui-même.

**target** `string` *required*

L'usage du fichier : `pdf`, `image`, `video` ou `logo`. Détermine les types de contenu acceptés et la limite de taille. Consultez [Limites](#limites).

**contentType** `string` *required*

Type MIME du fichier, par exemple `application/pdf`, sans paramètres. La requête d'import doit envoyer exactement ce `Content-Type`.

**size** `integer` *required*

Taille exacte du fichier en octets, un nombre entier positif. Vérifiée par rapport à la limite de la cible. La requête d'import doit envoyer exactement ce `Content-Length`.

**name** `string`

Nom d'origine du fichier, jusqu'à 255 caractères. Conservé pour l'affichage dans le tableau de bord. Un chemin contenant `/` ou `\` est refusé.

**fileId** `string`

ID à transmettre comme `fileId` ou `logoOptions.fileId`.

**uploadUrl** `string`

URL pré-signée vers laquelle envoyer le fichier en `PUT`.

**expiresIn** `integer`

Secondes avant l'expiration de `uploadUrl` : `600`.

**method** `string`

Méthode HTTP de l'import : `PUT`.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/files" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target": "pdf",
    "contentType": "application/pdf",
    "size": 248000,
    "name": "menu.pdf"
  }'
```

```json 200 theme={null}
{
  "fileId": "file_7bQ2xR9mKp",
  "uploadUrl": "https://storage.getqr.com/qrs-content/pdf/file_7bQ2xR9mKp?X-Amz-...",
  "expiresIn": 600,
  "method": "PUT"
}
```

## Problèmes courants

> [accordion] 422 "Content type … is not allowed for target"
>
> Le type de contenu ne correspond pas à la cible. Par exemple, `pdf` n'accepte que `application/pdf`. Consultez [Limites](#limites).

> [accordion] 422 "must be a single lowercase type/subtype"
>
> Envoyez le type de contenu en minuscules et sans paramètres : `image/png`, et non `Image/PNG` ou `image/png; charset=utf-8`.

> [accordion] 422 "File is too large for target"
>
> La `size` déclarée dépasse la limite de la cible. Compressez le fichier avant de l'enregistrer.

> [accordion] L'import vers uploadUrl échoue
>
> L'URL expire 10 minutes après l'enregistrement du fichier, et la requête doit envoyer exactement les `Content-Type` et `Content-Length` enregistrés. Enregistrez à nouveau le fichier pour obtenir une nouvelle URL.

> [accordion] 422 « is registered but its content was never uploaded » lors de la création d'un QR code
>
> Vous avez enregistré le fichier, mais le `PUT` vers `uploadUrl` ne s'est pas terminé. Importez le fichier, puis créez le QR code.

> [accordion] 422 « was uploaded to … » lors de la création d'un QR code
>
> Le fichier a été enregistré avec une autre cible, par exemple un fichier `image` utilisé pour un QR code `pdf`. Enregistrez un nouvel import avec la cible correspondante.

> [accordion] 404 « File … was not found » lors de la création d'un QR code
>
> Le `fileId` n'existe pas. Récupérez-le dans la réponse de [Enregistrer un import de fichier](#enregistrer-un-import-de-fichier).

## Et ensuite

> [card] [QR codes](https://docs.getqr.com/fr/api/endpoints/qr-codes.md)

> [card] [Types de QR codes](https://docs.getqr.com/fr/api/guides/qr-types.md)

> [card] [Personnalisation](https://docs.getqr.com/fr/api/guides/customization.md)

> [card] [Erreurs](https://docs.getqr.com/fr/api/errors.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.