From Venice AI Skills
Generates images from text prompts via Venice API, supporting both Venice-native and OpenAI-compatible endpoints. Includes style presets and reference-image matching.
How this skill is triggered — by the user, by Claude, or both
Slash command
/venice:venice-image-generateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two text-to-image endpoints:
Two text-to-image endpoints:
POST /api/v1/image/generate — Venice-native, full control (negative prompts, CFG, seed, up to 4 variants).POST /api/v1/images/generations — OpenAI-compatible, fewer knobs but drop-in for the OpenAI SDK.Plus:
GET /api/v1/image/styles — list of style preset names for style_preset.For editing / upscaling / multi-image / background removal, see venice-image-edit.
images.generate and want a zero-change SDK swap.style_references)./image/generate — Venice-nativecurl https://api.venice.ai/api/v1/image/generate \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "z-image-turbo",
"prompt": "A beautiful sunset over a mountain range",
"width": 1024,
"height": 1024,
"cfg_scale": 7.5,
"steps": 8,
"seed": 123456789,
"variants": 1,
"format": "webp",
"style_preset": "3D Model",
"safe_mode": true
}'
| Field | Type | Default | Notes |
|---|---|---|---|
model | string | — | Required. Image model ID. GET /models?type=image. |
prompt | string | — | Required. Max promptCharacterLimit from the model's model_spec.constraints (typically 1500–7500). |
negative_prompt | string | — | Describe what not to show. Same character cap as prompt. |
width, height | int | 1024, 1024 | ≤ 1280 each. Must be divisible by constraints.widthHeightDivisor on the model's model_spec. |
aspect_ratio | string | — | "1:1", "16:9", "9:16", … — used by models like Nano Banana instead of width/height. |
resolution | string | — | "1K", "2K", "4K" — used by resolution-driven models. |
cfg_scale | number | model default | 0 < x ≤ 20. Higher = more prompt adherence. |
steps | int | 8 | Inference steps. Some models ignore it (e.g. Turbo). |
seed | int | 0 | -999999999..999999999. Use 0/omit for random. |
variants | int | 1 | 1–4. Only if return_binary: false. |
lora_strength | int | — | 0–100 when model uses Loras. |
style_preset | string | — | Value from GET /image/styles. |
style_references | array | — | Reference images that guide the aesthetic of the output. Each item: { "image": <base64 or http(s) URL, <8MB>, "strength": 0.1–1 (default 0.5) }. Only on models with supportsStyleReferences: true; per-model cap in constraints.maxStyleReferences. strength is ignored when constraints.supportsStyleReferenceStrength is false. |
format | "webp"/"png"/"jpeg" | webp | Response image format. |
return_binary | bool | false | true → binary image/* response; false → JSON with base64. |
embed_exif_metadata | bool | false | Embed prompt info in EXIF. |
hide_watermark | bool | false | Venice may still watermark certain content. |
safe_mode | bool | true | Blurs adult content. |
enable_web_search | bool | false | Only some models. Charges extra. |
inpaint | — | — | Deprecated since May 19 2025. A new inpaint API is forthcoming. |
return_binary: false){
"id": "...",
"images": ["<base64>", "<base64>"],
"timing": {...},
"request": {...}
}
With return_binary: true, response is raw image/webp (or png/jpeg) with matching Content-Type.
/images/generations — OpenAI-compatibleUse this if you're already on the OpenAI SDK. Field names match openai.images.generate().
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.VENICE_API_KEY,
baseURL: 'https://api.venice.ai/api/v1',
})
const res = await client.images.generate({
model: 'z-image-turbo',
prompt: 'A beautiful sunset over mountain ranges',
size: '1024x1024',
response_format: 'b64_json',
})
const b64 = res.data[0].b64_json
| Field | Values | Notes |
|---|---|---|
model | string, default "default" | Unknown model IDs fall back to Venice's default. |
prompt | string, ≤ 1500 chars | Required. |
size | auto, 256x256, 512x512, 1024x1024, 1536x1024, 1024x1536, 1792x1024, 1024x1792 | — |
output_format | jpeg / png / webp | Defaults to png. |
response_format | b64_json / url | url returns a data: URL (not a hosted URL). |
moderation | auto (safe mode on) / low (safe mode off) | — |
n | 1 | Venice only supports a single image per call here. |
quality, style (vivid/natural), background, output_compression, user | — | Accepted for OpenAI compat, not used by Venice. |
If you need variants, seed, negative_prompt, cfg_scale, style_preset, or style_references, switch to /image/generate.
/image/styles — list presetscurl https://api.venice.ai/api/v1/image/styles \
-H "Authorization: Bearer $VENICE_API_KEY"
Returns a list of styles[], each with a name you can pass to style_preset. Cache this — it's small and stable.
curl "https://api.venice.ai/api/v1/models?type=image" \
-H "Authorization: Bearer $VENICE_API_KEY"
Inspect per-model model_spec:
constraints.widthHeightDivisor — width and height must both be divisible by this.constraints.aspectRatios[] + defaultAspectRatio — if present, the model supports aspect-ratio-driven sizing.constraints.resolutions[] + defaultResolution — if present, the model supports resolution (1K/2K/4K).constraints.steps.{default,max} — step bounds (some models ignore steps entirely).constraints.promptCharacterLimit — max prompt length (also applies to negative_prompt).supportsStyleReferences — whether the model accepts style_references on /image/generate.constraints.maxStyleReferences — max number of style reference images (only present on supporting models).constraints.supportsStyleReferenceStrength — whether per-reference strength is honored (only present on supporting models).pricing.generation.usd — flat USD per image, or pricing.resolutions[].usd for resolution-tiered models.Pick a model that matches the feature + size combo you plan to use.
{"model": "z-image-turbo", "prompt": "...", "seed": 42, "variants": 4}
{"model": "nano-banana-2", "prompt": "...", "aspect_ratio": "16:9", "resolution": "2K"}
(Other nano-banana variants: nano-banana-pro. Always verify the current ID via GET /models?type=image.)
{
"model": "z-image-turbo",
"prompt": "a red sports car in a parking lot",
"negative_prompt": "blurry, people, clouds",
"style_preset": "3D Model"
}
{
"model": "krea-v2-large",
"prompt": "a lighthouse on a rocky coast at dusk",
"style_references": [
{ "image": "https://example.com/ref-1.png", "strength": 0.8 },
{ "image": "data:image/png;base64,....", "strength": 0.4 }
]
}
Describe the subject in the prompt; the references carry the style. As of mid-2026 the supporting models are krea-v2-large / krea-v2-medium (up to 3 refs, strength honored) and luma-uni-1 / luma-uni-1-max (up to 3 refs, strength ignored) — all anonymized routing. Always re-verify via GET /models?type=image (supportsStyleReferences).
const res = await fetch('https://api.venice.ai/api/v1/image/generate', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.VENICE_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'z-image-turbo', prompt: '...', return_binary: true }),
})
if (!res.ok) throw new Error(await res.text())
const buf = Buffer.from(await res.arrayBuffer())
await fs.writeFile('out.webp', buf)
| Code | Meaning |
|---|---|
400 | Bad params (e.g. dimensions not divisible by widthHeightDivisor, prompt too long, variants>1 with return_binary). |
401 | Auth or Pro-only model. |
402 | Insufficient balance. Bearer: plain { "error": "Insufficient balance" }; x402: PAYMENT_REQUIRED body + PAYMENT-REQUIRED header. |
415 | Wrong Content-Type (send application/json for this endpoint). |
429 | Rate limited. |
500 / 503 | Inference or capacity issue — retry with jitter. |
(Content-policy violations on /image/generate come back as 400 with an error string, not 422 — the 422 shape is specific to audio generation paths.)
width/height, aspect_ratio + resolution, or (OpenAI-compat) size. Match the model's constraints.variants > 1 requires return_binary: false (JSON with base64 array).steps is ignored by fast/turbo models; they hardcode step count internally.hide_watermark: true is advisory — Venice may still watermark content flagged by safety classifiers.inpaint field is deprecated; don't use it.style_references is silently unsupported outside the models flagged supportsStyleReferences: true; check the flag rather than trying and inspecting output. Each reference image must be < 8MB.response_format: "url" returns a data URL, not a hosted URL — plan for that if you're saving to storage.npx claudepluginhub veniceai/skillsGenerates, edits, and upscales images; creates videos from images or other videos using Venice AI APIs. Useful for AI media generation with uncensored models.
Generates images from text, edits images with references, performs product placement, style transfer, and multi-image composition using OpenAI DALL-E or Google Gemini.
Provides prompting techniques for AI image generation and editing models on Replicate. Covers natural language prompts, photographic vocabulary, and iterative editing.