- ›
/image— AI image generation (async jobs) and free stock photo search, per the published images guide - ›
Model layer— FLUX, Stable Diffusion, Recraft, and others returned by GET /v1/images/models; default CLI examples use fal-ai/flux/schnell - ›
Brand-consistent prompts— pair with `/brand` and encode palette/style in the prompt (see images + brand workflows) - ›
Stock search— naive images stock / GET /v1/images/stock for license-clean photography without generation spend - ›
Composes with /social, /video, /email— URLs from jobs or stock flow into other primitives - ›
Billing— dynamic credits per model; preview with /v1/images/pricing as documented
Today we're launching /image — the primitive that gives an AI Employee on-demand visuals. Logos, social cards, product mockups, marketing imagery — composed with /brand by passing palette and style into the prompt, and routed through the documented model catalog (FLUX, Recraft, Stable Diffusion, etc. — see Image Generation).
The problem: image generation without brand consistency is noise
Most agent-run businesses generate many images per week. Without discipline, palettes drift and every asset looks slightly different. The status quo is either creator UIs or raw model APIs where you own brand enforcement, job polling, and cost estimation.
How /image works
- Establish brand context — keep
/brandfields handy as text you inject into prompts (the public images doc centers on prompt +input; wirebrandIdonly if your integration already supports it). - Generate —
POST /v1/images/generatewithmodelandinput: { prompt, image_size, num_images, ... }per the guide. - Use — pass resulting URLs to
/social,/video, or/email.
Two ways to generate: CLI or API
1. CLI
naive images generate \
"social card announcing /image launch, our brand palette" \
--model fal-ai/flux/schnell \
--wait
List models with naive images models.
2. API
const response = await fetch("https://api.usenaive.ai/v1/images/generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.NAIVE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "fal-ai/flux/schnell",
input: {
prompt: "minimalist logo for a faceless YouTube channel called Lumen Letters",
image_size: "square_hd",
num_images: 1,
},
}),
});
const job = await response.json();
// Poll GET /v1/images/:jobId or GET /v1/jobs/:id per the images guide
Brand-consistent output
Reference brand colors and tone in the prompt (and keep using the same model id) so generations stay aligned until a dedicated brandId passthrough is part of your stack:
const response = await fetch("https://api.usenaive.ai/v1/images/generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.NAIVE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "fal-ai/flux/schnell",
input: {
prompt:
"OG card for our weekly newsletter issue 7, flat design using #0F172A #3B82F6 #F59E0B",
image_size: "landscape_16_9",
},
}),
});
Stock photos in the same primitive
When you need a real photograph, use stock search (naive images stock / GET /v1/images/stock) — documented as free credits-wise in the images guide.
naive images stock "modern office workspace" --count 10 --orientation landscape
Errors and moderation
Use the Error Handling table in the images guide (insufficient_credits, provider_error, invalid_model) — it is the authoritative behavior for recoverable failures.
What you can build with /image
Generate a logo at Company creation — Compose /image with /brand and /formation once the Company exists.
Produce per-post social imagery — Pair /image with /social.
Test creative variants — Batch prompts and models; measure downstream engagement in your own analytics.
Get started
- Read the docs: usenaive.ai/docs/getting-started/images
- Quickstart: usenaive.ai/docs/getting-started/quickstart
- Background reading: Image Generation guide and fal.ai FLUX docs.
- Join the community on Discord