Monitor Ideogram AI image generation for latency, credit consumption, and output quality. Key metrics include generation time (typically 5-15 seconds per image depending on model and resolution), credit cost per generation (varies by model version and quality setting), generation success rate, and prompt safety filter rejection rate.
async function trackedGeneration(prompt: string, options: any) {
const start = performance.now();
try {
const result = await ideogram.generate({ image_request: { prompt, ...options } });
const duration = performance.now() - start;
emitHistogram('ideogram_generation_duration_ms', duration, { model: options.model || 'V_2' });
emitCounter('ideogram_generations_total', 1, { model: options.model || 'V_2', status: 'success' });
emitCounter('ideogram_credits_used', result.credits_consumed || 1, { model: options.model || 'V_2' });
return result;
} catch (err: any) {
emitCounter('ideogram_generations_total', 1, { status: 'error', reason: err.code || 'unknown' });
throw err;
}
}
// Monitor how often prompts are rejected by the safety filter
function handleSafetyRejection(prompt: string, reason: string) {
emitCounter('ideogram_safety_rejections_total', 1, { reason });
console.warn(`Prompt rejected: ${reason}`, { prompt: prompt.substring(0, 50) });
}
set -euo pipefail
# Check remaining credits and burn rate
curl -s https://api.ideogram.ai/v1/usage \
-H "Api-Key: $IDEOGRAM_API_KEY" | \
jq '{credits_remaining, credits_used_today, credits_used_month, daily_avg: (.credits_used_month / 30), days_remaining: (.credits_remaining / (.credits_used_month / 30 + 0.01))}'
groups:
- name: ideogram
rules:
- alert: IdeogramGenerationSlow
expr: histogram_quantile(0.95, rate(ideogram_generation_duration_ms_bucket[30m])) > 20000 # 20000 = configured value
annotations: { summary: "Ideogram P95 generation time exceeds 20 seconds" }
- alert: IdeogramCreditBurnHigh
expr: rate(ideogram_credits_used[1h]) > 100
annotations: { summary: "Ideogram burning >100 credits/hour" }
- alert: IdeogramCreditsLow
expr: ideogram_credits_remaining < 200 # HTTP 200 OK
annotations: { summary: "Ideogram credits below 200 -- purchase more" } # HTTP 200 OK
- alert: IdeogramHighRejectionRate
expr: rate(ideogram_safety_rejections_total[1h]) / rate(ideogram_generations_total[1h]) > 0.1
annotations: { summary: "Ideogram safety rejection rate exceeds 10%" }
Track: generation volume by model version, latency distribution, credit consumption trend, safety rejection rate, generation success/failure ratio, and average credits per generation. Compare V_2 vs V_2_TURBO for cost-vs-speed tradeoffs.
| Issue | Cause | Solution |
|---|---|---|
| Generation timeout | Complex prompt or high-res request | Reduce resolution or simplify prompt |
402 credit error |
Credits exhausted | Purchase more credits on ideogram.ai |
| Safety filter rejection | Prompt contains restricted content | Rephrase prompt, avoid brand names |
429 rate limited |
Too many concurrent generations | Queue requests with concurrency limit |
Basic usage: Apply ideogram observability to a standard project setup with default configuration options.
Advanced scenario: Customize ideogram observability for production environments with multiple constraints and team-specific requirements.