Install any skill in seconds. Free to start, no credit card required.
Get Started Free →gooseworks-ai/create-image-gpt-image-fal
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's `gpt_image_2`) and gpt-image-2 (`openai/gpt-image-2`, custom output sizes up to 3840px). Routes to text-to-image or the edit variant depending on whether a reference image is provided.
Passed 10 of 15 test cases with the skill, and 5 of 15 without it.
and 8 more in the full report
9 fixed6 passed either way6 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
One of 8 test cases the skill fixed. Same model, same prompt, with and without the skill.
We requested a huge resolution `--image-size 4000x4000` with model gpt-image-2. What upper limit will the generation script apply?
| Checked | Without skill | With skill |
|---|---|---|
| States the maximum dimension is capped at 3840 pixels | Missed | Passed |
The instructions your model reads when the skill loads.
Generate one image via fal.ai's OpenAI gpt-image endpoints. Two model families are supported through a single --model flag:
gpt-image-1 (default) — fal-ai/gpt-image-1. The FAL fallback for Higgsfield's gpt_image_2. Fixed output sizes only. Used by:
video-orchestrator/lock-character Phase 0 (anchor portrait) and Phase 1 (angle keyframes via /edit)video-orchestrator/create-clips Phase 1 for photoreal scenesgenerate_with_fallback.py router on Higgsfield failuregpt-image-2 — openai/gpt-image-2. The newer model; accepts custom output sizes (any multiple of 16, up to 3840px) and renders dense text/layouts well. Used for designed sheets such as ad storyboards (create-storyboard-sheets-fal).The default stays gpt-image-1 so existing callers and the lock-character anchor-parity contract are unaffected. Opt into the newer model with --model gpt-image-2.
The script defaults to medium; pass --quality high for finals.
Required:
--prompt — text prompt. A verbatim character descriptor block goes here for character work.--output — local PNG destination.Optional:
--model — gpt-image-1 (default) or gpt-image-2.--aspect-ratio — 9:16 (default), 16:9, 1:1, 2:3, 3:2. gpt-image-2 also accepts 3:4, 4:3, 4:5. Used when --image-size is not given.--image-size — explicit WIDTHxHEIGHT (e.g. 1728x2304). gpt-image-2 only — values are rounded to multiples of 16 and capped at 3840px. On gpt-image-1 a custom size is ignored with a warning and the aspect-ratio mapping is used instead.--quality — low | medium | high (default medium).--ref-image / --ref-url — a PUBLIC image URL for the /edit variant. Repeatable — pass it twice to send multiple refs (e.g. identity + style). The proxy does not upload local files, so a local path is rejected — host the image first (MCP get_upload_url → get_download_url, or any public URL) and pass that URL. When present, routes to the model's /edit variant so the model can match the references. Order matters: pass identity (character) first, then style refs.--with-logs — stream fal queue logs.Credentials (proxy-routed — NOT a raw FAL key):
scripts/media_proxy.py routes every call through the GooseWorks fal-proxy, which bills the Ads agent. It reads ~/.gooseworks/credentials.json (api_base, api_key, agent_id) — written by gooseworks login. Do not set FAL_API_KEY: an agent (cal_) token is not a FAL key and 401s against fal directly.GW_PROJECT_ID=<ad project id> in the env so the generation's spend attributes to that ad project (per-project cost shows in the app).test cases passed, vs 5 / 15 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.