# Supprimer les restrictions d’un PDF

Effacez toutes les restrictions d’autorisation d’un PDF pour rétablir la copie, l’impression et la modification.

Supprimez toutes les restrictions d’autorisation d’un document PDF et rétablissez
la possibilité de copier, d’imprimer et de modifier. L’API est *stateless* : votre
document est traité dans la région et n’est jamais stocké.

<Note>
  Cette action efface les indicateurs d’autorisation, c’est-à-dire les
  restrictions de copie, d’impression et de modification, et non le mot de passe
  exigé pour ouvrir le fichier. Pour supprimer celui-ci, utilisez [Supprimer le
  mot de passe d’un PDF](/docs/api/remove-password-from-pdf). Pour le cycle de
  vie complet, consultez [Protéger et déverrouiller des
  documents](/docs/api/protecting-documents).
</Note>

## Endpoint

<Endpoint method="POST" path="/v1/remove_restrictions" />

Disponible dans toutes les régions. Consultez [Régions et résidence des
données](/docs/api/regions-and-data-residency) pour le routage et la résidence
des données.

| Région           | URL                                                      |
| ---------------- | -------------------------------------------------------- |
| Global           | `https://api.pdfblocks.com/v1/remove_restrictions`       |
| États-Unis       | `https://us.api.pdfblocks.com/v1/remove_restrictions`    |
| HIPAA États-Unis | `https://hipaa.api.pdfblocks.com/v1/remove_restrictions` |
| Union européenne | `https://eu.api.pdfblocks.com/v1/remove_restrictions`    |
| Royaume-Uni      | `https://uk.api.pdfblocks.com/v1/remove_restrictions`    |
| Canada           | `https://ca.api.pdfblocks.com/v1/remove_restrictions`    |
| Australie        | `https://au.api.pdfblocks.com/v1/remove_restrictions`    |
| Japon            | `https://jp.api.pdfblocks.com/v1/remove_restrictions`    |
| Inde             | `https://in.api.pdfblocks.com/v1/remove_restrictions`    |
| Brésil           | `https://br.api.pdfblocks.com/v1/remove_restrictions`    |

## Authentification

Authentifiez chaque requête avec votre clé d’API secrète dans l’en-tête
`X-API-Key`, en HTTPS. Créez et gérez vos clés depuis le
[dashboard](https://dashboard.pdfblocks.com). Consultez
[Authentification](/docs/api/authentication) pour plus de détails.

## Requête

L’endpoint accepte un corps de requête `multipart/form-data`.

<ParamField name="file" type="file" required>
  Le document PDF d’entrée.
</ParamField>

## Exemples

Supprimez toutes les restrictions d’autorisation d’un PDF :

<CodeGroup>

```bash title="cURL"
curl https://api.pdfblocks.com/v1/remove_restrictions \
  -H 'X-API-Key: your_api_key' \
  -F file=@input.pdf \
  -o unrestricted.pdf
```

```python title="Python"
# pip install requests
import requests

with open('input.pdf', 'rb') as file:
    response = requests.post(
        'https://api.pdfblocks.com/v1/remove_restrictions',
        headers={'X-API-Key': 'your_api_key'},
        files={'file': file},
    )

response.raise_for_status()
with open('unrestricted.pdf', 'wb') as output:
    output.write(response.content)
```

```javascript title="Node.js"
// Node.js 18+
import { readFile, writeFile } from 'node:fs/promises';

const body = new FormData();
body.set('file', new Blob([await readFile('input.pdf')]), 'input.pdf');

const response = await fetch('https://api.pdfblocks.com/v1/remove_restrictions', {
  method: 'POST',
  headers: { 'X-API-Key': 'your_api_key' },
  body,
});

if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('unrestricted.pdf', Buffer.from(await response.arrayBuffer()));
```

```php title="PHP"
<?php
$ch = curl_init('https://api.pdfblocks.com/v1/remove_restrictions');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['X-API-Key: your_api_key'],
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [
        'file' => new CURLFile('input.pdf', 'application/pdf'),
    ],
]);

$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
    file_put_contents('unrestricted.pdf', $pdf);
}
```

```ruby title="Ruby"
# gem install http
require 'http'

response = HTTP
  .headers('X-API-Key' => 'your_api_key')
  .post('https://api.pdfblocks.com/v1/remove_restrictions', form: {
    file: HTTP::FormData::File.new('input.pdf'),
  })

File.write('unrestricted.pdf', response.body) if response.status.success?
```

```go title="Go"
package main

import (
	"bytes"
	"io"
	"mime/multipart"
	"net/http"
	"os"
)

func main() {
	var buf bytes.Buffer
	form := multipart.NewWriter(&buf)

	file, _ := os.Open("input.pdf")
	defer file.Close()
	part, _ := form.CreateFormFile("file", "input.pdf")
	io.Copy(part, file)

	form.Close()

	req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/remove_restrictions", &buf)
	req.Header.Set("Content-Type", form.FormDataContentType())
	req.Header.Set("X-API-Key", "your_api_key")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()

	out, _ := os.Create("unrestricted.pdf")
	defer out.Close()
	io.Copy(out, res.Body)
}
```

```csharp title="C#"
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "your_api_key");

using var form = new MultipartFormDataContent
{
    { new ByteArrayContent(File.ReadAllBytes("input.pdf")), "file", "input.pdf" },
};

var response = await client.PostAsync(
    "https://api.pdfblocks.com/v1/remove_restrictions", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
    "unrestricted.pdf", await response.Content.ReadAsByteArrayAsync());
```

</CodeGroup>

## Réponse

En cas de succès, la réponse est un `200 OK` dont le corps contient le PDF sans
restrictions :

```http
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213
```

La sortie est le même document, ses indicateurs d’autorisation effacés : ses
pages et son contenu sont inchangés. Écrivez le corps directement dans un
fichier, comme le font les exemples ci-dessus ; rien n’est stocké de notre
côté.

## Erreurs

Les requêtes en échec renvoient un corps `application/problem+json`. La plus
courante pour cet endpoint est une `400`, renvoyée lorsque `file` n’est pas un
PDF lisible. L’objet `errors` nomme chaque champ :

```json
{
  "type": "https://www.pdfblocks.com/docs/api/v1/error/400",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "file": ["Could not parse the PDF document. The file may be invalid or corrupt."]
  }
}
```

Une `X-API-Key` manquante ou invalide renvoie une `401`. Consultez
[Erreurs](/docs/api/errors) pour tous les codes de statut et la forme complète
de la réponse.

## Actions associées

<CardGroup cols={2}>

<Card title="Ajouter des restrictions" href="/docs/api/add-restrictions-to-pdf">
  Réappliquer des indicateurs d’autorisation.
</Card>

<Card title="Supprimer le mot de passe" href="/docs/api/remove-password-from-pdf">
  Supprimer plutôt le mot de passe d’ouverture.
</Card>

<Card title="Ajouter un mot de passe" href="/docs/api/add-password-to-pdf">
  Chiffrer le document avec un mot de passe.
</Card>

<Card title="Supprimer les signatures" href="/docs/api/remove-signatures-from-pdf">
  Supprimer les signatures d’un document.
</Card>

</CardGroup>
