---
seo_title: API JSON vers YAML | Convertir JSON en YAML | EnConvert
meta_desc: Convertissez du JSON en YAML via POST /v1/convert/json-to-yaml. Sortie en style bloc lisible, ordre des clés préservé. Octets YAML bruts ou URL présignée.
keywords: api json vers yaml, convertir json en yaml api, json to yaml api rest, config json en yaml api, conversion json yaml en ligne, transformer json en yml api, fichier json vers yaml endpoint
---

# API JSON vers YAML

Convertissez un fichier JSON en YAML avec une seule requête vers `POST /v1/convert/json-to-yaml`. La conversion est une correspondance directe sans restructuration : la sortie est du YAML lisible en style bloc, avec l'ordre original des clés et les caractères unicode préservés. Par défaut, la réponse contient les octets YAML bruts ; définissez `direct_download=false` pour recevoir à la place des métadonnées avec une URL de téléchargement présignée.

---

## Endpoint

```
POST /v1/convert/json-to-yaml
```

**Content-Type :** `multipart/form-data`

**Entrée acceptée :** fichiers `.json` (encodés en UTF-8)

**Format de sortie :** `.yaml` (`application/x-yaml`)

---

## Authentification

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

```
X-API-Key: sk_your_private_key
```

Ou :

```
Authorization: Bearer <jwt_token>
```

---

## Paramètres de la requête

| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|--------|------------|-------------|
| `file` | file | Oui | -- | Le fichier `.json` à convertir. Doit être encodé en UTF-8. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.yaml` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Lorsque `true`, renvoie les octets YAML bruts. Lorsque `false`, renvoie des métadonnées avec une URL de téléchargement présignée. |

---

## Règles de conversion

Correspondance directe de JSON vers YAML sans restructuration :

```json
{
  "database": {
    "host": "localhost",
    "port": 5432,
    "credentials": {
      "user": "admin",
      "password": "secret"
    }
  },
  "features": ["auth", "logging"]
}
```

Devient :

```yaml
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret
features:
- auth
- logging
```

- La sortie utilise le **style bloc** (multi-ligne, lisible), et non le style flux
- **L'ordre des clés est préservé** par rapport au JSON original
- Les caractères unicode sont préservés tels quels

---

## Réponse

### Téléchargement direct (`direct_download=true`, par défaut)

```
HTTP 200 OK
Content-Type: application/x-yaml
Content-Disposition: inline; filename="config_20260405_123456789.yaml"
```

### Réponse avec métadonnées (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/json-to-yaml/config_20260405_123456789.yaml",
    "filename": "config_20260405_123456789.yaml",
    "file_size": 1234,
    "conversion_time_seconds": 0.03
}
```

---

## Exemples de code

### Python

```python
import requests

with open("config.json", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/json-to-yaml",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("config.json", f, "application/json")}
    )

with open("config.yaml", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("config.json"));

const response = await fetch("https://api.enconvert.com/v1/convert/json-to-yaml", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const yaml = await response.text();
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-yaml");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("config.json", "application/json")]
]);
$yaml = curl_exec($ch);
curl_close($ch);
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "config.json")
file, _ := os.Open("config.json")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/json-to-yaml", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.json` |
| `400 Bad Request` | Contenu JSON invalide |
| `400 Bad Request` | Échec de la conversion JSON vers YAML |
| `401 Unauthorized` | Clé API / jeton JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `413 Payload Too Large` | Le fichier dépasse la taille maximale du forfait |

---

## Limites

| Limite | Valeur |
|--------|--------|
| Taille de fichier max | Dépend du forfait (Founding : 5 MB) |
| Encodage d'entrée | UTF-8 uniquement |
| Conversions mensuelles | Dépend du forfait |

## Questions fréquentes

### Comment convertir du JSON en YAML avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/json-to-yaml` avec votre fichier `.json` dans le champ `file`, authentifiée avec un en-tête `X-API-Key` ou un jeton JWT `Authorization: Bearer`. La réponse est le YAML converti.

### La conversion JSON vers YAML préserve-t-elle l'ordre des clés ?

Oui. L'ordre des clés du JSON original est préservé, les caractères unicode sont conservés tels quels et la structure est mappée directement sans restructuration.

### La sortie YAML est-elle en style bloc ou en style flux ?

La sortie utilise le style bloc (du YAML multi-ligne, lisible) et non le style flux en ligne, comme le montre l'exemple de conversion sur cette page.

### Puis-je obtenir une URL de téléchargement présignée au lieu des octets YAML bruts ?

Oui. Définissez `direct_download=false` pour recevoir une réponse de métadonnées avec `presigned_url`, `object_key`, `filename`, `file_size` et `conversion_time_seconds`.

### Pourquoi l'API JSON vers YAML renvoie-t-elle 400 Bad Request ?

Un `400` est renvoyé lorsque le fichier n'est pas un fichier `.json`, que le contenu n'est pas du JSON valide ou que la conversion échoue. Les fichiers dépassant la limite de taille de votre forfait renvoient `413 Payload Too Large`.
