json-to-xml

Convert a JSON file to XML format. Arrays are wrapped in <root><item> elements, objects become direct children of <root>, and scalar values are wrapped in <root><value>.


Endpoint

POST /v1/convert/json-to-xml

Content-Type: multipart/form-data

Accepted input: .json files (UTF-8 encoded)

Output format: .xml (application/xml)


Authentication

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

X-API-Key: sk_live_your_private_key

Or:

Authorization: Bearer <jwt_token>

Request Parameters

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

Conversion Rules

  • JSON object {"name": "Alice", "age": 30} becomes: xml <root> <name>Alice</name> <age>30</age> </root>

  • JSON array [{"id": 1}, {"id": 2}] becomes: xml <root> <item> <id>1</id> </item> <item> <id>2</id> </item> </root>

  • Scalar value "hello" becomes: xml <root> <value>hello</value> </root>

The root element is always <root>. Output is pretty-printed with single-space indentation.


Response

Direct Download (direct_download=true, default)

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

Returns raw XML bytes.

Metadata Response (direct_download=false)

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/json-to-xml/data_20260405_123456789.xml",
    "filename": "data_20260405_123456789.xml",
    "file_size": 1234,
    "conversion_time_seconds": 0.05
}

Code Examples

Python

import requests

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

with open("data.xml", "wb") as out:
    out.write(response.content)

Node.js

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

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

const xml = await response.text();

PHP

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

Go

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

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

Error Responses

Status Condition
400 Bad Request File is not a .json file
400 Bad Request Invalid JSON content
400 Bad Request JSON to XML conversion failed
401 Unauthorized Missing or invalid API key / JWT token
402 Payment Required Monthly conversion limit reached
402 Payment Required Storage limit reached
413 Payload Too Large File exceeds plan's maximum file size

Limits

Limit Value
Max file size Plan-dependent (Free: 5 MB)
Input encoding UTF-8 only
Monthly conversions Plan-dependent