Docs
API quickstart
Four requests: create a job, upload your file, start the conversion, download the result. No SDK required — it's plain HTTP and JSON. Anonymous use is free within the Free plan limits.
01See what's supported
Every conversion pair the engine supports, machine-readable.
$ curl https://api-staging.converting.app/v1/formats02 Create a job
Declare the source and target format. You get back a job id and a time-limited upload URL.
$ curl -X POST https://api-staging.converting.app/v1/jobs \ -H "Content-Type: application/json" \ -d '{"source_format":"csv","target_format":"json","filename":"data.csv"}' # → {"id":"job_…","upload_method":"PUT","upload_url":"https://…","upload_headers":{…}}
03 Upload, then start
Upload the file to storage with the returned method, URL, and headers.
$ curl -X PUT "$UPLOAD_URL" -H "Content-Type: text/csv" --data-binary @data.csv $ curl -X POST https://api-staging.converting.app/v1/jobs/$JOB_ID/start
04 Poll and download
Poll until status is done, then follow the artifact download URLs. Archive extraction returns one artifact per file.
$ curl https://api-staging.converting.app/v1/jobs/$JOB_ID # → {"status":"done","artifacts":[{"kind":"output","filename":"output.json","download_url":"https://…"}]}
Error codes
problem+jsonErrors come back as RFC 7807 problem+json with a stable code field — match on the code, not the message.
unsupported_pairThe source → target combination isn't supported. Check GET /v1/formats.too_largeThe uploaded file exceeds the 1 GB limit.too_large_for_formatFully-parsed formats (YAML, TOML, XML, XLSX) are limited to 64 MB.corrupt_inputThe file couldn't be parsed as the declared source format.archive_too_largeThe archive expands beyond the 512 MB extraction limit.archive_entry_limitThe archive contains more than 1,000 files.archive_traversalThe archive contains unsafe paths or links and was rejected.retries_exhaustedA transient failure persisted through retries. Safe to retry the job.Building an agent?
workos auth.mdAgents don't need this page. Discovery, registration, and token exchange are fully machine-readable — start from /auth.md or any 401 response.