Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Collect Ideogram debug evidence for support tickets and troubleshooting. Use when encountering persistent issues, preparing support tickets, or collecting diagnostic information for Ideogram problems. Trigger with phrases like "ideogram debug", "ideogram support bundle", "collect ideogram logs", "ideogram diagnostic".
.claude/skills/jeremylongshore-ideogram-debug-bundle/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-22 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 46% | 0% |
!node --version 2>/dev/null || echo 'N/A' !python3 --version 2>/dev/null || echo 'N/A' !echo "IDEOGRAM_API_KEY set: ${IDEOGRAM_API_KEY:+YES}${IDEOGRAM_API_KEY:-NO}"
Collect diagnostic information for Ideogram API issues. Produces a tarball with environment details, API connectivity tests, request/response samples, and redacted configuration -- suitable for attaching to support tickets.
IDEOGRAM_API_KEY environment variable setcurl and tar availablebash#!/bin/bash set -euo pipefail BUNDLE_DIR="ideogram-debug-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BUNDLE_DIR" cat > "$BUNDLE_DIR/summary.txt" <<HEADER === Ideogram Debug Bundle === Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ) Hostname: $(hostname) HEADER # --- Environment --- { echo "--- Runtime ---" echo "Node: $(node --version 2>/dev/null || echo 'not installed')" echo "Python: $(python3 --version 2>/dev/null || echo 'not installed')" echo "OS: $(uname -srm)" echo "" echo "--- Ideogram Config ---" echo "API Key: ${IDEOGRAM_API_KEY:+SET (length=${#IDEOGRAM_API_KEY})}${IDEOGRAM_API_KEY:-NOT SET}" } >> "$BUNDLE_DIR/summary.txt" # --- API Connectivity Test --- { echo "" echo "--- API Test (Legacy Generate) ---" RESPONSE=$(curl -s -w "\nHTTP_STATUS:%{http_code}\nTIME_TOTAL:%{time_total}" \ -X POST https://api.ideogram.ai/generate \ -H "Api-Key: ${IDEOGRAM_API_KEY:-missing}" \ -H "Content-Type: application/json" \ -d '{"image_request":{"prompt":"debug test","model":"V_2_TURBO","magic_prompt_option":"OFF"}}' \ 2>&1 || echo "CURL_FAILED") echo "$RESPONSE" | grep -E "HTTP_STATUS|TIME_TOTAL|error" || true echo "$RESPONSE" | head -5 > "$BUNDLE_DIR/api-response-sample.json" } >> "$BUNDLE_DIR/summary.txt" # --- DNS Resolution --- { echo "" echo "--- DNS & Network ---" echo "DNS resolve: $(nslookup api.ideogram.ai 2>/dev/null | grep -A1 'Name:' | tail -1 || echo 'nslookup unavailable')" echo "TLS test: $(curl -s -o /dev/null -w '%{ssl_verify_result}' https://api.ideogram.ai/ 2>/dev/null || echo 'failed')" } >> "$BUNDLE_DIR/summary.txt" # --- Local Configuration (redacted) --- if [ -f .env ]; then sed 's/=.*/=***REDACTED***/' .env > "$BUNDLE_DIR/env-redacted.txt" fi # --- Package versions --- { echo "" echo "--- Dependencies ---" npm list --depth=0 2>/dev/null || echo "No package.json found" pip freeze 2>/dev/null | grep -i ideogram || echo "No Python ideogram packages" } >> "$BUNDLE_DIR/summary.txt" # --- Package --- tar -czf "$BUNDLE_DIR.tar.gz" "$BUNDLE_DIR" rm -rf "$BUNDLE_DIR" echo "Bundle created: $BUNDLE_DIR.tar.gz" echo "Contents: summary.txt, api-response-sample.json, env-redacted.txt"
bashset -euo pipefail # Test API key validity curl -s -o /dev/null -w "Status: %{http_code} | Time: %{time_total}s\n" \ -X POST https://api.ideogram.ai/generate \ -H "Api-Key: $IDEOGRAM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"image_request":{"prompt":"test","model":"V_2_TURBO","magic_prompt_option":"OFF"}}' # Test V3 endpoint curl -s -o /dev/null -w "V3 Status: %{http_code}\n" \ -X POST https://api.ideogram.ai/v1/ideogram-v3/generate \ -H "Api-Key: $IDEOGRAM_API_KEY" \ -F "prompt=test" -F "rendering_speed=FLASH"
typescript// Add to your client for capturing failed requests async function debuggableRequest(url: string, init: RequestInit) { const start = Date.now(); const response = await fetch(url, init); const elapsed = Date.now() - start; if (!response.ok) { const body = await response.text(); console.error(JSON.stringify({ timestamp: new Date().toISOString(), url, method: init.method, status: response.status, elapsed_ms: elapsed, error: body.slice(0, 500), // Redact API key from headers headers: Object.fromEntries( Object.entries(init.headers ?? {}).map(([k, v]) => [k, k.toLowerCase() === "api-key" ? "***REDACTED***" : v] ) ), }, null, 2)); throw new Error(`Ideogram ${response.status}: ${body}`); } return response; }
ALWAYS REDACT before sharing:
.env file valuesSafe to include:
| Item | Purpose | Included | |------|---------|----------| | API key status | Auth verification | SET/NOT SET only | | HTTP status code | Error classification | Full code | | Response time | Latency diagnosis | Seconds | | DNS resolution | Network diagnosis | IP only | | Package versions | Compatibility check | Version strings |
ideogram-debug-YYYYMMDD-HHMMSS.tar.gz containing:summary.txt -- environment, API test, DNS, dependenciesapi-response-sample.json -- truncated API responseenv-redacted.txt -- configuration with values maskedpartnership@ideogram.aiFor rate limit issues, see ideogram-rate-limits.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | 21,929 | 17,831 | -19% | 1 | 1 | 0% | 3,349 | 4,646 | +39% | 0 | 0 | — |
case-01 | pass→pass | 27,927 | 18,941 | -32% | 1 | 1 | 0% | 4,549 | 4,700 | +3% | 0 | 0 | — |
case-02 | fail→pass | 11,334 | 6,052 | -47% | 1 | 1 | 0% | 2,171 | 2,946 | +36% | 0 | 0 | — |
case-04 | pass→pass | 23,798 | 19,525 | -18% | 1 | 1 | 0% | 3,886 | 4,558 | +17% | 0 | 0 | — |
case-05 | pass→pass | 16,399 | 23,917 | +46% | 1 | 1 | 0% | 2,631 | 4,707 | +79% | 0 | 0 | — |
case-06 | pass→pass | 14,849 | 24,107 | +62% | 1 | 1 | 0% | 2,772 | 4,772 | +72% | 0 | 0 | — |
case-07 | fail→pass | 15,368 | 10,794 | -30% | 1 | 1 | 0% | 2,504 | 2,745 | +10% | 0 | 0 | — |
case-08 | fail→fail | 17,090 | 13,707 | -20% | 1 | 1 | 0% | 2,285 | 3,475 | +52% | 0 | 0 | — |
case-22 | fail→pass | 20,404 | 7,384 | -64% | 1 | 1 | 0% | 3,860 | 2,166 | -44% | 0 | 0 | — |
case-09 | fail→pass | 7,348 | 8,692 | +18% | 1 | 1 | 0% | 1,309 | 2,447 | +87% | 0 | 0 | — |
case-10 | pass→pass | 15,195 | 19,136 | +26% | 1 | 1 | 0% | 2,642 | 4,261 | +61% | 0 | 0 | — |
case-11 | pass→pass | 16,633 | 9,526 | -43% | 1 | 1 | 0% | 2,036 | 3,386 | +66% | 0 | 0 | — |
case-12 | fail→pass | 11,347 | 13,089 | +15% | 1 | 1 | 0% | 2,232 | 3,261 | +46% | 0 | 0 | — |
case-13 | fail→pass | 41,014 | 15,076 | -63% | 1 | 1 | 0% | 2,289 | 3,659 | +60% | 0 | 0 | — |
case-14 | pass→pass | 26,007 | 24,834 | -5% | 1 | 1 | 0% | 1,955 | 3,202 | +64% | 0 | 0 | — |
case-15 | pass→pass | 22,748 | 20,941 | -8% | 1 | 1 | 0% | 2,949 | 4,345 | +47% | 0 | 0 | — |
case-16 | pass→fail | 21,696 | 19,746 | -9% | 1 | 1 | 0% | 3,104 | 4,604 | +48% | 0 | 0 | — |
case-17 | fail→pass | 16,415 | 4,556 | -72% | 1 | 1 | 0% | 1,911 | 2,599 | +36% | 0 | 0 | — |
case-18 | pass→pass | 10,088 | 2,543 | -75% | 1 | 1 | 0% | 913 | 2,174 | +138% | 0 | 0 | — |
case-19 | pass→pass | 19,012 | 5,146 | -73% | 1 | 1 | 0% | 2,192 | 2,622 | +20% | 0 | 0 | — |
case-20 | pass→pass | 13,361 | 14,662 | +10% | 1 | 1 | 0% | 2,234 | 3,615 | +62% | 0 | 0 | — |
case-21 | pass→pass | 7,867 | 12,567 | +60% | 1 | 1 | 0% | 1,575 | 3,113 | +98% | 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. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 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.