🇺🇸 English. Leia em português: README.pt-BR.md.
Single skill bundle that teaches AI coding agents how to drive PiAPI — Midjourney, Flux, Kling, Luma, Hailuo, Veo 3, Suno, Hunyuan, Faceswap, Trellis 3D, MMAudio, F5-TTS, Gemini Nano Banana, Seedance 2, plus the OpenAI-compatible LLM proxy — through one CLI.
Not affiliated with PiAPI. "PiAPI" is a trademark of its respective owner.
▶︎ Full MP4 · Cover · Per-scene stills · Source (Remotion)
A 9-scene animated walkthrough — install, configure PIAPI_API_KEY, CLI
tour, model catalog, async submit/poll/result flow, and per-agent skill
paths. Built with Remotion; edit and re-render
from presentation/remotion-tutorial/.
![]() 1. Intro |
![]() 2. What is it |
![]() 3. Install |
![]() 4. Configure |
![]() 5. CLI tour |
![]() 6. Models |
![]() 7. Workflow |
![]() 8. Agents |
![]() 9. Outro |
curl -fsSL https://raw.githubusercontent.com/wesleysimplicio/PiAPI-Skills/master/install.sh | bashOr clone and run:
git clone https://github.com/wesleysimplicio/PiAPI-Skills.git
cd PiAPI-Skills
./install.shFlags:
./install.sh --yes # non-interactive
./install.sh --agents claude,codex,hermes # install only listed agents
./install.sh --uninstall # remove CLI + agent skillsThe installer:
- Provisions a Python 3.10+ virtualenv at
~/.local/share/piapi-skill/venvand installsrequests. - Drops
piapi-cliinto~/.local/bin(add toPATHif missing). - Copies the appropriate
SKILL.mdinto each detected agent skill root.
Agent skill paths the installer writes to:
| Agent | Path |
|---|---|
| Claude Code | ~/.claude/skills/piapi/SKILL.md |
| Codex | ~/.codex/skills/piapi/SKILL.md |
| Hermes | ~/.hermes/skills/creative/piapi/SKILL.md |
| OpenClaw | ~/.openclaw/skills/piapi/SKILL.md |
| Cursor | ~/.cursor/skills/piapi/SKILL.md |
| Windsurf | ~/.windsurf/skills/piapi/SKILL.md |
| Generic | ~/.config/agents/skills/piapi/SKILL.md |
Set the API key from https://piapi.ai/workspace/key:
export PIAPI_API_KEY="<your key>"
# optional, only if you receive webhooks:
export PIAPI_WEBHOOK_SECRET="<your shared secret>"Persist in your shell rc (~/.zshrc, ~/.bashrc).
piapi-cli --help # subcommand list
piapi-cli models # list known model · task_type pairs
piapi-cli imagine "studio portrait, calico cat" --aspect 1:1 # Midjourney imagine
piapi-cli flux "cyberpunk alley at night" # Flux schnell txt2img
piapi-cli kling --image-url https://… --prompt "slow zoom" # Kling image2video
piapi-cli suno --prompt "lofi piano under rain" # Suno music
piapi-cli faceswap --target-image https://… --swap-image … # Faceswap (image)
piapi-cli submit --model <m> --task-type <t> --input '{...}' # generic submit
piapi-cli wait <task_id> # poll until terminal
piapi-cli result <task_id> # fetch one snapshot
piapi-cli cancel <task_id> # cancel pending only
piapi-cli run --model <m> --task-type <t> --input '{...}' # submit + wait + print
piapi-cli llm --model gpt-4o-mini --message 'user:Hi' # sync chat completion
piapi-cli verify-webhook --header-secret X --expected Y # constant-time compareAdd --webhook-url and --webhook-secret to any submit-style command to
register a callback.
| File | What it covers |
|---|---|
examples/01-text-to-image-flux.md |
Flux txt2img — shell, raw envelope, Python. |
examples/02-midjourney-imagine-upscale.md |
Two-step imagine + upscale, Staged status, process_mode. |
examples/03-kling-image-to-video.md |
Kling image2video / text2video / extend with mode + duration. |
examples/04-suno-music.md |
Suno generate_music + custom + extend + concat + add_lyrics. |
examples/05-faceswap.md |
Image, multi-face, video faceswap; target_index zero-based. |
examples/06-hunyuan-video.md |
Hunyuan txt2video-lora + img2video-lora; LoRA URL + strength. |
examples/07-llm-chat.md |
Sync OpenAI-compatible LLM, streaming, OpenAI SDK base_url override. |
examples/08-webhooks.md |
Flask + Express receivers, constant-time secret check, retry policy. |
| File | Topic |
|---|---|
references/rest-api.md |
Submit / fetch / cancel envelopes, headers, status drift, polling. |
references/models.md |
Per-family model + task_type + input keys for every supported family. |
references/errors.md |
HTTP status interpretation + per-model gotchas + CLI errors. |
references/webhooks.md |
No-HMAC verification pattern, retry policy, recovery via polling. |
references/rate-limits.md |
Free/Creator/Pro/Enterprise tier table + concurrency planning. |
| Family | model |
Common task_type |
Status casing |
|---|---|---|---|
| Midjourney | midjourney |
imagine, upscale, variation, inpaint, describe, blend |
Capitalized |
| Flux | Qubico/flux1-schnell, Qubico/flux1-dev, Qubico/flux1-dev-advanced |
txt2img, img2img, inpaint, controlnet-lora, redux-variation |
lowercase |
| Gemini | gemini |
nano-banana-text-to-image, nano-banana-edit |
lowercase |
| Kling | kling |
text2video, image2video, extend, lipsync, effects |
Capitalized |
| Luma | luma |
text2video, image2video, extend |
lowercase |
| Hailuo | hailuo |
text2video, image2video, subject2video |
lowercase |
| Veo 3 | veo3 |
txt2vid, img2vid |
lowercase |
| Seedance 2 | seedance |
text-to-video, image-to-video |
lowercase |
| Hunyuan | Qubico/hunyuan |
txt2video-lora, img2video-lora |
lowercase |
| Suno | music-u |
generate_music, generate_music_custom, extend, concat, add_lyrics |
lowercase |
| MMAudio | Qubico/mmaudio |
video2audio |
lowercase |
| F5-TTS | Qubico/f5-tts |
txt2speech |
lowercase |
| Trellis | Qubico/trellis |
image-to-3d |
lowercase |
| Faceswap (image) | Qubico/image-toolkit |
face-swap, multi-face-swap |
Capitalized |
| Faceswap (video) | Qubico/video-toolkit |
face-swap |
Capitalized |
| LLM | OpenAI-style model (gpt-4o-mini, claude-3-5-sonnet, etc.) |
n/a (sync /v1/chat/completions) |
n/a |
Lowercase before comparing. Staged (Midjourney) is not terminal —
follow up with upscale / variation. Treat
completed | complete | success | succeeded as terminal-success and
failed | failure | error | canceled | cancelled | rejected as
terminal-failure.
PiAPI does not sign payloads with HMAC. The secret you registered on
the task is echoed in the x-webhook-secret request header. Constant-time
compare against your stored secret.
Retry policy: every 5s, up to 3 attempts on any non-2xx. After three
failures, recover by polling piapi-cli result <task_id>.
PRs welcome — see CONTRIBUTING.md and the
CODE_OF_CONDUCT.md.
MIT — see LICENSE and NOTICE for attribution
caveats and trademark disclaimers.








