image-skill 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/PROVENANCE.md +78 -0
- package/README.md +48 -10
- package/bin/image-skill.mjs +543 -8
- package/cli.md +336 -44
- package/llms.txt +45 -24
- package/package.json +22 -4
- package/skill.md +224 -23
- package/skills/image-skill/SKILL.md +561 -0
- package/skills/image-skill/references/cli.md +1259 -0
- package/skills/image-skill/references/llms.txt +248 -0
package/cli.md
CHANGED
|
@@ -331,9 +331,17 @@ curl -sS https://api.image-skill.com/v1/credit-quotes \
|
|
|
331
331
|
|
|
332
332
|
Creates a live-provider payment action for a previously returned quote. Stripe
|
|
333
333
|
Checkout is the first supported provider. This creates a hosted Stripe Checkout
|
|
334
|
-
Session and returns an `action_required` response with
|
|
335
|
-
are granted only after verified Stripe webhook
|
|
336
|
-
creation itself must not mutate credit balances.
|
|
334
|
+
Session and returns an `action_required` response with
|
|
335
|
+
`checkout_handoff_url`; credits are granted only after verified Stripe webhook
|
|
336
|
+
fulfillment succeeds. Session creation itself must not mutate credit balances.
|
|
337
|
+
|
|
338
|
+
Agents should present or open `checkout_handoff_url` for humans. It is a short
|
|
339
|
+
Image Skill URL that redirects to Stripe Checkout and is safe to copy from
|
|
340
|
+
mobile terminals, SSH clients, and wrapped chat output. `checkout_url` remains
|
|
341
|
+
the Stripe compatibility fallback when `checkout_handoff_url` is absent. Do not
|
|
342
|
+
trim Stripe Checkout URLs: the long `#...` fragment is required by Stripe
|
|
343
|
+
Checkout in the browser. Present any fallback Stripe URL in a fenced code block
|
|
344
|
+
so terminal wrapping does not corrupt it.
|
|
337
345
|
|
|
338
346
|
```bash
|
|
339
347
|
image-skill credits buy \
|
|
@@ -353,14 +361,19 @@ Minimum success data:
|
|
|
353
361
|
"provider": "stripe",
|
|
354
362
|
"accepted_payment_method": "stripe_checkout",
|
|
355
363
|
"checkout_session_id": "cs_...",
|
|
356
|
-
"
|
|
364
|
+
"checkout_handoff_url": "https://api.image-skill.com/pay/payatt_...",
|
|
365
|
+
"checkout_compact_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
366
|
+
"checkout_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
357
367
|
"credits": 500,
|
|
358
368
|
"amount_cents": 500,
|
|
359
369
|
"currency": "USD",
|
|
360
370
|
"live_money": true,
|
|
361
371
|
"next": {
|
|
362
372
|
"human_action": "open_checkout_url",
|
|
363
|
-
"
|
|
373
|
+
"checkout_handoff_url": "https://api.image-skill.com/pay/payatt_...",
|
|
374
|
+
"checkout_compact_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
375
|
+
"fallback_checkout_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
376
|
+
"after_payment": "open checkout_handoff_url, or the full checkout_url if only a Stripe URL is available, then poll image-skill credits status --payment-attempt-id PAYMENT_ATTEMPT_ID --json or image-skill usage quota --json; credits are granted only after verified webhook fulfillment"
|
|
364
377
|
}
|
|
365
378
|
}
|
|
366
379
|
```
|
|
@@ -404,14 +417,18 @@ Minimum action-required data:
|
|
|
404
417
|
"payment_attempt": {
|
|
405
418
|
"payment_attempt_id": "payatt_...",
|
|
406
419
|
"checkout_session_id": "cs_...",
|
|
407
|
-
"
|
|
420
|
+
"checkout_handoff_url": "https://api.image-skill.com/pay/payatt_...",
|
|
421
|
+
"checkout_compact_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
422
|
+
"checkout_url": "https://checkout.stripe.com/c/pay/cs_...#fid...",
|
|
408
423
|
"attempt_status": "requires_action"
|
|
409
424
|
},
|
|
410
425
|
"receipt": null,
|
|
411
426
|
"credit_event": null,
|
|
412
427
|
"next": {
|
|
413
428
|
"retry_after_seconds": 10,
|
|
414
|
-
"human_action": "open_checkout_url"
|
|
429
|
+
"human_action": "open_checkout_url",
|
|
430
|
+
"checkout_handoff_url": "https://api.image-skill.com/pay/payatt_...",
|
|
431
|
+
"checkout_compact_url": "https://checkout.stripe.com/c/pay/cs_...#fid..."
|
|
415
432
|
}
|
|
416
433
|
}
|
|
417
434
|
```
|
|
@@ -506,12 +523,60 @@ must not flatten rich model capabilities into coarse universal categories.
|
|
|
506
523
|
Use `model_parameters` for rare or model-specific parameters advertised by the
|
|
507
524
|
capability schema.
|
|
508
525
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
`model_parameters
|
|
526
|
+
Current executable provider-native controls include:
|
|
527
|
+
|
|
528
|
+
- Fal FLUX.1 dev: `model_parameters.image_size` for presets such as
|
|
529
|
+
`square_hd`, plus `seed`.
|
|
530
|
+
- Fal FLUX Pro 1.1 Ultra Create: `model_parameters.seed` and
|
|
531
|
+
`model_parameters.raw`; optional reference-image controls remain cataloged
|
|
532
|
+
for inspection but are not executable on the create-only path.
|
|
533
|
+
- Fal Z-Image Turbo Create/Edit: `model_parameters.image_size` for
|
|
534
|
+
`square_hd`, `square`, portrait/landscape presets, and `auto` on edit; costs
|
|
535
|
+
are quoted from requested megapixels when the output size is explicit.
|
|
536
|
+
- Fal Nano Banana 2 Edit: `model_parameters.resolution` for `0.5K`, `1K`,
|
|
537
|
+
`2K`, and `4K`, plus `seed`.
|
|
538
|
+
- Fal Ideogram V2 Edit: `model_parameters.expand_prompt`, `seed`, and
|
|
539
|
+
`style`; pass masks as top-level `--mask` / `mask_asset_id`, not as
|
|
540
|
+
provider `mask_url`.
|
|
541
|
+
- Fal Gemini 3 Pro Image Preview Create/Edit:
|
|
542
|
+
`model_parameters.resolution` for `1K`, `2K`, and `4K`, plus `seed`; 4K is
|
|
543
|
+
quoted as the higher-priced provider tier.
|
|
544
|
+
- Fal Nano Banana Pro Create/Edit: `model_parameters.resolution` for `1K`,
|
|
545
|
+
`2K`, and `4K`, plus `seed`; 4K is quoted as the higher-priced provider tier.
|
|
546
|
+
- Fal FLUX Pro Kontext Pro/Max Edit: `model_parameters.seed`; guidance scale
|
|
547
|
+
and aspect-ratio controls remain cataloged for inspection but are not
|
|
548
|
+
executable until their UX and receipt behavior are represented.
|
|
549
|
+
- Fal Bytedance Seedream 4.5 Create/Edit: `model_parameters.image_size` for
|
|
550
|
+
`square_hd`, `square`, portrait/landscape presets, `auto_2K`, and
|
|
551
|
+
`auto_4K`, plus `seed`; multi-output and multi-reference controls remain
|
|
552
|
+
cataloged but fixed for hosted accounting.
|
|
553
|
+
- Fal Bytedance Seedream 5.0 Lite Create/Edit:
|
|
554
|
+
`model_parameters.image_size` for `square_hd`, `square`, portrait/landscape
|
|
555
|
+
presets, `auto_2K`, and `auto_3K`; multi-output and multi-reference controls
|
|
556
|
+
remain cataloged but fixed for hosted accounting.
|
|
557
|
+
- xAI Grok Imagine Image Quality: `model_parameters.resolution` for `1k` and
|
|
558
|
+
`2k`; 2k is priced from the higher provider tier. Create supports top-level
|
|
559
|
+
`--output-count` up to the model's advertised `max_outputs_per_request`,
|
|
560
|
+
currently mapped to xAI's documented `n` batch parameter.
|
|
561
|
+
- GPT Image 1.5 create/edit: documented fixed sizes `1024x1024`,
|
|
562
|
+
`1024x1536`, and `1536x1024`, output format, compression, transparent or
|
|
563
|
+
opaque background, moderation, and the upstream provider-native quality
|
|
564
|
+
parameter. GPT Image 1.5 create quotes output-token estimates when quality
|
|
565
|
+
and concrete size are known; GPT Image 1.5 create supports top-level
|
|
566
|
+
`--output-count` up to the model's advertised `max_outputs_per_request`,
|
|
567
|
+
currently mapped to OpenAI's `n` parameter. GPT Image 1.5 edit accepts
|
|
568
|
+
low/high `input_fidelity` and remains preflight unknown-cost until usage is
|
|
569
|
+
returned.
|
|
570
|
+
- GPT Image 2 create/edit: size, output format, compression, background,
|
|
571
|
+
moderation, and the upstream provider-native quality parameter. GPT Image 2
|
|
572
|
+
create quotes request-aware output-token estimates when quality and concrete
|
|
573
|
+
size are known; GPT Image 2 create supports top-level `--output-count` up to
|
|
574
|
+
the model's advertised `max_outputs_per_request`, currently mapped to
|
|
575
|
+
OpenAI's `n` parameter. GPT Image 2 edit remains preflight unknown-cost, then
|
|
576
|
+
records usage-priced provider cost when OpenAI returns token usage.
|
|
577
|
+
|
|
578
|
+
Inspect each model before use; provider-native controls are available only
|
|
579
|
+
through validated `model_parameters`.
|
|
515
580
|
|
|
516
581
|
### `image-skill capabilities`
|
|
517
582
|
|
|
@@ -537,29 +602,125 @@ image-skill create \
|
|
|
537
602
|
--json
|
|
538
603
|
```
|
|
539
604
|
|
|
605
|
+
Hosted defaults are quality-first. If an agent does not choose a model, Image
|
|
606
|
+
Skill selects the strongest available create capability for the requested
|
|
607
|
+
intent and budget, then records the decision in `request.selection`. Explicit
|
|
608
|
+
`--provider`, `--model`, namespaced model ids, and validated
|
|
609
|
+
`model_parameters` always take precedence. For final/product/hero-style
|
|
610
|
+
intents, Image Skill may default an eligible quality-capability request to a
|
|
611
|
+
higher output tier only when `--max-estimated-usd-per-image` is high enough for
|
|
612
|
+
that tier; otherwise it stays on a lower-cost quality tier or chooses a cheaper
|
|
613
|
+
capability within the budget and tells agents what happened in the selection
|
|
614
|
+
receipt.
|
|
615
|
+
|
|
540
616
|
Preview-compatible richer shape:
|
|
541
617
|
|
|
542
618
|
```bash
|
|
543
619
|
image-skill create \
|
|
544
|
-
--prompt-
|
|
620
|
+
--prompt "Campaign-ready product image of a compact field camera" \
|
|
545
621
|
--intent finalize \
|
|
546
622
|
--model MODEL_ID \
|
|
547
623
|
--aspect-ratio 1:1 \
|
|
548
|
-
--
|
|
549
|
-
--max-usd 0.
|
|
624
|
+
--output-count 2 \
|
|
625
|
+
--max-estimated-usd-per-image 0.07 \
|
|
550
626
|
--model-parameters-json '{"seed":1234}' \
|
|
551
627
|
--json
|
|
552
628
|
```
|
|
553
629
|
|
|
630
|
+
Use `--output-count N` only when `models show MODEL_ID --json` advertises
|
|
631
|
+
`media.output.max_outputs_per_request` greater than `1`. `--output-count` is a
|
|
632
|
+
top-level Image Skill create control; do not pass provider-native `n` through
|
|
633
|
+
`model_parameters` unless the selected model schema explicitly advertises that
|
|
634
|
+
field. Credit pricing and `cost.credit_pricing.credits_required` are total
|
|
635
|
+
operation debits across all requested outputs. `--max-estimated-usd-per-image`
|
|
636
|
+
and raw API `max_estimated_usd_per_image` remain per-image budget guards.
|
|
637
|
+
|
|
638
|
+
For create models with wired reference support, pass owned reference assets
|
|
639
|
+
with the model's advertised reference role. Kling element routes use
|
|
640
|
+
`--element-frontal IMAGE[@ELEMENT_INDEX]` and
|
|
641
|
+
`--element-reference IMAGE[@ELEMENT_INDEX[:REFERENCE_INDEX]]`; flat
|
|
642
|
+
reference-image routes use `--reference-image IMAGE[@INDEX]`; Fal DreamO also
|
|
643
|
+
accepts `:TASK` where `TASK` is `ip`, `id`, or `style`. The public CLI uploads
|
|
644
|
+
local paths and external URLs first, then
|
|
645
|
+
sends top-level `references[]` entries with Image Skill `asset_id` values to
|
|
646
|
+
`/v1/create`. Do not pass provider-native `elements`, `frontal_image_url`,
|
|
647
|
+
`reference_image_urls`, `first_image_url`, `second_image_url`, `images`, or
|
|
648
|
+
`*_reference_task` through `model_parameters`; provider-private URLs are
|
|
649
|
+
resolved server-side after ownership and media-policy validation.
|
|
650
|
+
|
|
651
|
+
```bash
|
|
652
|
+
image-skill create \
|
|
653
|
+
--model fal.kling-image-o3-text-to-image \
|
|
654
|
+
--prompt "Place the same character in a clean studio campaign" \
|
|
655
|
+
--element-frontal ./character-front.png@0 \
|
|
656
|
+
--element-reference ./character-side.webp@0:0 \
|
|
657
|
+
--output-count 2 \
|
|
658
|
+
--max-estimated-usd-per-image 0.06 \
|
|
659
|
+
--json
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
image-skill create \
|
|
664
|
+
--model fal.dreamo \
|
|
665
|
+
--prompt "Studio portrait preserving identity with a bolder editorial style" \
|
|
666
|
+
--reference-image ./identity.png@0:id \
|
|
667
|
+
--reference-image ./style.webp@1:style \
|
|
668
|
+
--model-parameters-json '{"image_size":{"width":1280,"height":720}}' \
|
|
669
|
+
--max-estimated-usd-per-image 0.06 \
|
|
670
|
+
--json
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
High-resolution examples:
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
image-skill create \
|
|
677
|
+
--prompt "Campaign-ready product image of a compact field camera" \
|
|
678
|
+
--intent final \
|
|
679
|
+
--max-estimated-usd-per-image 0.07 \
|
|
680
|
+
--json
|
|
681
|
+
|
|
682
|
+
image-skill create \
|
|
683
|
+
--prompt "Campaign-ready product image of a compact field camera" \
|
|
684
|
+
--model fal.gemini-3-pro-image-preview \
|
|
685
|
+
--model-parameters-json '{"resolution":"4K"}' \
|
|
686
|
+
--max-estimated-usd-per-image 0.30 \
|
|
687
|
+
--json
|
|
688
|
+
|
|
689
|
+
image-skill create \
|
|
690
|
+
--prompt "Campaign-ready product image of a compact field camera" \
|
|
691
|
+
--model xai.grok-imagine-image-quality \
|
|
692
|
+
--model-parameters-json '{"resolution":"2k"}' \
|
|
693
|
+
--max-estimated-usd-per-image 0.07 \
|
|
694
|
+
--json
|
|
695
|
+
|
|
696
|
+
image-skill edit \
|
|
697
|
+
--input-asset-id image_... \
|
|
698
|
+
--prompt "preserve the subject and make this campaign-ready" \
|
|
699
|
+
--model fal.nano-banana-2-edit \
|
|
700
|
+
--model-parameters-json '{"resolution":"4K"}' \
|
|
701
|
+
--accept-unknown-cost \
|
|
702
|
+
--json
|
|
703
|
+
```
|
|
704
|
+
|
|
554
705
|
`model_parameters` must be validated against the selected model/capability
|
|
555
706
|
schema before any provider call or paid reservation. Unknown fields fail closed
|
|
556
707
|
unless the capability explicitly allows additional properties. This is how
|
|
557
708
|
Image Skill preserves rare model controls without turning every
|
|
558
709
|
provider-specific parameter into a top-level flag.
|
|
559
|
-
In the current preview, Fal create/edit
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
710
|
+
In the current preview, Fal create/edit, xAI quality generation, and OpenAI GPT
|
|
711
|
+
Image 2 expose the executable provider-native controls listed in the selected
|
|
712
|
+
model schema. GPT Image 2 create has request-aware output-token credit quotes
|
|
713
|
+
for concrete quality/size requests; GPT Image 2 edit still requires
|
|
714
|
+
unknown-cost acceptance before execution, but records usage-priced provider cost
|
|
715
|
+
after execution when OpenAI returns token usage. Provider-native controls remain
|
|
716
|
+
visible for planning and fail closed until their capability schema marks them
|
|
717
|
+
executable. Hosted
|
|
718
|
+
`create --dry-run` validates `model_parameters` against the selected model,
|
|
719
|
+
returns accepted keys/provenance and request-aware credit pricing for planning,
|
|
720
|
+
and never executes provider controls or consumes credits.
|
|
721
|
+
For dry-run responses, `cost.credit_pricing.credits_required` is the planned
|
|
722
|
+
live execution debit for the selected model. The actual debit for the dry run is
|
|
723
|
+
`quota.consumed_credits: 0`.
|
|
563
724
|
|
|
564
725
|
Minimum success data:
|
|
565
726
|
|
|
@@ -574,19 +735,44 @@ Minimum success data:
|
|
|
574
735
|
"asset_id": "image_...",
|
|
575
736
|
"path": "https://media.image-skill.com/a/image_abc123.png",
|
|
576
737
|
"mime_type": "image/png",
|
|
577
|
-
"url": "https://media.image-skill.com/a/image_abc123.png"
|
|
738
|
+
"url": "https://media.image-skill.com/a/image_abc123.png",
|
|
739
|
+
"content_length": 333444,
|
|
740
|
+
"width": 1024,
|
|
741
|
+
"height": 1024
|
|
578
742
|
}
|
|
579
743
|
],
|
|
580
744
|
"cost": {
|
|
581
|
-
"estimated_usd": 0.
|
|
745
|
+
"estimated_usd": 0.05,
|
|
582
746
|
"credit_pricing": {
|
|
583
747
|
"credit_unit_usd": 0.01,
|
|
584
|
-
"credits_required":
|
|
585
|
-
"estimated_provider_cost_usd": 0.
|
|
586
|
-
"estimated_revenue_usd": 0.
|
|
748
|
+
"credits_required": 9,
|
|
749
|
+
"estimated_provider_cost_usd": 0.05,
|
|
750
|
+
"estimated_revenue_usd": 0.09,
|
|
587
751
|
"pricing_confidence": "known"
|
|
588
752
|
}
|
|
589
753
|
},
|
|
754
|
+
"request": {
|
|
755
|
+
"output_count": 1,
|
|
756
|
+
"selection": {
|
|
757
|
+
"policy": "hosted_default_create_v1",
|
|
758
|
+
"reason": "hosted default selected the strongest currently available quality-first create model",
|
|
759
|
+
"intent": "explore",
|
|
760
|
+
"capability": {
|
|
761
|
+
"id": "is.image.generate.xai-grok-imagine-image-quality.v1"
|
|
762
|
+
},
|
|
763
|
+
"model_parameters": {
|
|
764
|
+
"keys": ["resolution"],
|
|
765
|
+
"defaults_applied": ["resolution=1k"],
|
|
766
|
+
"source": "default_policy"
|
|
767
|
+
},
|
|
768
|
+
"output": {
|
|
769
|
+
"resolution_class": "1k",
|
|
770
|
+
"expected_width": null,
|
|
771
|
+
"expected_height": null,
|
|
772
|
+
"expected_min_short_edge": 1024
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
},
|
|
590
776
|
"safety": {
|
|
591
777
|
"status": "allowed"
|
|
592
778
|
}
|
|
@@ -616,6 +802,7 @@ curl -sS https://api.image-skill.com/v1/create \
|
|
|
616
802
|
"prompt": "A compact field camera on a stainless workbench",
|
|
617
803
|
"intent": "explore",
|
|
618
804
|
"aspect_ratio": "1:1",
|
|
805
|
+
"output_count": 1,
|
|
619
806
|
"max_estimated_usd_per_image": 0.05,
|
|
620
807
|
"model_parameters": {
|
|
621
808
|
"seed": 1234
|
|
@@ -624,7 +811,8 @@ curl -sS https://api.image-skill.com/v1/create \
|
|
|
624
811
|
```
|
|
625
812
|
|
|
626
813
|
Hosted free-preview create currently requires owned artifact storage and returns
|
|
627
|
-
`assets[]
|
|
814
|
+
one `assets[]` entry per output with `assets[].url` under
|
|
815
|
+
`https://media.image-skill.com/...` on success.
|
|
628
816
|
|
|
629
817
|
### `image-skill upload`
|
|
630
818
|
|
|
@@ -681,6 +869,7 @@ with one hosted provider-backed edit model.
|
|
|
681
869
|
```bash
|
|
682
870
|
image-skill edit \
|
|
683
871
|
--input ASSET_ID_OR_PATH_OR_URL \
|
|
872
|
+
--mask MASK_ASSET_ID_OR_PATH_OR_URL \
|
|
684
873
|
--prompt "Remove the background and keep natural object shadows" \
|
|
685
874
|
--accept-unknown-cost \
|
|
686
875
|
--json
|
|
@@ -690,16 +879,114 @@ If `--input` is a local path or external URL, the public CLI first normalizes it
|
|
|
690
879
|
through the same upload resolver as `image-skill upload`, then sends only the
|
|
691
880
|
resulting `asset_id` to `POST /v1/edit`. If `--input` is an Image Skill asset id
|
|
692
881
|
or owned asset URL, edit uses that owned asset directly.
|
|
882
|
+
For models with wired mask support, `--mask` follows the same upload/asset-id
|
|
883
|
+
resolver and sends only `mask_asset_id`; never pass provider-native `mask_url`
|
|
884
|
+
through `model_parameters`.
|
|
885
|
+
For models with wired reference support, pass owned reference assets with the
|
|
886
|
+
model's advertised reference role. Kling element routes use
|
|
887
|
+
`--element-frontal IMAGE[@ELEMENT_INDEX]` and
|
|
888
|
+
`--element-reference IMAGE[@ELEMENT_INDEX[:REFERENCE_INDEX]]`; flat
|
|
889
|
+
reference-image routes use `--reference-image IMAGE[@INDEX[:TASK]]`. The
|
|
890
|
+
public CLI uploads local paths and external URLs first, then sends top-level
|
|
891
|
+
`references[]` entries with Image Skill `asset_id` values. For Kling element
|
|
892
|
+
routes, `--element-frontal ./front.png@0` becomes role `element_frontal` for
|
|
893
|
+
element index `0`, and `--element-reference ./side.webp@0:0` becomes role
|
|
894
|
+
`element_reference` for the same element with reference slot `0`. For DreamO
|
|
895
|
+
create, `--reference-image ./identity.png@0:id` becomes role
|
|
896
|
+
`reference_image`, index `0`, and `reference_task` `id`. For xAI edit,
|
|
897
|
+
`--reference-image ./reference.png@0` becomes the second ordered source image;
|
|
898
|
+
the primary `--input` asset remains the first source image. Do not pass
|
|
899
|
+
provider-native `elements`, `image_url`, `image_urls`, `frontal_image_url`,
|
|
900
|
+
`reference_image_urls`, `first_image_url`, `second_image_url`, `images`, or
|
|
901
|
+
`*_reference_task` through `model_parameters`; provider-private URLs are
|
|
902
|
+
resolved server-side after ownership and media-policy validation.
|
|
903
|
+
Current public `references[]` support covers Kling Image O1, Kling Image O3
|
|
904
|
+
image-to-image/text-to-image, Kling Image v3 image-to-image/text-to-image, and
|
|
905
|
+
Fal DreamO create plus xAI Grok Imagine image edit/quality edit. Kling requests
|
|
906
|
+
may contain at most 40 reference entries across at most 10 contiguous element
|
|
907
|
+
indexes starting at `0`; each referenced element requires one frontal image and
|
|
908
|
+
may include up to three additional reference images. DreamO accepts up to two
|
|
909
|
+
contiguous `reference_image` indexes starting at `0`, each with optional
|
|
910
|
+
`reference_task` `ip`, `id`, or `style`. xAI edit accepts up to two contiguous
|
|
911
|
+
`reference_image` indexes starting at `0` and does not accept `reference_task`.
|
|
912
|
+
Reference assets must be Image Skill-owned PNG, JPEG, or WebP images with
|
|
913
|
+
known non-empty byte length up to 10MB, known width and height of at least
|
|
914
|
+
300px, and aspect ratio from 0.40 to 2.50.
|
|
915
|
+
|
|
916
|
+
```bash
|
|
917
|
+
image-skill edit \
|
|
918
|
+
--model fal.kling-image-o3-image-to-image \
|
|
919
|
+
--input ./starting-frame.png \
|
|
920
|
+
--element-frontal ./character-front.png@0 \
|
|
921
|
+
--element-reference ./character-side.webp@0:0 \
|
|
922
|
+
--prompt "Place the same character in a clean studio product portrait" \
|
|
923
|
+
--accept-unknown-cost \
|
|
924
|
+
--json
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
Direct `/v1/edit` callers use the same owned-asset contract:
|
|
928
|
+
|
|
929
|
+
```json
|
|
930
|
+
{
|
|
931
|
+
"input_asset_id": "image_starting_frame",
|
|
932
|
+
"model": "fal.kling-image-o3-image-to-image",
|
|
933
|
+
"prompt": "Place the same character in a clean studio product portrait",
|
|
934
|
+
"references": [
|
|
935
|
+
{
|
|
936
|
+
"asset_id": "image_character_front",
|
|
937
|
+
"role": "element_frontal",
|
|
938
|
+
"index": 0
|
|
939
|
+
},
|
|
940
|
+
{
|
|
941
|
+
"asset_id": "image_character_side",
|
|
942
|
+
"role": "element_reference",
|
|
943
|
+
"index": 0,
|
|
944
|
+
"reference_index": 0
|
|
945
|
+
}
|
|
946
|
+
]
|
|
947
|
+
}
|
|
948
|
+
```
|
|
693
949
|
|
|
694
|
-
Preview hosted edit supports model-specific provider-backed
|
|
695
|
-
Fal
|
|
950
|
+
Preview hosted create/edit supports model-specific provider-backed paths such
|
|
951
|
+
as Fal Gemini 3 Pro Image Preview Create (`fal.gemini-3-pro-image-preview`),
|
|
952
|
+
Fal Nano Banana 2 Edit (`fal.nano-banana-2-edit`), Fal Ideogram V2 Edit
|
|
953
|
+
(`fal.ideogram-v2-edit`), Fal Gemini 3 Pro Image
|
|
954
|
+
Preview Edit (`fal.gemini-3-pro-image-preview-edit`), Fal FLUX Pro 1.1 Ultra
|
|
955
|
+
Create (`fal.flux-pro-v1-1-ultra`), Fal FLUX Pro Kontext Edit
|
|
956
|
+
(`fal.flux-pro-kontext`), Fal FLUX Pro Kontext Max Edit
|
|
957
|
+
(`fal.flux-pro-kontext-max`), Fal Seedream 5.0 Lite Create
|
|
958
|
+
(`fal.bytedance-seedream-v5-lite-text-to-image`), Fal Seedream 5.0 Lite Edit
|
|
959
|
+
(`fal.bytedance-seedream-v5-lite-edit`), Fal Seedream 4.5 Create
|
|
960
|
+
(`fal.bytedance-seedream-v4-5-text-to-image`), Fal Seedream 4.5 Edit
|
|
961
|
+
(`fal.bytedance-seedream-v4-5-edit`), Fal Nano Banana Pro Create
|
|
962
|
+
(`fal.nano-banana-pro`), Fal Nano Banana Pro Edit
|
|
963
|
+
(`fal.nano-banana-pro-edit`), GPT Image 1.5 Create
|
|
964
|
+
(`openai.gpt-image-1.5`), GPT Image 1.5 Edit
|
|
965
|
+
(`openai.gpt-image-1.5-edit`), and GPT Image 2 Edit
|
|
696
966
|
(`openai.gpt-image-2-edit`) when their provider credentials are configured.
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
967
|
+
Fal Gemini 3 Pro Image Preview create/edit has known per-image pricing: 1K/2K
|
|
968
|
+
requests quote `$0.15` provider cost and 4K quotes the doubled provider tier.
|
|
969
|
+
Fal Nano Banana Pro create/edit uses the same `$0.15` standard and doubled 4K
|
|
970
|
+
provider tier. Fal FLUX Pro 1.1 Ultra Create quotes `$0.06` provider cost per
|
|
971
|
+
image. Fal FLUX Pro Kontext Edit quotes `$0.04` provider cost per image, and
|
|
972
|
+
Fal FLUX Pro Kontext Max Edit quotes `$0.08` provider cost per image. Fal
|
|
973
|
+
Seedream 4.5 create/edit quotes `$0.04` provider cost per image.
|
|
974
|
+
Fal Seedream 5.0 Lite create/edit quotes `$0.035` provider cost per image. Fal
|
|
975
|
+
Z-Image Turbo create/edit quotes `$0.005/MP` when `image_size` is explicit or
|
|
976
|
+
derived from aspect ratio; edit `auto` remains unknown-cost. GPT Image 1.5
|
|
977
|
+
create quotes output-token estimates for concrete quality/size requests using
|
|
978
|
+
OpenAI's fixed-size token table; GPT Image 1.5 edit remains preflight
|
|
979
|
+
unknown-cost because edit input image/text tokens are provider-metered, then
|
|
980
|
+
records usage-priced provider cost when OpenAI returns token usage. GPT Image 2
|
|
981
|
+
create quotes output-token estimates for concrete quality/size requests. GPT
|
|
982
|
+
Image 2 edit remains preflight unknown-cost because edit input image/text tokens
|
|
983
|
+
are provider-metered, then records usage-priced provider cost when OpenAI
|
|
984
|
+
returns token usage. Other edit paths without machine-readable pricing require
|
|
985
|
+
`--accept-unknown-cost` until a stable price source is captured. Responses
|
|
986
|
+
include a new generated asset URL, job id, safety state, quota consumption, and
|
|
987
|
+
input asset metadata where
|
|
988
|
+
applicable. Responses do not include raw prompts, source bytes, base64
|
|
989
|
+
payloads, local paths, full external URLs, bucket names, or object keys.
|
|
703
990
|
|
|
704
991
|
Provider/model names in this paragraph are preview provenance, not the primary
|
|
705
992
|
public UX. The public selection surface should be Image Skill capabilities and
|
|
@@ -871,16 +1158,21 @@ Activity `type` values are stable public contract values. Do not infer new
|
|
|
871
1158
|
event names from provider responses or telemetry logs; use only the registry
|
|
872
1159
|
below.
|
|
873
1160
|
|
|
874
|
-
| Event type
|
|
875
|
-
|
|
|
876
|
-
| `job.completed`
|
|
877
|
-
| `asset.created`
|
|
878
|
-
| `asset.uploaded`
|
|
879
|
-
| `usage.credit_consumed`
|
|
880
|
-
| `feedback.created`
|
|
881
|
-
| `feedback.github_queue.processed`
|
|
882
|
-
| `payment.checkout_session.created`
|
|
883
|
-
| `credits.payment_backed_granted`
|
|
1161
|
+
| Event type | Subject | Operation | Emitted when | Stable links |
|
|
1162
|
+
| ------------------------------------------ | ---------- | ----------- | ----------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
1163
|
+
| `job.completed` | `job` | create/edit | A hosted create or edit job reaches a terminal state. | `job_id`, `asset_ids`, `usage_event_id` |
|
|
1164
|
+
| `asset.created` | `asset` | create/edit | A hosted create or edit produces an output asset. | `job_id`, `asset_ids`, `usage_event_id` |
|
|
1165
|
+
| `asset.uploaded` | `asset` | upload | A public edit workflow uploads or imports input media. | `job_id`, `asset_ids`, `usage_event_id` |
|
|
1166
|
+
| `usage.credit_consumed` | `usage` | usage | A creative operation records a preview-credit entry. | `job_id`, `usage_event_id` |
|
|
1167
|
+
| `feedback.created` | `feedback` | feedback | Hosted agent feedback is accepted into product memory. | `feedback_id` |
|
|
1168
|
+
| `feedback.github_queue.processed` | `feedback` | feedback | Feedback is processed by the GitHub implementation queue handoff. | `feedback_id` |
|
|
1169
|
+
| `payment.checkout_session.created` | `payment` | payment | A Stripe Checkout session is created and awaits external action. | `quote_id`, `payment_attempt_id`, `checkout_session_id` |
|
|
1170
|
+
| `credits.payment_backed_granted` | `credit` | credits | Verified payment or fake-payment proof grants paid credits. | `quote_id`, `receipt_id`, `credit_event_id` |
|
|
1171
|
+
| `credits.payment_backed_refunded` | `credit` | credits | A Stripe refund debits payment-backed credits. | `quote_id`, `receipt_id`, `payment_reversal_id`, `credit_event_id` |
|
|
1172
|
+
| `credits.payment_backed_disputed` | `credit` | credits | A Stripe dispute debit applies to payment-backed credits. | `quote_id`, `receipt_id`, `payment_reversal_id`, `credit_event_id` |
|
|
1173
|
+
| `credits.payment_backed_reinstated` | `credit` | credits | Stripe dispute funds were reinstated and recorded. | `quote_id`, `receipt_id`, `payment_reversal_id` |
|
|
1174
|
+
| `credits.payment_backed_reversal_pending` | `credit` | credits | A reversal was recorded but could not be fully applied. | `quote_id`, `receipt_id`, `payment_reversal_id` |
|
|
1175
|
+
| `credits.payment_backed_reversal_rejected` | `credit` | credits | A reversal was rejected because it could not safely reconcile. | `quote_id`, `receipt_id`, `payment_reversal_id` |
|
|
884
1176
|
|
|
885
1177
|
`feedback.github_queue.processed` includes `details.github_queue` with
|
|
886
1178
|
machine-readable lifecycle fields such as `state`, `reason`, `issue_urls`,
|