Install
$ agentstack add skill-veniceai-skills-venice-image-edit ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Venice Image Editing
Four endpoints, all operating on existing images:
| Endpoint | Purpose | |---|---| | POST /image/edit | Transform one image with a text prompt. | | POST /image/multi-edit | Composite / layer 2–3 images with a single prompt. Also has a multipart/form-data variant. | | POST /image/upscale | Upscale 2–4× and/or enhance quality. | | POST /image/background-remove | Produce a transparent cutout. |
For text-to-image generation, see [venice-image-generate](../venice-image-generate/SKILL.md).
Shared rules
- Input image accepts base64 string, file upload (multipart for
/image/multi-edit), or HTTPS URL (for edit + multi-edit + background-remove). - File size Field name:
/image/multi-edittakesmodelId, notmodel. This is the only image endpoint that usesmodelIdas the primary field name.
JSON (base64 or URLs)
{
"modelId": "qwen-edit",
"prompt": "Place the person from image 2 onto the beach in image 1",
"images": [
"https://example.com/beach.jpg",
"data:image/png;base64,iVBOR..."
],
"safe_mode": true
}
Multipart (file upload)
POST /image/multi-edit
Content-Type: multipart/form-data
--boundary
Content-Disposition: form-data; name="modelId"
qwen-edit
--boundary
Content-Disposition: form-data; name="prompt"
Place the person from image 2 onto the beach in image 1
--boundary
Content-Disposition: form-data; name="images"; filename="base.jpg"
Content-Type: image/jpeg
--boundary
Content-Disposition: form-data; name="images"; filename="subject.png"
Content-Type: image/png
--boundary--
| Field | Notes | |---|---| | modelId | Required field name (multi-edit does not accept model). Default qwen-edit. | | prompt | Required, ≤ 32 768 chars. | | images | Required. 1–3 items. JSON variant accepts base64 or HTTPS URLs; multipart variant accepts raw file parts. | | safe_mode | Default true. |
/image/upscale
Upscale by 1–4×, optionally running Venice's enhancer. Set enhance: true + scale: 1 to enhance without scaling.
curl https://api.venice.ai/api/v1/image/upscale \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "iVBORw0KGgo...",
"scale": 2,
"enhance": true,
"enhanceCreativity": 0.5,
"enhancePrompt": "gold",
"replication": 0.35
}'
| Field | Type | Default | Notes | |---|---|---|---| | image | base64 or file | — | Required. Must be ≥ 65 536 px² to start. | | scale | 1..4 | 2 | 1 requires enhance: true. 4 on large images auto-scales down to stay within 16 MP. | | enhance | bool / "true" / "false" | "false" | Turn on Venice's enhancer. Required when scale === 1. | | enhanceCreativity | 0..1 | 0.5 | Higher = more AI reinterpretation. 1 essentially produces a new image. | | enhancePrompt | string, ≤ 1500 | — | Short stylistic cue: "gold", "marble", "angry, menacing". | | replication | 0..1 | 0.35 | Preserve original lines/noise. Higher = less plastic / less AI-feel. |
Response is the upscaled image as binary (image/png typically).
/image/background-remove
Produce a transparent PNG cutout.
# With base64
curl https://api.venice.ai/api/v1/image/background-remove \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "iVBOR..."}'
# With a URL
curl https://api.venice.ai/api/v1/image/background-remove \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image_url": "https://example.com/photo.jpg"}'
Send either image (base64 / file) or image_url. Response is image/png with alpha channel.
Error behavior (all four endpoints)
| Code | Cause | |---|---| | 400 | Bad params — image dims out of range, file too large, unknown model, unsupported aspect ratio for the model, content-policy refusal. | | 401 | Auth failed. (Pro-gating on these paths surfaces as 400 / 402 depending on condition.) | | 402 | Insufficient balance. Bearer: plain { "error": "Insufficient balance" }. x402: PAYMENT_REQUIRED body + PAYMENT-REQUIRED header. | | 415 | Wrong Content-Type (e.g. JSON sent to a multipart endpoint, or vice versa). | | 429 | Rate limited. | | 500 / 503 | Inference / capacity issue — retry with jitter. |
(413 and 422 are not documented for these image paths in the OpenAPI spec — a 413 from the platform may still appear if you exceed ingress limits, but treat 400 / 415 as the primary failure surface.)
Gotchas
/image/multi-editimages[]explicitly acceptsdata:image/...;base64,...URLs or plain base64. For/image/editand/image/upscale, send base64 as a plain string unless the docs say otherwise — if your client adds adata:prefix and you get a400, strip it.- For multipart
/image/multi-edit, the field name isimagesand you send multiple parts with the same field name — order matters (base first). - Field-name asymmetry:
/image/editprefersmodel(modelIdis a deprecated alias)./image/multi-editaccepts onlymodelId. Get the name right per endpoint — sending the wrong one is a400. /image/upscalewithscale=4on a large input is silently clamped to stay under 16 MP.safe_mode: truecan blur otherwise valid inputs if the source image trips content classifiers; switch tofalse(and handle the legal/ToS consequences yourself) when you control the input./image/background-removetakes eitherimageorimage_url, not both.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: veniceai
- Source: veniceai/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.