DataFlow Convert

API Reference

Convert files programmatically. All endpoints accept and return JSON or binary streams.

Base URL: https://convertdata.io

Authentication

Anonymous conversions are allowed up to 5 MB and 10 per day. For higher limits, authenticate with a Pro API key via the standard Bearer scheme.

Authorization: Bearer sk_live_your_api_key_here

API keys are available on the Pro plan. Create and revoke keys from your account page.

Convert a file

POST/v1/convert

Upload a file and receive the converted result as a binary stream. The input format is auto-detected from the filename and file contents.

Form fields

filefileThe file to convert (multipart/form-data).
output_formatstringTarget format: csv · json · xlsx · parquet · sql · sqlite
optionsJSON stringOptional conversion options (see Options below).

Examples

# CSV → JSON (anonymous)
curl -X POST https://convertdata.io/v1/convert \
  -F "file=@data.csv" \
  -F "output_format=json" \
  -o output.json

# JSON → XLSX with multi-sheet (Pro)
curl -X POST https://convertdata.io/v1/convert \
  -H "Authorization: Bearer sk_live_..." \
  -F "file=@data.json" \
  -F "output_format=xlsx" \
  -F 'options={"multi_sheet": true}' \
  -o output.xlsx

# CSV → JSON with column selection and rename
curl -X POST https://convertdata.io/v1/convert \
  -H "Authorization: Bearer sk_live_..." \
  -F "file=@employees.csv" \
  -F "output_format=json" \
  -F 'options={"selected_columns":["name","dept"],"column_renames":{"dept":"department"}}' \
  -o output.json

Convert from a URL

POST/v1/convert/url

Fetch a public URL and convert its content. Useful in automation workflows when the source file is already hosted somewhere (public API, S3 presigned URL, Google Sheets CSV export link).

# JSON body
{
  "url": "https://example.com/data.csv",
  "output_format": "json",
  "options": {}
}

# curl example
curl -X POST https://convertdata.io/v1/convert/url \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_live_..." \
  -d '{"url":"https://example.com/report.csv","output_format":"json"}' \
  -o output.json

Private IPs (192.168.x.x, 127.x.x.x, etc.) and non-http(s) schemes are rejected.

Inspect schema

POST/v1/convert/schema POST/v1/convert/schema/url

Returns column names, types, and a 5-row sample without performing a full conversion. Useful for previewing structure before deciding which columns to select.

# From file
curl -X POST https://convertdata.io/v1/convert/schema \
  -F "file=@data.csv"

# From URL
curl -X POST https://convertdata.io/v1/convert/schema/url \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/data.csv"}'

# Response
{
  "columns": [
    {"name": "id",   "dtype": "integer"},
    {"name": "name", "dtype": "string"},
    {"name": "score","dtype": "float"}
  ],
  "sample": [
    {"id": 1, "name": "Alice", "score": 9.5}
  ]
}

Options reference

Pass as a JSON string in the options form field, or as the options key in the URL-input JSON body.

OptionTypeDescription
delimiterstringCSV: column separator. Auto-detected if omitted (e.g. ";" for semicolon).
encodingstringCSV input encoding (e.g. "cp1250", "iso-8859-1"). Defaults to UTF-8.
has_headerbooleanCSV: whether the first row is a header. Default true.
sheetstring | intXLSX: sheet name or 1-based index to read. Default: first sheet.
ndjsonbooleanTreat JSON input/output as newline-delimited (one object per line).
flatten_arraysbooleanJSON → CSV/XLSX: explode arrays of objects to rows. Default true.
multi_sheetbooleanJSON → XLSX: write each array field to its own sheet. Default false.
sql_table_namestringSQL/SQLite output: table name. Defaults to the input filename stem.
selected_columnsstring[]Columns to include in output, in order. Omit to include all.
column_renames{old: new}Map of original column name → output column name.

Rate limits & quotas

EndpointRate limitQuota
/v1/convert, /v1/convert/url30 / minAnonymous: 10 conversions/day · 5 MB per file. Pro: unlimited · 100 MB per file.
/v1/convert/schema30 / minNo daily quota. Same file-size limit as conversion.
/v1/auth/login, /signup5 / minBrute-force protection.
All other /v1/* routes120 / min

Exceeded limits return 429 Too Many Requests. Quota exceeded returns 429 with code: "quota_exceeded".

Make.com integration

Use the built-in HTTP module to call DataFlow Convert from any Make scenario.

Convert a file from a URL

Module: HTTP → Make a request
URL:    https://convertdata.io/v1/convert/url
Method: POST
Headers:
  Authorization: Bearer sk_live_...
  Content-Type: application/json
Body (raw JSON):
  {
    "url":           "{{1.download_url}}",
    "output_format": "json"
  }
Parse response: Yes

Upload a file from a previous module

Module: HTTP → Make a request
URL:    https://convertdata.io/v1/convert
Method: POST
Headers:
  Authorization: Bearer sk_live_...
Body type: multipart/form-data
Fields:
  file          → {{1.data}} (map the binary from previous module)
  output_format → json

n8n integration

Use an HTTP Request node in any n8n workflow.

Convert from a URL

Node:              HTTP Request
Method:            POST
URL:               https://convertdata.io/v1/convert/url
Authentication:    Generic Credential Type
  Credential type: HTTP Header Auth
  Name:            Authorization
  Value:           Bearer sk_live_...
Body content type: JSON
Body:
  {
    "url":           "{{ $json.file_url }}",
    "output_format": "csv"
  }

Upload a binary file

Node:              HTTP Request
Method:            POST
URL:               https://convertdata.io/v1/convert
Authentication:    (same as above)
Body content type: Form Data (multipart)
Fields:
  file          → (binary input from previous node)
  output_format → json

Error format

All errors return JSON with a consistent shape:

{
  "error": {
    "code":    "conversion_error",
    "message": "Failed to parse JSON: ..."
  }
}
invalid_file400Unsupported or missing filename.
unsupported_format415Cannot detect input format.
file_too_large413File exceeds the plan limit.
conversion_error422Parse or write error (e.g. malformed CSV, unsupported nesting).
auth_required401Missing or invalid Bearer token / API key.
plan_required403Feature requires Pro plan.
quota_exceeded429Daily conversion quota reached.
tool_error422JSON repair or extract path error.