YAML to JSON API#

Convert a YAML file to JSON with a single request to POST /v1/convert/yaml-to-json. It accepts .yaml or .yml input, uses safe parsing (no arbitrary code execution), and produces pretty-printed JSON with 2-space indentation. Responses return raw JSON bytes by default, or metadata with a presigned download URL when direct_download=false.


Endpoint#

POST /v1/convert/yaml-to-json

Content-Type: multipart/form-data

Accepted input: .yaml or .yml files (UTF-8 encoded)

Output format: .json (application/json)


Authentication#

Requires either a private API key or a JWT token from a public key.

X-API-Key: sk_your_private_key

Or:

Authorization: Bearer <jwt_token>

Request Parameters#

Parameter Type Required Default Description
file file Yes -- The .yaml or .yml file to convert. Must be UTF-8 encoded.
output_filename string No Input filename Custom output filename. The .json extension is added automatically.
direct_download boolean No true When true, returns raw JSON bytes. When false, returns metadata with a presigned download URL.

Conversion Rules#

Direct mapping from YAML to JSON:

database:
  host: localhost
  port: 5432
features:
- auth
- logging
enabled: true

Becomes:

{
  "database": {
    "host": "localhost",
    "port": 5432
  },
  "features": ["auth", "logging"],
  "enabled": true
}
  • Uses safe parsing -- no arbitrary Python object construction from YAML tags
  • YAML types are mapped naturally: strings, numbers, booleans, nulls, arrays, objects
  • Output is 2-space indented with unicode preserved
Note: Only the first YAML document is converted. Multi-document YAML files separated by --- will have only the first document processed.

Response#

Direct Download (direct_download=true, default)#

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

Metadata Response (direct_download=false)#

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

Code Examples#

Python#

import requests

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

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

Node.js#

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

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

const json = await response.json();

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/yaml-to-json");
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.yaml")]
]);
$json = curl_exec($ch);
curl_close($ch);

Go#

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

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

Error Responses#

Status Condition
400 Bad Request File is not a .yaml or .yml file
400 Bad Request Invalid YAML content
400 Bad Request YAML to JSON conversion failed
401 Unauthorized Missing or invalid API key / JWT token
402 Payment Required Monthly ops allowance exhausted
413 Payload Too Large File exceeds plan's maximum file size

Limits#

Limit Value
Max file size Plan-dependent (Founding: 5 MB)
Input encoding UTF-8 only
YAML documents First document only
Monthly conversions Plan-dependent

Frequently asked questions#

How do I convert YAML to JSON with a REST API?#

Send a multipart/form-data POST request to /v1/convert/yaml-to-json with your .yaml or .yml file in the file field, authenticated with an X-API-Key header or a JWT Authorization: Bearer token. The response is pretty-printed JSON with 2-space indentation.

Is it safe to convert untrusted YAML files to JSON?#

The endpoint uses safe parsing, with no arbitrary Python object construction from YAML tags and no arbitrary code execution. YAML types map naturally to JSON strings, numbers, booleans, nulls, arrays, and objects.

Can I convert multi-document YAML files to JSON?#

Only the first YAML document is converted. In files with multiple documents separated by ---, everything after the first document is not processed.

Are .yml files accepted as well as .yaml?#

Yes. Both .yaml and .yml extensions are accepted; any other extension returns 400 Bad Request. Files must be UTF-8 encoded.

Can I get a presigned download URL instead of raw JSON bytes?#

Yes. Set direct_download=false to receive metadata with a presigned_url, object_key, filename, file_size, and conversion_time_seconds.