CLI & API

CLI & API Guide

Configure and call ModKie capabilities via CLI or HTTP API.

Call registered capabilities through the site API — no direct provider keys required. Image generation, video generation, and stock material search are supported via API Key.

Recommended reading order

  1. This page (configuration and API fields)
  2. Image generation (commands, presets, examples)
  3. Video generation (scenes, models, async polling)
  4. Material search (Pexels/Pixabay stock footage)
  5. Live schema: GET https://modkie.com/api/actions/{capabilityId}/schema

All external automation uses Authorization: Bearer sk-xxx against /api/actions/*.

Quick start (HTTP)

  1. Create an API key at Settings → API Keys (sk-...)
  2. Generate an image:
curl -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -X POST https://modkie.com/api/actions/ai.image.generate_and_wait \
  -d '{"preset":"logo","prompt":"minimal tech logo"}'
  1. Discover capabilities: GET https://modkie.com/api/actions

CLI setup

The CLI ships inside the project repo (not a separate npm package). Clone the repo, then:

pnpm ads login --host https://modkie.com --api-key sk-xxxxxxxx
pnpm ads image generate --preset logo --prompt "minimal tech logo" --out ./logo.png --json

Or use environment variables:

ADS_HOST=https://modkie.com
ADS_API_KEY=sk-xxxxxxxx

Config priority: ADS_HOST + ADS_API_KEY env vars override ~/.adsgency/config.json.

Authentication

Authorization: Bearer sk-xxxxxxxx

Or:

X-Api-Key: sk-xxxxxxxx

CLI commands

CommandDescription
ads login --host <url> --api-key <sk-xxx>Save config to ~/.adsgency/config.json
ads config getShow host (apiKey masked)
ads actions listList capabilities
ads actions schema <id>Show input schema
ads image generate ...Generate image and wait
ads image query --task-id <uuid>Poll an image task
ads video generate ...Generate video and wait
ads video query --task-id <uuid>Poll a video task
ads material queries --script "..."LLM search terms from script
ads material search --queries "a,b"Search Pexels/Pixabay
ads material import --file materials.jsonImport selected clips
ads material auto --script "..."Script → search → import

See topic pages: Image · Video · Materials.

Image input fields

Shared by ai.image.generate and ai.image.generate_and_wait (timeoutMs only on generate_and_wait):

FieldTypeRequiredCLI flagNotes
promptstringyes--promptImage description
presetenumno--presetlogo, web-hero, web-section, og-image
sceneenumno--scenetext-to-image, image-to-image
providerstringno--providerDefault kie
modelstringno--modelOverride default model
aspectRatiostringno--aspecte.g. 16:9, 1:1
resolutionenumno--resolution2k, 4k
timeoutMsnumberno--timeoutDefault 180000
imageInputstring[]noReference URLs (API only)
optionsobjectnoProvider passthrough (API only)
workspaceIdstringnoCreative workspace (API only)

Video input fields

Shared by ai.video.generate and ai.video.generate_and_wait:

FieldTypeRequiredCLI flagNotes
promptstringyes--promptVideo description
sceneenumno--scenetext-to-video, image-to-video, video-to-video, ad-video
providerstringno--providerDefault kie
modelstringno--modelDefault bytedance/seedance-2-mini for text-to-video
imageInputstring[]no--image-inputComma-separated URLs
videoInputstring[]no--video-inputComma-separated URLs
timeoutMsnumberno--timeoutDefault 600000
optionsobjectnoProvider passthrough (API only)

Material search capabilities

CapabilityPurpose
media.materials.queriesLLM query terms from script
media.materials.searchSearch stock footage
media.materials.importDownload and store clips
media.materials.autoEnd-to-end script → import

API responses

Success:

{
  "ok": true,
  "data": {},
  "meta": {
    "capabilityId": "ai.image.generate_and_wait",
    "execution": "sync"
  }
}

Error:

{
  "ok": false,
  "error": {
    "code": "EXECUTION_FAILED",
    "message": "human-readable message"
  }
}

Common errors

SymptomLikely causeFix
HTTP 401Missing or invalid API keyCheck API Keys
Insufficient creditsLow account balanceTop up credits
Provider / kie_api_key errorsAI not configured server-sideAdmin → Settings → AI
Upload failuresStorage not configuredConfigure object storage before --upload
Material search failuresbackend_media unavailableCheck media service configuration

Architecture

  • CLI and HTTP clients call /api/actions/* only — not Kie/Fal/Pexels directly
  • Same business logic as the web UI (/api/ai/generate, /api/media/materials/*)