OmniConvert

File Conversion API

Convert files between 216 formats with one HTTP request, from scripts, CI pipelines or your own app. Send a file and a conversion ID, get the converted file back. No account, no subscription and no SDK. Files are processed in memory and deleted immediately after conversion.

The API uses credits: each conversion costs one credit. Want to try a conversion first? Every converter on this website is free to use in the browser, within the website's free tier.

Authentication

Buy a credit pack to get a token. It is shown after purchase and in your bookmark link (/?t=YOUR_TOKEN). Send it with every request as a Bearer token. Keep it secret: anyone with the token can use its credits.

Quick start

curl --fail-with-body \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "file=@network.har" \
  -F "conversionId=har-to-csv" \
  https://www.omniconvert.cloud/api/convert -o network.csv

Python and JavaScript

import requests

with open("parcels.zip", "rb") as f:
    r = requests.post(
        "https://www.omniconvert.cloud/api/convert",
        files={"file": f},
        data={"conversionId": "shapefile-to-geojson"},
        headers={"Authorization": "Bearer YOUR_TOKEN"},
    )
if not r.ok:
    raise RuntimeError(r.json()["message"])
open("parcels.geojson", "wb").write(r.content)
// Node.js 18+
import { readFile, writeFile } from 'node:fs/promises'

const form = new FormData()
form.append('file', new Blob([await readFile('network.har')]), 'network.har')
form.append('conversionId', 'har-to-csv')

const res = await fetch('https://www.omniconvert.cloud/api/convert', {
  method: 'POST',
  headers: { Authorization: 'Bearer YOUR_TOKEN' },
  body: form,
})
if (!res.ok) throw new Error((await res.json()).message)
await writeFile('network.csv', Buffer.from(await res.arrayBuffer()))

Pricing

  • Every API conversion uses one credit, whatever the format or file size (up to 50 MB).
  • Packs start at $1 for 5 credits; the Bulk pack is $29 for 500 credits. Credits never expire and there is no subscription.
  • Failed conversions are free: the credit is given back.
  • Converting in the browser on this website has its own free tier: light conversions up to 5 MB are unlimited, and Image, PDF, Document, Font conversions or larger files get 3 free per day.

Responses

A successful request returns the converted file with its name in Content-Disposition and these headers:

  • X-Credits-Remaining: credits left on your token after this conversion
  • X-Conversion-Method: always paid for API requests

Errors are JSON with a stable code and a readable message:

{ "error": "NO_CREDITS", "message": "API conversions use one credit each and this token has no credits left." }
StatuserrorMeaning
400MISSING_FIELDSThe form needs "file" and "conversionId".
400UNKNOWN_CONVERSIONNo conversion with that ID. See /api/conversions.
401TOKEN_REQUIREDNo token was sent. Add "Authorization: Bearer <token>".
401INVALID_TOKENThe token does not exist.
402NO_CREDITSThe token has no credits left. Buy another pack.
413FILE_TOO_LARGEThe file is over 50 MB.
422CONVERSION_FAILEDThe input could not be converted. The credit is given back ("refunded": true).

Endpoints

  • POST /api/convert: convert a file (multipart form: file, conversionId)
  • GET /api/conversions: every conversion ID with its file extensions and free tier
  • GET /api/credits/check?t=YOUR_TOKEN: credits left on a token
  • /openapi.json: OpenAPI 3.1 specification, for API clients and code generators

Popular conversion IDs

The full list of 216 conversions is at /api/conversions, and every converter page shows its own command-line example.

Limits

  • Maximum file size: 50 MB
  • One file per request; requests are synchronous and return when the conversion is done
  • Uploaded and converted files are not stored