The runapi CLI is the universal execution layer for every RunAPI model that
ships a CLI service. Use it whenever an agent needs to run a one-off model task,
pass a JSON request body, wait for an async task, or script RunAPI from a
terminal, server, or CI job.
| Target | Command | |
|---|---|---|
| --- | --- | |
| macOS / Linux (interactive) | brew install runapi-ai/tap/runapi | |
| Server / CI (headless) | `curl -fsSL https://runapi.ai/cli/install.sh \ | sh` |
| Pin a specific version | `curl -fsSL https://runapi.ai/cli/install.sh \ | sh -s -- --version v0.1.0` |
The installer detects OS and architecture (Linux and macOS, amd64 and arm64), verifies a SHA-256 checksum from https://runapi.ai/cli/latest.json, and refuses to write the binary if verification fails.
| Source | How | |
|---|---|---|
| --- | --- | |
| Browser login (interactive) | runapi login | |
| Environment | export RUNAPI_API_KEY= | |
| Saved config (recommended for servers) | `printf '%s' "$KEY" \ | runapi auth import-token --token - (writes ~/.config/runapi/config.json` with mode 0600) |
RUNAPI_BASE_URL overrides the default base URL. Check the current state with runapi auth status.
Avoid runapi auth import-token --token "$KEY" directly — the value would be visible in ps -ef on shared hosts. Use stdin (--token -) or RUNAPI_API_KEY in the environment.
The CLI is JSON-first: every service exposes typed actions, and each action
documents its request fields through --help. Always inspect before composing a
request instead of guessing flags.
runapi --help
runapi suno --help
runapi suno text-to-music --help
Pass the request body as JSON through --input-file (or --input for inline
JSON, or - for stdin). The default flow is synchronous and polls until the
task completes.
# Synchronous: submit and poll until done
runapi suno text-to-music --input-file request.json
# Asynchronous: submit and return immediately, then poll separately
runapi suno text-to-music --async --input-file request.json
runapi wait <task-id> --service suno --action text-to-music
# Inspect a task without waiting
runapi get <task-id> --service suno --action text-to-music
JSON responses go to stdout; progress lines go to stderr. Pipe to jq for downstream parsing.
runapi account info
runapi account balance
runapi agent install-skill --target claude # ~/.claude/skills/runapi-cli/
runapi agent install-skill --target codex # ~/.codex/skills/runapi-cli/
runapi agent install-skill --target gemini # ~/.gemini/skills/runapi-cli/
runapi agent install-skill --target openclaw # ~/.openclaw/skills/runapi-cli/
runapi agent list-targets # JSON list with resolved paths
runapi agent install-skill --target-dir <path> # custom location
RUNAPI_API_KEY or runapi auth import-token instead.--async plus a wait loop so the agent can release the shell promptly.共 1 个版本