---
seo_title: API JSON vers TOML | Convertir JSON en TOML | EnConvert
meta_desc: Convertissez du JSON en TOML via POST /v1/convert/json-to-toml. Fichier .json en entrée, TOML direct ou URL présignée. Les valeurs null renvoient une erreur 400.
keywords: api json vers toml, convertir json en toml, convertisseur json toml api, json vers toml api rest, json en toml python requests, json en toml curl, convertir fichier json en toml, config json vers toml api
---

# API JSON vers TOML

L'API JSON vers TOML convertit un fichier JSON au format TOML en une seule requête vers `POST /v1/convert/json-to-toml`. Envoyez un fichier `.json` en multipart form data et recevez le TOML converti directement, ou définissez `direct_download=false` pour obtenir des métadonnées avec une URL de téléchargement présignée. Les tableaux JSON sont encapsulés sous une clé `items` et les valeurs scalaires sous une clé `value`, car TOML exige une table de premier niveau.

---

## Endpoint

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

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

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

**Format de sortie :** `.toml` (`application/toml`)

---

## Authentification

Nécessite une clé API privée ou un token JWT obtenu à partir d'une clé publique.

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

Ou :

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

---

## Paramètres de requête

| Paramètre | Type | Obligatoire | Défaut | Description |
|-----------|------|----------|---------|-------------|
| `file` | file | Oui | -- | Le fichier `.json` à convertir. Doit être encodé en UTF-8. Ne doit contenir aucune valeur `null`. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.toml` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | À `true`, renvoie les octets TOML bruts. À `false`, renvoie des métadonnées avec une URL de téléchargement présignée. |

---

## Règles de conversion

- Un **objet JSON** passe tel quel :
  ```json
  {"database": {"host": "localhost", "port": 5432}}
  ```
  Devient :
  ```toml
  [database]
  host = "localhost"
  port = 5432
  ```

- Un **tableau JSON** est encapsulé sous une clé `items` (TOML exige une table de premier niveau) :
  ```json
  [1, 2, 3]
  ```
  Devient :
  ```toml
  items = [1, 2, 3]
  ```

- Une **valeur scalaire** est encapsulée sous une clé `value` :
  ```json
  42
  ```
  Devient :
  ```toml
  value = 42
  ```

<div class="alert alert-warning">
<strong>Important :</strong> TOML ne prend pas en charge les valeurs <code>null</code>. Si votre JSON contient la moindre valeur <code>null</code>, la conversion échoue avec une erreur 400. Supprimez ou remplacez les valeurs <code>null</code> avant de convertir.
</div>

---

## Réponse

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

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

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

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/json-to-toml/config_20260405_123456789.toml",
    "filename": "config_20260405_123456789.toml",
    "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-toml",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("config.json", f, "application/json")}
    )

with open("config.toml", "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-toml", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-toml");
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")]
]);
$toml = 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-toml", 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` | La conversion JSON vers TOML a échoué (généralement à cause de valeurs `null`) |
| `401 Unauthorized` | Clé API ou token JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `413 Payload Too Large` | Le fichier dépasse la taille maximale du plan |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille max. de fichier | Selon le plan (Founding : 5 MB) |
| Encodage d'entrée | UTF-8 uniquement |
| Valeurs null | Non prises en charge (limitation de TOML) |
| Conversions mensuelles | Selon le plan |

---

## Questions fréquentes

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

Envoyez une requête POST `multipart/form-data` vers `POST /v1/convert/json-to-toml` avec votre fichier `.json` dans le champ `file`, en vous authentifiant via un en-tête `X-API-Key` ou un token JWT `Authorization: Bearer`. Par défaut, le corps de la réponse contient les octets TOML bruts.

### Pourquoi ma conversion JSON vers TOML échoue-t-elle avec une erreur 400 ?

TOML ne prend pas en charge les valeurs `null` : tout JSON contenant `null` échoue avec un `400 Bad Request`. Un `400` est aussi renvoyé lorsque le fichier envoyé n'est pas un `.json` ou que le contenu JSON est invalide.

### Puis-je convertir un tableau JSON ou une valeur scalaire en TOML ?

Oui. Comme TOML exige une table de premier niveau, un tableau JSON est encapsulé sous une clé `items` et une valeur scalaire sous une clé `value`.

### Comment obtenir une URL de téléchargement au lieu du fichier TOML brut ?

Définissez `direct_download=false` dans la requête. L'API renvoie alors des métadonnées JSON incluant `presigned_url`, `object_key`, `filename`, `file_size` et `conversion_time_seconds`.

### Quelle limite de taille de fichier s'applique aux conversions JSON vers TOML ?

La taille maximale de fichier dépend du plan (plan Founding : 5 MB). Les fichiers dépassant la limite de votre plan renvoient `413 Payload Too Large`.
