Generate or edit images and generate videos through the APIKO API (Nano Banana, GPT Image, Seedream, Wan 3.0, Seedance). Use when the user asks to create an image, edit or combine photos, make a video from text, an image or reference clips, or call APIKO image/video models from code. Handles async submit, polling, local reference uploads, cost checks and saving the result.
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Create images and videos with models served by APIKO (https://apiko.app/) through one API key. Jobs run asynchronously: they take from about 20 seconds to over 10 minutes, so this skill submits the job, polls it, and saves the file. The bundled script scripts/apiko_media.py does all of that with the Python standard library only.
| Need | Model id |
|---|---|
| Edit or combine photos | nano-banana-2.1 (default), nano-banana-pro |
| Text to image, posters, text rendering | gpt-image-2.5-sunburst (default), gpt-image-2.5-flare, gpt-image-2 |
| Text or image to video | wan3.0-text-to-video, wan3.0-image-to-video, seedance-2.5, seedance-2.0-fast |
| Video from reference images and clips | wan3.0-reference-video, wan3.0-prime-reference-video |
1k/2k/4k on Nano Banana, size ratio on GPT Image), and for videos duration (seconds), resolution (480p/720p/1080p) and aspect_ratio.APIKO_API_KEY from the environment. If it is not set, ask the user to create a key at https://apiko.app/ and export APIKO_API_KEY=... themselves. Never ask them to paste the key into the chat, and never print it or write it into a file.# Text to image
python3 scripts/apiko_media.py image --model gpt-image-2.5-sunburst \
--prompt "<user prompt>" --size 16:9 -o poster.png
# Edit or combine photos (local files are uploaded automatically; https URLs are passed through)
python3 scripts/apiko_media.py image --model nano-banana-2.1 \
--prompt "<user prompt>" --image ./product.jpg --resolution 2k -o product-studio.png
# Video from a reference image and a reference clip
python3 scripts/apiko_media.py video --model wan3.0-reference-video \
--prompt "Image 1 walks along the beach in the style of Video 1" \
--ref-image ./character.png --ref-video https://example.com/style-3s.mp4 \
--duration 5 --resolution 720p --aspect-ratio adaptive -o beach.mp4Progress goes to stderr. On success the script prints one JSON line with task_id, file and url.
If the script is not available, use plain HTTP: POST https://api.apiko.app/v1/images/generations, /v1/images/edits or /v1/videos with "async": true for images, then poll GET https://api.apiko.app/v1/tasks/{id} every 5–10 seconds until status is completed or failed, and download data[0].url. Send the header Authorization: Bearer $APIKO_API_KEY.
python3 scripts/apiko_media.py status <task_id> -o <file>.fail_reason. Unreachable reference URLs and content refusals are the usual causes; fix the input before retrying.HTTP 400: a field is invalid (prompt too long, unsupported size, too many seconds of reference video). Nothing was billed; fix the request.HTTP 401 / invalid key: the key is wrong or deleted. Ask the user to check it in the APIKO console.HTTP 503 with model_not_found: the model id is wrong. Check https://apiko.app/models for the exact id.npx -y apiko-mcp, https://apiko.app/mcp) offers the same pricing, generation and task tracking as tools.