5.1 KiB
name, description, version, author, license, platforms, metadata, prerequisites
| name | description | version | author | license | platforms | metadata | prerequisites | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| apikey-image-gen | Generate or edit images through Hermes Web UI using the active profile's fun-codex provider from config.yaml. | 1.0.0 | Ekko | MIT |
|
|
|
APIKEY Image Generation
Use this skill when the user wants to generate an image, generate an image from a reference image, or edit an existing image.
Always call Hermes Web UI's media endpoint. Do not call api.apikey.fun directly, and do not ask the user for an API key. The server reads the active profile's config.yaml and uses the custom_providers entry named fun-codex:
custom_providers:
- name: fun-codex
base_url: https://api.apikey.fun/v1
api_key: ...
model: gpt-5.5
api_mode: codex_responses
Endpoint:
POST <Hermes Web UI base URL>/api/hermes/media/apikey-image-generate
Resolve the Hermes Web UI base URL in this order:
HERMES_WEB_UI_URLenvironment variable, if set.http://127.0.0.1:${PORT}, ifPORTis set.http://127.0.0.1:8648for local development.
When Hermes Web UI is running from Docker Compose, the default external URL is http://127.0.0.1:6060.
Authentication:
Send the Hermes Web UI bearer token.
Resolve the token in this order:
AUTH_TOKENenvironment variable, if set.${HERMES_WEB_UI_HOME}/.token, ifHERMES_WEB_UI_HOMEis set.${HERMES_WEBUI_STATE_DIR}/.token, ifHERMES_WEBUI_STATE_DIRis set.~/.hermes-web-ui/.token.
Modes
Text To Image
Use when there is no input image.
{
"mode": "text",
"prompt": "A high quality product image of a matte black mechanical keyboard on a clean desk",
"size": "1024x1024",
"output_path": "/absolute/path/to/output.png"
}
The server calls POST /v1/images/generations against the fun-codex base URL.
Image To Image
Use when the user provides a reference image and wants a new image based on it.
{
"mode": "image",
"prompt": "Use this reference composition and generate a refined technology brand poster",
"image_path": "/absolute/path/to/reference.png",
"size": "1024x1024",
"output_path": "/absolute/path/to/output.png"
}
The server calls POST /v1/responses against the fun-codex base URL.
Image Edit
Use when the user wants to modify an existing image while preserving parts of it.
{
"mode": "edit",
"prompt": "Change the background to blue and keep the subject unchanged",
"image_path": "/absolute/path/to/source.png",
"size": "1024x1024",
"output_path": "/absolute/path/to/edited.png"
}
The server calls POST /v1/images/edits against the fun-codex base URL.
Request Fields
mode:text,image, oredit.prompt: required.image_path: local png, jpeg, or webp path. Required forimageandeditunless usingimage_urlorimage_base64.image_url: optional alternative image input.image_base64: optional alternative image input. If it is not a data URI, includemime_type.n: number of images. Defaults to1.size: defaults to1024x1024. Common values:1024x1024,1536x1024,1024x1536,2048x2048,3840x2160,2160x3840,auto.quality: defaults toauto.model: optional override. Text/edit default togpt-image-2; image mode defaults to thefun-codexmodel inconfig.yaml.image_model: optional image tool model for image mode. Defaults togpt-image-2.output_path: optional absolute output file path. If omitted, the server saves to${HERMES_WEB_UI_HOME:-~/.hermes-web-ui}/media/*.png.timeout_ms: defaults to600000.
Curl Template
TOKEN="${AUTH_TOKEN:-}"
if [ -z "$TOKEN" ] && [ -n "${HERMES_WEB_UI_HOME:-}" ] && [ -f "$HERMES_WEB_UI_HOME/.token" ]; then
TOKEN="$(cat "$HERMES_WEB_UI_HOME/.token")"
fi
if [ -z "$TOKEN" ] && [ -n "${HERMES_WEBUI_STATE_DIR:-}" ] && [ -f "$HERMES_WEBUI_STATE_DIR/.token" ]; then
TOKEN="$(cat "$HERMES_WEBUI_STATE_DIR/.token")"
fi
if [ -z "$TOKEN" ] && [ -f "$HOME/.hermes-web-ui/.token" ]; then
TOKEN="$(cat "$HOME/.hermes-web-ui/.token")"
fi
if [ -z "$TOKEN" ]; then
echo "Missing Hermes Web UI token. Check AUTH_TOKEN, HERMES_WEB_UI_HOME, HERMES_WEBUI_STATE_DIR, or ~/.hermes-web-ui/.token." >&2
exit 1
fi
BASE_URL="${HERMES_WEB_UI_URL:-}"
if [ -z "$BASE_URL" ]; then
BASE_URL="http://127.0.0.1:${PORT:-8648}"
fi
BASE_URL="${BASE_URL%/}"
curl -sS -X POST "$BASE_URL/api/hermes/media/apikey-image-generate" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"mode": "text",
"prompt": "A cinematic 4K photo of a silver robot hand holding a small glowing cube",
"size": "3840x2160",
"output_path": "/absolute/path/to/output.png"
}'
Successful responses include:
{
"ok": true,
"mode": "text",
"output_paths": ["/absolute/path/to/output.png"],
"provider": "fun-codex",
"base_url": "https://api.apikey.fun/v1"
}
If the response code is missing_fun_codex_provider, tell the user to configure fun-codex in the active profile's config.yaml.