Node SDK Intents: CLI commands for common tasks
The Node SDK now ships with Intent commands: high-level CLI commands for common Transloadit tasks. These commands make it much easier to reach for Transloadit for one-off jobs, without first writing Assembly Instructions JSON by hand.
The examples below use the current @transloadit/node package name.
The CLI binary is still called transloadit; the older transloadit npm package remains a compatibility
alias. See the Node SDK documentation for installation and authentication.
The idea of outfitting our Node SDK with some command-line convenience grew out of a practical problem on our side. When we are building lasting integrations, JSON Instructions and reusable Templates are exactly the right abstraction. They are expressive, stable, and well suited to custom, multi-step workflows. For quick command-line jobs, though, they can feel like overhead.
In my own day to day as a co-founder, I realized I wasn’t reaching for Transloadit when I wanted to quickly convert a Markdown file to PDF, even though we have a very capable service for precisely that.
So I started to wonder what an integration should be able to do in order for me to reach for it. I wrote down the commands I wanted to use, and then worked my way back to an implementation. We’re calling it: Intents.
Intents live in our Node SDK’s CLI as an extra, high-level abstraction layer on top of our primitives like Robots, Assemblies, and Builtin Templates.
Where the CLI previously gave you raw access to these primitives, the new Intents layer is not
organized around our internals, but around your one-off use case – with guessable commands such as
markdown pdf, markdown docx, image remove-background, image generate, and image describe.
Run one-off jobs from the CLI
If your TRANSLOADIT_KEY and TRANSLOADIT_SECRET credentials are available in the shell, in a
local .env, or in ~/.transloadit/credentials, you can now run:
npx -y @transloadit/node markdown pdf --input ./README.md --print-urls
And get a table like this, with your actual temporary result URL in the final column:
STEP NAME URL
convert README.pdf https://example.com/README.pdf
That means you can use Transloadit as a practical CLI tool for quick jobs, rather than exclusively as an embedded back-end integration.
Use high-level commands instead of JSON for common tasks
Intents cover common workflows with short, predictable command names. A few examples:
npx -y @transloadit/node image remove-background --input ./photo.jpg --print-urls
npx -y @transloadit/node image generate --prompt "A red bicycle in a studio" --output bicycle.png
npx -y @transloadit/node image describe --input ./hero.jpg --for wordpress --output fields.json
npx -y @transloadit/node markdown docx --input ./plan.md --output plan.docx
Or how about input-guided image generation:
npx -y @transloadit/node image generate \
--input ./person1.jpg \
--input ./person2.jpg \
--input ./background.jpg \
--prompt "Place person1.jpg feeding person2.jpg in front of background.jpg" \
--output scene.png
For the full reference, see the Intent Commands reference on GitHub or the Node SDK docs.
Convenience as the most important design principle
Intents try to settle on useful defaults. At this update, image generate defaults to
google/nano-banana-2; you can select a supported alternative explicitly with --model.
Run npx -y @transloadit/node image generate --help to inspect the installed command's options
instead of treating this article as a permanent model catalog.
Model defaults can change between releases. For a repeatable integration, pin the SDK version in your project's dependencies and choose a model deliberately, then validate its output for your use case.
For a predictable output location, specify --output. If you omit it, the CLI infers a path from
the command and its inputs; the Intent Commands reference documents the details. Use --print-urls
alone when you want temporary result URLs without downloading the files locally.
For readability, I’m using longform --output in this post, but naturally there are quick aliases
like -o as well.
Use Intents for quick jobs, and JSON for custom workflows
Intents are not a replacement for Transloadit’s lower-level model. JSON Instructions remain the right long-term abstraction for integrated media pipelines. They let you build flows tailored to your use case, and they are intended to be saved as Templates and reused many times in production via our SDKs.
But when you’re a command line warrior (or maybe your agent is), with a quick need to process some media, this may be just the thing.
And remember, even if your CLI need outgrows Intents, our CLI still supports
npx -y @transloadit/node assemblies create, so you can eject into building your own media pipelines
anytime you want.
Try it
For interactive use, start with npx -y @transloadit/node auth login and follow the
Node SDK setup. For automation, use a separate, appropriately scoped
Auth Key and Auth Secret supplied through your secret manager as TRANSLOADIT_KEY and
TRANSLOADIT_SECRET, following the SDK's deployment guidance.
These API credentials authenticate requests to Transloadit; they are not the Template Credentials
used to access a storage provider. Keep the Auth Secret out of browser
code and source control. Then inspect the available commands:
npx -y @transloadit/node --help
Optionally, if you want to help your agent (Cursor, Codex, Claude Code, etc.) find these Intents and give it media processing superpowers, you can install our skills globally via:
npx -y skills add https://github.com/transloadit/skills -g --all --copy
I hope you’ll have a much easier time creating and managing media files with this. Do let me know in the issue tracker on GitHub if it lacks a feature, or if it could be even more convenient.
