Data Format Conversion API#
The Data Formats endpoints convert structured data files between JSON, XML, YAML, CSV, and TOML, plus render Markdown to fully styled HTML. Each conversion is a single POST request with a multipart/form-data file upload: send your file, get the converted result back as raw bytes, or request a presigned download URL instead. All eleven endpoints follow the same request shape, authentication, and error model, so integrating a second format after your first takes minutes.
Supported conversions#
| Conversion | Endpoint | Description |
|---|---|---|
| JSON to XML | POST /v1/convert/json-to-xml |
Converts JSON to XML with objects as children of <root>, arrays wrapped in <item> elements, and scalars in <value>. |
| XML to JSON | POST /v1/convert/xml-to-json |
Converts XML to JSON, mapping attributes to @-prefixed keys, text content to #text, and repeated sibling elements to arrays. |
| JSON to YAML | POST /v1/convert/json-to-yaml |
Direct mapping to human-readable block-style YAML with key order and unicode preserved. |
| YAML to JSON | POST /v1/convert/yaml-to-json |
Safely parses .yaml or .yml files (no arbitrary code execution) into pretty-printed 2-space-indented JSON. |
| JSON to CSV | POST /v1/convert/json-to-csv |
Converts a JSON array of objects to comma-delimited CSV with headers taken from the first object's keys. |
| CSV to JSON | POST /v1/convert/csv-to-json |
Converts CSV to a JSON array where the header row becomes the keys and every value stays a string (no type inference). |
| JSON to TOML | POST /v1/convert/json-to-toml |
Converts JSON to TOML, wrapping arrays under an items key and scalars under value; null values are rejected with a 400. |
| TOML to JSON | POST /v1/convert/toml-to-json |
Converts TOML tables and arrays to pretty-printed JSON, serializing datetime values as ISO-8601 strings. |
| CSV to XML | POST /v1/convert/csv-to-xml |
Converts CSV to XML with column headers as element tag names and each row as an <item> inside <root>. |
| XML to CSV | POST /v1/convert/xml-to-csv |
Flattens tabular XML (repeated sibling elements with consistent fields) into comma-delimited CSV rows. |
| Markdown to HTML | POST /v1/convert/markdown-to-html |
Renders .md or .markdown files into a complete, self-contained HTML page with embedded CSS, tables, code blocks, TOC support, and dark mode. |
Shared conventions#
- Authentication: Every endpoint accepts either a private API key via the
X-API-Keyheader or a JWTAuthorization: Bearertoken obtained from a public key. See Authentication. - Request shape: All conversions are synchronous
multipart/form-dataPOSTs with a requiredfilefield plus optionaloutput_filenameanddirect_downloadparameters. See Sync and Async Jobs. - Responses: By default (
direct_download=true) the converted file is returned as raw bytes; withdirect_download=falseyou receive JSON metadata containing apresigned_url,object_key,filename,file_size, andconversion_time_seconds. - Input requirements: All inputs must be UTF-8 encoded and match the expected file extension; maximum file size is plan-dependent (Founding plan: 5 MB).
- Errors: Invalid files or failed conversions return
400, missing or invalid credentials401, exceeded plan limits402, and oversized files413. See Error Codes.
Frequently asked questions#
How do I authenticate requests to the data format conversion endpoints?#
All eleven endpoints accept either a private API key in the X-API-Key header or a JWT Authorization: Bearer token obtained from a public key. The same credentials work across every conversion. See Authentication for details.
Can I get a download URL instead of the converted file bytes?#
Yes. Every endpoint returns the converted file as raw bytes by default; set direct_download=false to receive JSON metadata with a presigned_url, object_key, filename, file_size, and conversion_time_seconds instead.
What file size and input limits apply to data format conversions?#
The maximum file size is plan-dependent (Founding plan: 5 MB), and files exceeding your plan's limit return 413 Payload Too Large. All inputs must be UTF-8 encoded, and each conversion bills one op against your plan's monthly ops allowance, so exhausting it returns 402 Payment Required.