CLI for querying AI model benchmarks, pricing, and performance data from Artificial Analysis.
Wraps every AA v2 data endpoint — LLMs, text-to-speech, text-to-image, image-editing, text-to-video, image-to-video — plus a raw passthrough for anything new.
cargo install --git https://github.com/aneym/artificial-analysis-cliOr build from source:
git clone https://github.com/aneym/artificial-analysis-cli
cd artificial-analysis-cli
cargo install --path .Get a free API key at artificialanalysis.ai/account/api, then:
aa auth <your-api-key>Or set AA_API_KEY, or point at a shared .env:
aa auth --env-file ~/.config/myapp/.envaa endpoints # list every supported endpoint
aa models # LLMs — quality, pricing, speed (400+ models)
aa tts # text-to-speech rankings (aliases: voice, speech)
aa image # text-to-image rankings (alias: img)
aa image-edit # image editing rankings
aa video # text-to-video rankings
aa img2vid # image-to-video rankings (alias: i2v)
aa media <kind> # generic form of all of the above
aa raw <path> # raw JSON from any AA v2 endpoint
aa show <model> # model detail (--kind <llm|tts|image|...> to switch)
aa compare a b c # side-by-side (--kind to switch)
aa cache # cache ages per endpoint (--clear, --clear --all)
aa auth # API key managementEvery list command accepts --json for programmatic output.
# Top models by intelligence (default)
aa models
# Sort by cost, value, speed, coding, math
aa models --sort value
aa models --sort cost --cheap
# Filter
aa models --filter flash --creator google
aa models --min-quality 40 --max-cost 5
# Raw JSON
aa models --json -n 5 | jqEvery media command supports the same flags:
# Top 10 voice models by ELO
aa tts -n 10
# Best text-to-image model by ELO
aa image --sort elo -n 1
# Newest image-to-video models
aa img2vid --sort recent -n 5
# Filter by creator
aa image --creator openai
aa tts --creator elevenlabs
# Per-category ELO breakdown (image + video endpoints only)
aa image --categories
aa show "Nano Banana 2" --kind image --categories
# JSON for scripting
aa tts --json -a | jq '.[] | select(.elo > 1150) | .name'# LLMs (default kind)
aa compare gpt-5 claude-opus-4-7 gemini-3-pro
# TTS
aa compare "Inworld TTS 1.5 Max" "Eleven v3" "Gemini 3.1 Flash TTS" --kind tts
# Image
aa compare "GPT Image 1.5" "Nano Banana 2" "Riverflow 2.0" --kind imageaa show <model> works the same way:
aa show "Eleven v3" --kind tts
aa show "GPT Image 1.5" --kind image --categoriesFor anything this CLI doesn't wrap yet:
aa raw data/media/text-to-image --query include_categories=true --pretty | jq
aa raw data/llms/models | jq '.data | length'Per-endpoint caches with a 24h TTL — one key buys hundreds of models.
aa cache # ages for every endpoint you've touched
aa cache --clear # clear LLM cache only
aa cache --clear --all # clear every cache
aa models --refresh # one-shot refresh (bypasses cache)This CLI wraps the Artificial Analysis API. The data available depends on your API tier:
| Feature | Free | Commercial |
|---|---|---|
| LLM intelligence, coding, math indices | Yes | Yes |
| Pricing (input/output per M tokens) | Yes | Yes |
| Output speed & TTFT | Yes | Yes |
| Media ELO leaderboards (TTS, image, video, etc.) | Yes | Yes |
| Rate limit | 25 req/day | Custom |
| Prompt length benchmarks (10k, 100k) | No | Yes |
| Provider-level benchmarks (Azure, Bedrock, etc.) | No | Yes |
| CritPt benchmark evaluation | 10 req/day | Custom |
Caches default to 24h — one API call per endpoint per day is plenty.
All data provided by Artificial Analysis. Attribution is required per their API terms.
MIT