Spend your OpenArt credits programmatically. Generate videos with Seedance, Kling, Veo and more from the terminal.
Learn more at Openart.
Printed by @mvanhorn (Matt Van Horn).
The recommended path installs both the openart-pp-cli binary and the pp-openart agent skill in one shot:
npx -y @mvanhorn/printing-press install openartFor CLI only (no skill):
npx -y @mvanhorn/printing-press install openart --cli-onlyThe generated install path is category-agnostic until this CLI is published. If npx is not available before publish, install Node or use the category-specific Go fallback from the public-library entry after publish.
Download a pre-built binary for your platform from the latest release. On macOS, clear the Gatekeeper quarantine: xattr -d com.apple.quarantine <binary>. On Unix, mark it executable: chmod +x <binary>.
From the Hermes CLI:
hermes skills install mvanhorn/printing-press-library/cli-skills/pp-openart --forceInside a Hermes chat session:
/skills install mvanhorn/printing-press-library/cli-skills/pp-openart --forceTell your OpenClaw agent (copy this):
Install the pp-openart skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-openart. The skill defines how its required CLI can be installed.
See Install above.
This CLI uses your browser session for authentication. Log in to in Chrome, then:
openart-pp-cli auth login --chromeRequires a cookie extraction tool. Install one:
pip install pycookiecheat # Python (recommended)
brew install barnardb/cookies/cookies # HomebrewWhen your session expires, run auth login --chrome again.
openart-pp-cli doctorThis checks your configuration and credentials.
openart-pp-cli history mock-valueThese capabilities aren't available in any other tool for this API.
-
video gen— Submit + poll + download videos in one command (Seedance, Kling, Veo, Wan, Grok Imagine).openart-pp-cli video gen --prompt "a phoenix" --model byte-plus-seedance-2 --duration 10 --count 2 --wait --download ./out/ -
image gen— Submit + poll + download images in one command. The Nano Banana family has two variants:nano-banana(50 credits, verified end-to-end) andnano-banana-pro(120 credits, higher quality, gated as experimental). There is nonano-banana-2— Pro is the upgrade path. The other image models (gpt-image-2,gpt-image-1-5,flux-2-pro,byte-plus-seedream-4,byte-plus-seedream-4-5,google-imagen-4,qwen-image-max) are also gated as--accept-experimental(their submit shapes were inferred from the JS bundle but not individually exercised live). Runopenart-pp-cli models list --family imageto see slugs, costs, and theexperimentalflag before picking.# verified, cheapest path openart-pp-cli image gen --prompt "donkey on Mercer Island" --model nano-banana --count 2 --wait --download ./out/ # higher-quality Pro variant — opt in with --accept-experimental openart-pp-cli image gen --prompt "donkey on Mercer Island" --model nano-banana-pro --count 2 --accept-experimental --wait --download ./out/
-
video gen --no-audio— Disables Seedance's auto-generated audio track. Workaround forOutputAudioSensitiveContentDetectedmoderation failures, and also halves the cost on Seedance 2.0 normal mode.openart-pp-cli video gen --prompt "..." --model seedance2 --no-audio --wait
-
cost estimate— Project the credit cost of a generation before you spend.Use before any batch submit to avoid burning credits on a misconfigured run.
openart-pp-cli cost estimate --model byte-plus-seedance-2 --duration 10 --count 4 --agent
-
credits burn— Aggregate credit spend by model, tool, day, or project.Answers 'where did my credits go?' so you can shift work to cheaper models.
openart-pp-cli credits burn --since 7d --by model --agent
-
credits forecast— Project how many weeks of runway your current balance gives at recent burn.Surfaces 'this paid plan covers another 6 weeks' so you can decide when to top up or slow down.
openart-pp-cli credits forecast --agent
-
models cheapest— Find the cheapest model that satisfies a target shape (type/duration/resolution/features).Lets agents try a prompt on Grok Imagine for 150 credits before committing to Seedance 2's 800.
openart-pp-cli models cheapest --type video --duration 10 --resolution 720p --agent
-
compare— Run one prompt across multiple models in parallel; return a side-by-side report with cost and URLs.Decide which model deserves the long Seedance shoot before committing.
openart-pp-cli compare --prompt "a phoenix in molten gold" --models byte-plus-seedance-2,kling2-6,grok-imagine --duration 5 --agent
-
prompts replay— Re-run a past generation, optionally on a different model, with parameter bumps.Iterate on past wins without retyping prompts; A/B test models cheaply.
openart-pp-cli prompts replay 3dVHEhDjyq82gLwBudaG --model byte-plus-seedance-2 --bump duration=10 --agent
-
prompts find— Full-text search prior generations by prompt text with OpenArt-specific filters (model, audio, duration, starred, since).Recover the prompt you wrote three weeks ago instead of paying to recreate it.
openart-pp-cli prompts find "molten dragon" --model byte-plus-seedance-2 --has-audio --since 30d --agent -
prompts top— Rank past prompts by total credit spend over a window.Surface 'I have spent 8k credits iterating this dragon prompt' before iterating again.
openart-pp-cli prompts top --since 30d --by spend --agent
-
stats— One-shot stats over the local media library: counts per type/model/period and rolling spend.A 'where am I' snapshot for both human users and agents starting a session.
openart-pp-cli stats --since 30d --agent
Run openart-pp-cli --help for the full command reference and flag list.
Credit balance and ledger
openart-pp-cli credits logs- Get the credit ledger (CONSUME, RECHARGE, REFUND entries)
Generation forms (submit a video, image, lipsync, motion-sync, etc.)
openart-pp-cli forms submit- Submit a generation. capability_id is ':' URL-encoded (e.g. 'byte-plus-seedance-2:text2video'). Returns historyId + resourceIds; poll resources/ until status='completed'.
Generation history (submissions)
openart-pp-cli history get- Get a generation history entry by ID. Includes capability_id and the original input.
Generation history and uploaded media
openart-pp-cli media get- Get a single resource by ID. Use this to poll a generation in progress until status='completed' and url is populated.openart-pp-cli media list- List generated and uploaded resources (videos, images, audio) in the active project
Projects within a workspace
openart-pp-cli project default- Get the default project ID for the active workspaceopenart-pp-cli project folders- List folders inside a projectopenart-pp-cli project list- List projects in the active workspace
Prompt utilities (auto-polish, reverse from image)
openart-pp-cli prompt enhance- Auto-polish a prompt (LLM rewrite for better generation)openart-pp-cli prompt from_image- Reverse: extract a suggested prompt from an image URL
Saved generation templates
openart-pp-cli templates list- List saved templates
Upload reference images for image-to-video and other ref-based forms
openart-pp-cli upload list- List uploaded reference imagesopenart-pp-cli upload persist- Persist an uploaded image as a referencable assetopenart-pp-cli upload sign- Get a signed upload URL for a new reference image
User identity, workspace, and credit balance
openart-pp-cli user current_workspace- Get the active workspace for this sessionopenart-pp-cli user info- Get current user identity, subscription, and credit balanceopenart-pp-cli user last_active- Heartbeat the active sessionopenart-pp-cli user settings- Get user settings
Workspaces and team membership
openart-pp-cli workspace list- List workspaces this user can accessopenart-pp-cli workspace members- List members of the active workspace
# Human-readable table (default in terminal, JSON when piped)
openart-pp-cli history mock-value
# JSON for scripting and agents
openart-pp-cli history mock-value --json
# Filter to specific fields
openart-pp-cli history mock-value --json --select id,name,status
# Dry run — show the request without sending
openart-pp-cli history mock-value --dry-run
# Agent mode — JSON + compact + no prompts in one flag
openart-pp-cli history mock-value --agentThis CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--jsonoutput to stdout, errors to stderr - Filterable -
--select id,namereturns only fields you need - Previewable -
--dry-runshows the request without sending - Explicit retries - add
--idempotentto create retries when a no-op success is acceptable - Confirmable -
--yesfor explicit confirmation of destructive actions - Piped input - write commands can accept structured input when their help lists
--stdin - Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendlyis set
Exit codes: 0 success, 2 usage error, 3 not found, 4 auth error, 5 API error, 7 rate limited, 10 config error.
Install the focused skill — it auto-installs the CLI on first invocation:
npx skills add mvanhorn/printing-press-library/cli-skills/pp-openart -gThen invoke /pp-openart <query> in Claude Code. The skill is the most efficient path — Claude Code drives the CLI directly without an MCP server in the middle.
Use as an MCP server in Claude Code (advanced)
If you'd rather register this CLI as an MCP server in Claude Code, install the MCP binary first:
Install the MCP binary from this CLI's published public-library entry or pre-built release.
Then register it:
# Some tools work without auth. For full access, set up auth first:
openart-pp-cli auth login --chrome
claude mcp add openart openart-pp-mcpThis CLI ships an MCPB bundle — Claude Desktop's standard format for one-click MCP extension installs (no JSON config required).
The bundle reuses your local browser session — set it up first if you haven't:
openart-pp-cli auth login --chromeTo install:
- Download the
.mcpbfor your platform from the latest release. - Double-click the
.mcpbfile. Claude Desktop opens and walks you through the install.
Requires Claude Desktop 1.0.0 or later. Pre-built bundles ship for macOS Apple Silicon (darwin-arm64) and Windows (amd64, arm64); for other platforms, use the manual config below.
Manual JSON config (advanced)
If you can't use the MCPB bundle (older Claude Desktop, unsupported platform), install the MCP binary and configure it manually.
Install the MCP binary from this CLI's published public-library entry or pre-built release.
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"openart": {
"command": "openart-pp-mcp"
}
}
}openart-pp-cli doctorVerifies configuration, credentials, and connectivity to the API.
Config file: ~/.config/openart-pp-cli/config.toml
Static request headers can be configured under headers; per-command header overrides take precedence.
Authentication errors (exit code 4)
- Run
openart-pp-cli doctorto check credentials Not found errors (exit code 3) - Check the resource ID is correct
- Run the
listcommand to see available items
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
This CLI was generated with browser-captured traffic analysis.
- Capture coverage: 0 API entries from 0 total network entries
- Reachability: browser_clearance_http (0% confidence)
Generated by CLI Printing Press