genmedia — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited genmedia (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill when the user wants to execute a fal.ai model — either by task description (e.g. "generate a video of a dog running") or by a specific endpoint_id (e.g. fal-ai/flux/dev). Load genmedia-ref alongside this skill for the full command reference.
genmedia models "<task>" --json genmedia schema <endpoint_id> --jsonRead all required fields before running.
genmedia upload <local_file_or_url> --jsonUse the returned url as the parameter value.
genmedia run <endpoint_id> --<param> <value> ... --json genmedia run <endpoint_id> --<param> <value> ... --async --json
genmedia status <endpoint_id> <request_id> --result --json--downloadto run or status. The CLI writes every media URL from the result to the filesystem and returns the local paths in downloaded_files[]. Do not curl the URLs yourself; use the flag.
genmedia run fal-ai/flux/dev --prompt "a cat" --download --json # cwd, source file names
genmedia run fal-ai/flux/dev --prompt "a cat" --num_images 3 --download "./out/{index}.{ext}" --json
genmedia status <endpoint_id> <request_id> --download ./out/ --json # implies --resultUse {index}, {name}, {ext}, {request_id} placeholders in the template when the model returns multiple files (images[], image_urls[], etc.) to avoid filename collisions. A trailing / or an existing directory path saves files under that directory using their source names.
--download was used, referencethe paths from downloaded_files[]; otherwise present the URLs from result clearly.
genmedia assets ...)The fal Assets API lets you persist generated media, organize it into collections, and define reusable characters.
semantic-search result. Returned by assets browse / assets get / assets upload. Used both as a flag on mutations and as the positional argument for assets get and assets tags for-asset.
genmedia run and genmedia status.
Which to pass. Use --vector_id if you have it (anything in the library or a search result has one); otherwise use --request_id for a fresh generation.
Use these flags on every command that takes an asset target: assets favorite, assets unfavorite, assets tags assign / unassign / set, assets collections add / remove, assets characters create --reference_image <id>.
assets upload is for external media onlyUse assets upload only for local files or non-fal URLs — media that isn't already in fal's system. For anything that came out of a genmedia run, use the request_id instead.
| What you have | Use |
|---|---|
vector_id (from assets browse / get / upload) | --vector_id <id> |
request_id (from genmedia run / status) | --request_id <id> |
| Local file or non-fal URL | assets upload <path_or_url> |
RUN=$(genmedia run fal-ai/flux/schnell --prompt "an elegant black cat" --json)
REQ=$(echo "$RUN" | jq -r .request_id)
genmedia assets characters create "Whiskers" \
--description "An elegant black cat sitting on a moss-covered rock" \
--reference_image "$REQ" \
--identifier whiskers \
--jsonSame pattern for assets collections add --request_id <id> and assets favorite --request_id <id>. Newly-referenced media — whether by request_id or by a vector_id from a fresh upload — may take a moment to appear in assets browse / semantic search while the embedding finishes.
For the full command tree, run genmedia assets --help or any subcommand with --help.
When a command exits non-zero, it prints a JSON error object to stderr:
{
"error": "Validation error — num_images: Input should be less than or equal to 4",
"details": {
"endpoint_id": "fal-ai/flux/schnell",
"request_id": "019d...",
"status": 422,
"error_type": "ValidationError",
"validation_errors": [
{ "field": "num_images", "message": "Input should be less than or equal to 4", "type": "less_than_equal", "input": 20 }
],
"body": { "detail": [ ... raw FastAPI payload ... ] }
}
}status: 422 / error_type: "ValidationError" means the inputs violatedthe model schema. Read details.validation_errors — each entry names the field, a human message, the validator type, and the input that was rejected. Re-run genmedia schema <endpoint_id> --json if you need the allowed values, fix the offending args, and retry.
limited, 5xx upstream) surface the server message directly in error and do not contain validation_errors. Do not retry 4xx errors blindly — correct the request first.
details.logs contains the most recentmodel-side log lines.
--json so output is machine-readable.genmedia pricing <endpoint_id> --json first if cost is a concern.genmedia docs "<task>" --json forguidance from fal.ai documentation.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.