ctio CLI Documentationv0.5.2
Single-binary command-line client for the Conversion Tools API. Pipe-friendly, multi-region, works on Windows, macOS, and Linux with no Node or Bun runtime to install.
Quick Start
Install on Windows with scoop, then convert your first file. Three commands total:
1. Install
scoop bucket add conversiontools https://github.com/conversiontools/scoop-bucketscoop install ctio
2. Authenticate
ctio auth login
3. Convert
ctio convert -t json_to_excel data.json out.xlsx
Mac and Linux users: brew install conversiontools/tap/ctio, or see the Installation section below.
Installation
Windows (scoop, recommended)
Adds the Conversion Tools scoop bucket and installs ctio onto your PATH. Future versions update with scoop update ctio.
scoop bucket add conversiontools https://github.com/conversiontools/scoop-bucketscoop install ctio
First time only, if scoop is not installed yet:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserInvoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
Windows (manual download)
If you prefer not to use scoop:
Invoke-WebRequest -Uri https://github.com/conversiontools/ctio/releases/download/v0.5.2/ctio-windows-x64.exe -OutFile ctio.exe
Move ctio.exe to a directory on your PATH, or add the current directory to PATH.
macOS and Linux (Homebrew, recommended)
Installs ctio from the Conversion Tools tap with no Gatekeeper prompt. Future versions update with brew upgrade ctio.
brew install conversiontools/tap/ctio
macOS (Apple Silicon, manual download)
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.5.2/ctio-darwin-arm64 -o ctiochmod +x ctioxattr -d com.apple.quarantine ctio 2>/dev/null || truesudo mv ctio /usr/local/bin/
The binaries are not notarized, so the xattrline clears Gatekeeper's quarantine flag on the downloaded file. Homebrew installs don't need it.
macOS (Intel, manual download)
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.5.2/ctio-darwin-x64 -o ctiochmod +x ctioxattr -d com.apple.quarantine ctio 2>/dev/null || truesudo mv ctio /usr/local/bin/
Linux (manual download)
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.5.2/ctio-linux-x64 -o ctiochmod +x ctiosudo mv ctio /usr/local/bin/
All releases live on GitHub.
Authentication
Run ctio auth login once and paste your API token. The token is validated against the API and stored in a per-user profile file.
Interactive login
ctio auth login
ctio will print a link to your profile page where you can copy the API token, then prompt for the token (input is hidden), a profile name, and a region.
Token resolution order
For every command, ctio resolves the token in this priority:
--token <token>flag (one-off override)CT_API_TOKENenvironment variable--profile <name>flag (orCT_PROFILEenv)- Active profile from the config file
Multiple profiles & regions
Useful for separating personal/team accounts, or pinning specific tasks to a region.
ctio auth add-profile prod --region us # add a US-pinned profilectio auth use-profile prod # switch active profilectio auth list --format pretty # see all profiles (tokens masked)ctio convert --region eu -t json_to_excel ...# override region per-command
Profiles live at ~/.config/conversiontools/profiles.toml on Unix (mode 0600) or %APPDATA%\conversiontools\profiles.toml on Windows.
Commands
ctio ships with 9 top-level verbs. Each verb supports --help for full option lists.
| Command | Description |
|---|---|
ctio auth | Manage profiles: login, status, list, add-profile, use-profile, logout. Token resolution: --token > CT_API_TOKEN env > active profile. |
ctio convert | Run a conversion. Streams stdin/stdout via `-`, supports --option key=value, --url for remote inputs, --file for converters that take a second file, --sandbox. Prints a warning when the API ignores an option or replaces a value. |
ctio parse | Extract named fields from a document (invoices, receipts, statements) with Parse, as JSON. |
ctio studio | Reuse an AI Studio custom converter: studio list, studio run <converter_id> <file> [output], studio download. |
ctio task | Inspect a task by ID. --wait blocks until SUCCESS/ERROR, --download streams the result to file or stdout. task list shows recent tasks. |
ctio list | Browse 200+ converters. Filters: --from, --to (format synonyms like xlsx and excel match), --ai, --custom. --detail in pretty mode shows option keys. |
ctio describe | Show one converter's options with their allowed values and defaults, e.g. `ctio describe xml_to_csv --format pretty`. |
ctio voices | List the text-to-speech voices: the built-in ones and the voices you cloned, with the IDs to pass as voice_tts. |
ctio version | Print the CLI version and resolved API endpoint. |
Usage Examples
ctio works with file paths, stdin/stdout (via -), and remote URLs. Default output is JSON status to stdout (or stderr when streaming a file to stdout) so it composes cleanly with jq and other tools.
Basic file-to-file conversion
ctio convert -t json_to_excel data.json out.xlsx
Uploads the file, runs the conversion, downloads the result to out.xlsx, prints a JSON status line.
Stdin to file (no temp file on disk)
cat data.json | ctio convert -t json_to_excel - out.xlsx
Streams the input directly into the upload. Safe for very large inputs - never buffers in memory.
File to stdout (pipe-friendly)
ctio convert -t xml_to_csv data.xml - > out.csv
Result streams to stdout. Status JSON goes to stderr so the pipe stays clean.
Compose with other tools
ctio convert -t pdf_to_text invoice.pdf - | head -200 | grep -i total
ctio fits into Unix pipelines like any other CLI. Combine with jq, sed, awk, or pass to another ctio invocation.
Conversion options
ctio convert -t excel_to_xml in.xlsx out.xml --option show_columns=no --option header=yes
Pass conversion-specific options with repeatable --option key=value flags. `ctio describe excel_to_xml --format pretty` lists the options, their allowed values and defaults. If the API ignores an option or replaces a value, ctio prints a warning on stderr.
Remote URL input
ctio convert -t website_to_pdf --url https://example.com out.pdf
No local file required. The API fetches the URL server-side.
Find a converter
ctio list --from pdf --to text --format pretty
Browse the converter registry by input or output format. Add --detail to see option keys.
Inspect a task
ctio task <task_id> --format pretty
Useful when running long jobs or debugging failures. Add --wait to block until SUCCESS/ERROR, --download to fetch the result.
Text to Speech
Narrate a text, Markdown, Word or PDF file with an AI voice. The output file name picks the format (MP3 or WAV). The audio comes out at spoken-word loudness (about -16 LUFS), 24 kHz mono, ready to drop into a video.
# Narrate a script as WAVctio convert -t ai_text_to_speech script.txt narration.wav --option voice_tts=en_paul_neutral# A PDF as MP3ctio convert -t ai_pdf_to_speech handbook.pdf handbook.mp3 --option voice_tts=gb_jane_neutral# Every voice you can use, with its IDctio voices --format pretty
- Voices. Built-in voices (Oliver and Jane, UK English; Paul, US English; Marie, French) come in several speaking styles, for example
gb_oliver_neutraloren_paul_cheerful. - Your own voice. Clone it on voice.conversiontools.io; its Voice ID is shown next to the clone on the dashboard. Pass it as
voice_ttsfrom the same account. - No silent fallbacks. An unknown voice, format or language is an error that names the value.
- Cost. 10 AI credits per 1,000 characters. AI credits.
Supported Formats
ctio bundles a registry of 200+ converters across 13 categories. The same conversion types are available via the API, MCP server, and Node/Python/PHP libraries.
Documents
DOCX, DOC, PPTX, PPT, XLSX, XLS, Markdown, ODS, HTML, LaTeX
Data Formats
JSON, CSV, XML, YAML, Parquet, JSONL, BSON, Excel
Images
PNG, JPG, WebP, AVIF, HEIC, JXL, SVG, BMP, TIFF, GIF
PDF Processing
PDF to Word, Excel, CSV, Text, HTML, JPG, PNG, SVG, TIFF, EPUB
Audio
MP3, WAV, FLAC
Video
MP4, MOV, MKV, AVI
E-books
EPUB, MOBI, AZW, AZW3, FB2, FBZ, PDF
OCR
PNG, JPG, PDF to Text, searchable PDF
AI Text-to-Speech
Text, DOCX, PDF, Markdown to MP3 or WAV
AI Speech-to-Text
MP3, WAV, FLAC to Text
AI-Powered
PDF, Images to JSON, CSV, Excel, Markdown
Subtitles
SRT, VTT, ASS, CSV, Excel, Text
Web
URL/HTML to PDF, JPG, PNG, CSV
View full converter list or run ctio list for the live registry.
Pricing
ctio uses the same conversion limits as your Conversion Tools account:
- Free tier: 100 conversions per month (max 10 per day)
- Paid plans: higher limits and priority processing
View pricing plans or API pricing for details.
Troubleshooting
Common issues and how to resolve them:
"ctio: command not found" after install
On Windows, restart your terminal after `scoop install ctio` (or after adding the binary directory to your PATH manually). With Homebrew, run `brew doctor` if `brew install` succeeded but the command is missing. After a manual download, confirm the binary landed in /usr/local/bin and that /usr/local/bin is on your PATH.
macOS "ctio cannot be opened because the developer cannot be verified"
The ctio binaries are not notarized, so macOS Gatekeeper blocks a downloaded copy. Installing with Homebrew avoids this. For a manual download, the commands in the macOS section above run `xattr -d com.apple.quarantine ctio` to clear it. If you skipped that, run `xattr -d com.apple.quarantine /usr/local/bin/ctio` and try again, or right-click the binary in Finder and choose Open the first time.
Token errors / 401 Unauthorized
Run `ctio auth status` to see the active profile and masked token. If empty, run `ctio auth login` and paste a fresh token from https://conversiontools.io/profile. Tokens are JWTs; "Regenerate" on the profile page invalidates the old one immediately.
Where are my profiles stored?
Unix: ~/.config/conversiontools/profiles.toml (mode 0600). Windows: %APPDATA%\conversiontools\profiles.toml. Tokens are stored in plaintext at the configured permissions; ctio refuses to write the file if it cannot set 0600 on Unix.
Conversion fails or returns an error
Run with --verbose to see the task id and API exchange (tokens and file contents are never logged). Then `ctio task <id>` for the full error message. Check that the input file is valid and not corrupted, and that the conversion type is one of the entries in `ctio list`.
How do I pick the right conversion type?
`ctio list --from <input-format> --to <output-format>` filters the registry, for example `ctio list --from pdf --to excel --format pretty`. Then `ctio describe <type> --format pretty` shows every option of that converter with its allowed values and default.
ctio printed a "warning:" line but the conversion succeeded
The API ignored an option it does not support for that converter, or replaced an unsupported value with the default, and the conversion ran anyway. The result is not what you asked for: check the option name and value with `ctio describe <type>` and run it again.
Need Help?
ctio is open source under MIT. Source and issue tracker on GitHub.
Looking for in-editor integration? MCP server and Claude Code plugin cover that flow.
Stuck? Contact us and we will help you get set up.
Try ctio v0.5.2
Single binary, no runtime to install, works wherever you have a shell.
# Windowsscoop bucket add conversiontools https://github.com/conversiontools/scoop-bucketscoop install ctio# macOS / Linuxbrew install conversiontools/tap/ctio