Welcome to the Konbert API documentation! The API provides an efficient HTTP interface for file conversion. Seamlessly convert files between various formats using our simple endpoints.

All requests are made to the following endpoint:

Responses will always be in JSON format, unless otherwise specified.


Head over to the account page to find your API key, you must log in or register if you don't have an account yet.

To authenticate your requests, use the Authorization header:

curl \
    -H "Authorization: Bearer ${API_KEY}"

Remember to replace ${API_KEY} with your own API key.

Converting files

Conversions are made by calling the following endpoint:

You can specify input data via three sources:

  • File upload: This option allows you to upload local files directly to the API. Suitable for large data sets or binary files, it supports various formats and ensures secure, efficient handling of your data.
  • URL: Input data can be provided via a URL. This method is ideal for processing data hosted online, allowing the API to fetch and convert data directly from a web server.
  • Inline data: For smaller data sets or quick tests, input data directly as a text string. This method is convenient for simple, text-based formats like JSON, CSV, or XML.

Curl example: Convert a CSV file to Arrow

curl -X POST \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "input[file]=@file.csv" \
  -F "input[format]=csv" \
  -F "input[options][delimiter]=," \
  -F "output[format]=arrow" \
  -F "sync=true"

Curl example: Convert a JSON URL to CSV

curl -X POST \
  -H "Authorization: Bearer ${API_KEY}" \
  -F "input[http][url]=''" \
  -F "input[format]=json" \
  -F "output[format]=csv" \
  -F "output[options][delimiter]=," \
  -F "sync=true"

Node.js example: Convert a JSON file to PostgreSQL

import fs from "fs";

const API_KEY = "<your_api_key>";
const API_ENDPOINT = "";
const inputFilePath = "<input_file_path>";
const outputFilePath = "<output_file_path>";

const input = fs.createReadStream(inputFilePath);

const formData = new FormData();

formData.append("input[file]", input);
formData.append("input[format]", "json");
formData.append("input[options][flatten_objects]", "true");
formData.append("output[format]", "sql");
formData.append("output[options][create_table]", "true");
formData.append("output[options][syntax]", "postgres");
formData.append("output[options][table_name]", "mytable");
formData.append("sync", "true");

try {
  const response = await fetch(API_ENDPOINT, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
    body: formData,

  if (!response.ok) {
    throw new Error("Failed to convert file");

  const arrayBuffer = await response.arrayBuffer();
  const buffer = Buffer.from(arrayBuffer);

  fs.writeFileSync(outputFilePath, buffer);
  console.log("File converted successfully");
} catch (error) {
  console.error("Error:", error);

PHP example: Convert an Avro file to CSV


$api_key = "YOUR_API_KEY";
$api_endpoint = "";
$input_file_path = "input.avro";
$output_file_path = "output.csv";

$postfields = [
    "input[file]" => new CURLFile($input_file_path),
    "input[format]" => "avro",
    "output[format]" => "csv",
    "sync" => "true"

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $api_key

$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpcode != 200) {
    echo "Error: Failed to convert file\n";
    echo "Response: $response\n";

    echo "Request Error:" . curl_error($ch);

file_put_contents($output_file_path, $response);
echo "File converted successfully\n";


Input formats

ID Options
excel format: "xlsx" "xls" "ods"
sheet_name: string
csv delimiter: "," "\t" ";" "?"
encoding: "" "UTF-8" "UTF-16LE" "UTF-16BE" "windows-1252" "ISO-8859-1"
has_headers: boolean
json flatten_objects: boolean
avro No options available.
parquet No options available.
arrow No options available.

Output formats

ID Options
csv delimiter: "," "\t" ";" "|"
encoding: "UTF-8"
json mode: "normal" "pretty" "ndjson"
avro only_schema: boolean
sql create_table: boolean
syntax: "" "mysql" "postgres" "sqlite"
table_name: string
html No options available.
xml No options available.
parquet No options available.
arrow No options available.