Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a minimal working Ideogram image generation example. Use when starting a new Ideogram integration, testing your setup, or learning basic Ideogram API patterns. Trigger with phrases like "ideogram hello world", "ideogram example", "ideogram quick start", "simple ideogram code", "first ideogram image".
.claude/skills/jeremylongshore-ideogram-hello-world/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 169% | 0% |
Generate your first AI image with Ideogram. Demonstrates the legacy /generate endpoint (JSON body) and the V3 /v1/ideogram-v3/generate endpoint (multipart form). Both return temporary image URLs that must be downloaded promptly.
ideogram-install-auth setupIDEOGRAM_API_KEY environment variable setbashset -euo pipefail # Legacy endpoint (V_2 model, JSON body) curl -s -X POST https://api.ideogram.ai/generate \ -H "Api-Key: $IDEOGRAM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "image_request": { "prompt": "A cheerful golden retriever wearing sunglasses on a beach, with text saying \"Hello Ideogram!\"", "model": "V_2", "style_type": "REALISTIC", "aspect_ratio": "ASPECT_16_9", "magic_prompt_option": "AUTO" } }' | jq '.data[0] | {url, seed, resolution, is_image_safe}'
typescript// hello-ideogram.ts import { writeFileSync } from "fs"; async function helloIdeogram() { // Generate an image with embedded text (Ideogram's specialty) const response = await fetch("https://api.ideogram.ai/generate", { method: "POST", headers: { "Api-Key": process.env.IDEOGRAM_API_KEY!, "Content-Type": "application/json", }, body: JSON.stringify({ image_request: { prompt: 'Modern poster design with bold text "HELLO WORLD" in neon gradient, dark background, clean typography', model: "V_2", style_type: "DESIGN", aspect_ratio: "ASPECT_1_1", magic_prompt_option: "AUTO", num_images: 1, }, }), }); if (!response.ok) { throw new Error(`Generation failed: ${response.status} ${await response.text()}`); } const result = await response.json(); const image = result.data[0]; console.log("Generated image:"); console.log(" URL:", image.url); console.log(" Seed:", image.seed); console.log(" Resolution:", image.resolution); console.log(" Style:", image.style_type); console.log(" Safe:", image.is_image_safe); // Download immediately -- URLs expire after ~1 hour const imgResponse = await fetch(image.url); const buffer = Buffer.from(await imgResponse.arrayBuffer()); writeFileSync("hello-ideogram.png", buffer); console.log("Saved to hello-ideogram.png"); } helloIdeogram().catch(console.error);
python# hello_ideogram.py import os, requests response = requests.post( "https://api.ideogram.ai/generate", headers={ "Api-Key": os.environ["IDEOGRAM_API_KEY"], "Content-Type": "application/json", }, json={ "image_request": { "prompt": 'Modern poster design with bold text "HELLO WORLD" in neon gradient, dark background', "model": "V_2", "style_type": "DESIGN", "aspect_ratio": "ASPECT_1_1", "magic_prompt_option": "AUTO", } }, ) response.raise_for_status() image = response.json()["data"][0] print(f"URL: {image['url']}") print(f"Seed: {image['seed']}") # Download the image (URLs expire) img_data = requests.get(image["url"]).content with open("hello-ideogram.png", "wb") as f: f.write(img_data) print("Saved to hello-ideogram.png")
| Parameter | Values | Default | |-----------|--------|---------| | model | V_1, V_1_TURBO, V_2, V_2_TURBO, V_2A, V_2A_TURBO | V_2 | | style_type | AUTO, GENERAL, REALISTIC, DESIGN, RENDER_3D, ANIME | AUTO | | aspect_ratio | ASPECT_1_1, ASPECT_16_9, ASPECT_9_16, ASPECT_3_2, ASPECT_2_3, ASPECT_4_3, ASPECT_3_4, ASPECT_10_16, ASPECT_16_10, ASPECT_1_3, ASPECT_3_1 | ASPECT_1_1 | | magic_prompt_option | AUTO, ON, OFF | AUTO | | num_images | 1-4 | 1 |
json{ "created": "2025-01-15T10:30:00Z", "data": [ { "url": "https://ideogram.ai/assets/image/...", "prompt": "expanded prompt if magic_prompt was ON", "resolution": "1024x1024", "is_image_safe": true, "seed": 12345, "style_type": "DESIGN" } ] }
| Error | HTTP Status | Cause | Solution | |-------|-------------|-------|----------| | Auth error | 401 | Missing or invalid Api-Key header | Check IDEOGRAM_API_KEY env var | | Safety rejected | 422 | Prompt failed content filter | Remove flagged terms, rephrase | | Rate limited | 429 | Too many in-flight requests | Wait and retry with backoff | | Bad request | 400 | Invalid parameter values | Check enum values match exactly |
Proceed to ideogram-local-dev-loop for development workflow setup.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 17,876 | 12,474 | -30% | 1 | 1 | 0% | 2,144 | 3,268 | +52% | 0 | 0 | — |
case-02 | fail→pass | 11,453 | 8,738 | -24% | 1 | 1 | 0% | 1,214 | 2,350 | +94% | 0 | 0 | — |
case-03 | pass→pass | 14,772 | 2,207 | -85% | 1 | 1 | 0% | 687 | 2,071 | +201% | 0 | 0 | — |
case-04 | pass→pass | 6,056 | 4,278 | -29% | 1 | 1 | 0% | 1,163 | 2,551 | +119% | 0 | 0 | — |
case-09 | pass→pass | 10,255 | 8,032 | -22% | 1 | 1 | 0% | 999 | 2,212 | +121% | 0 | 0 | — |
case-05 | pass→pass | 10,653 | 12,020 | +13% | 1 | 1 | 0% | 1,800 | 2,674 | +49% | 0 | 0 | — |
case-06 | pass→pass | 7,226 | 8,679 | +20% | 1 | 1 | 0% | 1,445 | 2,437 | +69% | 0 | 0 | — |
case-07 | pass→pass | 6,191 | 5,512 | -11% | 1 | 1 | 0% | 1,176 | 2,364 | +101% | 0 | 0 | — |
case-08 | pass→pass | 6,375 | 4,493 | -30% | 1 | 1 | 0% | 1,209 | 2,493 | +106% | 0 | 0 | — |
case-10 | pass→fail | 7,471 | 3,176 | -57% | 1 | 1 | 0% | 1,422 | 2,174 | +53% | 0 | 0 | — |
case-11 | fail→pass | 11,563 | 6,877 | -41% | 1 | 1 | 0% | 1,095 | 1,918 | +75% | 0 | 0 | — |
case-12 | pass→pass | 48,324 | 9,598 | -80% | 1 | 1 | 0% | 919 | 2,363 | +157% | 0 | 0 | — |
case-13 | pass→pass | 8,924 | 6,866 | -23% | 1 | 1 | 0% | 652 | 1,951 | +199% | 0 | 0 | — |
case-14 | fail→pass | 11,826 | 2,055 | -83% | 1 | 1 | 0% | 1,019 | 1,994 | +96% | 0 | 0 | — |
case-15 | pass→pass | 34,202 | 10,681 | -69% | 1 | 1 | 0% | 697 | 2,013 | +189% | 0 | 0 | — |
case-16 | pass→pass | 6,074 | 2,386 | -61% | 1 | 1 | 0% | 996 | 2,059 | +107% | 0 | 0 | — |
case-17 | fail→pass | 11,910 | 2,152 | -82% | 1 | 1 | 0% | 2,267 | 2,005 | -12% | 0 | 0 | — |
case-18 | fail→pass | 19,469 | 2,722 | -86% | 1 | 1 | 0% | 781 | 2,104 | +169% | 0 | 0 | — |
case-19 | fail→pass | 5,999 | 1,847 | -69% | 1 | 1 | 0% | 1,156 | 1,949 | +69% | 0 | 0 | — |
case-20 | pass→pass | 8,731 | 6,886 | -21% | 1 | 1 | 0% | 555 | 1,952 | +252% | 0 | 0 | — |
case-21 | fail→fail | 22,484 | 27,507 | +22% | 1 | 1 | 0% | 3,036 | 7,489 | +147% | 0 | 0 | — |
case-22 | pass→pass | 15,054 | 23,595 | +57% | 1 | 1 | 0% | 2,599 | 4,338 | +67% | 0 | 0 | — |
case-23 | pass→pass | 7,664 | 9,894 | +29% | 1 | 1 | 0% | 1,233 | 2,413 | +96% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.