Skip to content

Latest commit

 

History

268 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI API Catalog

Compare prices, providers, and capabilities for 2,000+ AI models available via API — from LLMs to video generation.

Live Catalog · Report an Issue · Add a Model

License Models Providers Updated Open Source


Why AI API Catalog?

  • One place, all providers — LiteLLM, OpenRouter, fal.ai, Replicate, Fireworks, Runway, kie.ai, piapi.ai, and 17 more aggregated into a single searchable catalog
  • Real pricing — per-token, per-second, per-image, per-video with best-price highlighting across providers
  • Beyond LLMs — video generation, image generation, TTS, STT, music generation, embeddings all in one place
  • Weekly auto-updates — scripts pull fresh data from provider APIs every Monday
  • Community-maintained — missing a model or wrong price? Open a PR

What's in the catalog

Category Examples Models
💬 LLM / Chat GPT-4o, Claude 4, Gemini 2.5 Pro, DeepSeek R1 800+
🎨 Image generation FLUX.1, Stable Diffusion, DALL-E 3, Midjourney 500+
🎬 Video generation Veo 3.1, Kling 2.1, Sora 2, WAN 2.1, Seedance 200+
🔊 TTS ElevenLabs, OpenAI TTS, Kokoro, Cartesia 100+
🎤 STT Whisper, Deepgram, AssemblyAI 30+
🎵 Music Suno, Udio, MusicGen 20+
📊 Embeddings text-embedding-3, Voyage-4, Cohere Embed 50+

25+ providers including: OpenAI, Anthropic, Google, Mistral, Groq, DeepSeek, OpenRouter, Together AI, Fireworks AI, Replicate, fal.ai, HuggingFace, Runway, Stability AI, ElevenLabs, Deepgram, piapi.ai, wavespeed.ai, kie.ai, aimlapi.com


Quick Start

No build step. No dependencies. Open directly in browser:

git clone https://github.com/jurczykpawel/ai-api-catalog.git
cd ai-api-catalog
python3 -m http.server 8080
# Open http://localhost:8080

Note: Must be served via HTTP, not opened as file:// (fetch() calls won't work).


Updating data

Run daily to pull fresh pricing from all provider APIs:

bash scripts/update-litellm.sh

This runs 9 steps: fetches LiteLLM pricing, OpenRouter (640+ models via frontend API), fal.ai (700+ models), HuggingFace, AIMLAPI, piapi.ai, WaveSpeed, kie.ai, Runway — then merges and validates.

Optional env vars:

export HF_TOKEN=hf_xxx              # Higher HuggingFace rate limits
export REPLICATE_API_TOKEN=r8_xxx   # Enable Replicate fetch (450+ models)
export FIREWORKS_API_KEY=fw_xxx     # Enable Fireworks fetch (250 models)
export RUNWAY_API_KEY=key_xxx       # Enable Runway fetch
export OR_NOTIFY_WEBHOOK=https://...  # Discord/Slack alert if OpenRouter API changes

After updating:

git add data/ && git commit -m "chore: update catalog $(date +%Y-%m-%d)"

Project structure

ai-api-catalog/
├── index.html                  # Single-file frontend (Tailwind CDN + vanilla JS)
├── data/
│   ├── models.json             # Generated — 2000+ models with pricing (do not edit)
│   ├── models-manual.json      # Hand-curated models: video, image, audio, niche LLMs
│   ├── providers.json          # Provider metadata: name, logo color, type
│   ├── categories.json         # Categories with icons and EN/PL translations
│   ├── provider-patches.json   # Manual provider additions for specific model IDs
│   └── *-raw.json              # Raw API responses (auto-fetched, do not edit)
├── scripts/
│   ├── update-litellm.sh       # Main update script — run this daily
│   ├── merge-data.py           # Merges all sources into models.json
│   ├── validate-schema.py      # JSON schema validation before deploy
│   ├── model-radar.py          # Detects new models vs last snapshot
│   ├── fetch-openrouter.py     # OpenRouter (640+ models, frontend + v1 fallback)
│   ├── fetch-fal.py            # fal.ai (700+ models)
│   ├── fetch-huggingface.py    # HuggingFace Inference API
│   ├── fetch-aimlapi.py        # AIMLAPI
│   ├── fetch-replicate.py      # Replicate (requires token)
│   ├── fetch-fireworks.py      # Fireworks AI (requires key)
│   ├── fetch-piapi.py          # piapi.ai curated pricing
│   ├── fetch-wavespeed.py      # WaveSpeed AI curated pricing
│   ├── fetch-kie.py            # kie.ai curated pricing
│   └── fetch-runway.py         # Runway ML curated pricing
└── n8n/
    ├── model-radar-workflow.json   # Weekly update + change detection
    └── news-radar-workflow.json    # Daily AI news → extract new models → Discord

Data schema

Model entry (data/models-manual.json — source of truth for manual entries)

{
  "id": "veo-3-1",
  "name": "Veo 3.1",
  "category": "video_generation",
  "description": "Google video model with synchronized native audio.",
  "tags": ["text-to-video", "google", "audio-sync"],
  "capabilities": ["text_to_video", "audio_generation"],
  "open_source": false,
  "local_available": false,
  "providers": [
    {
      "provider_id": "google",
      "pricing": { "per_second": 0.40, "notes": "720p/1080p via Gemini API" },
      "url": "https://ai.google.dev/gemini-api/docs/video",
      "affiliate_url": null,
      "available": true
    }
  ],
  "updated_at": "2026-03-10",
  "source": "manual"
}

Categories: llm · image_generation · video_generation · audio_tts · audio_stt · music_generation · embedding · moderation

Capabilities: vision · reasoning · function_calling · web_search · prompt_caching · text_to_video · image_to_video · image_editing · audio_generation · json_mode

Pricing units: input_per_1m · output_per_1m · per_image · per_second · per_video · per_minute · per_song · notes


Contributing

Contributions are welcome — especially pricing corrections and missing models.

Fix a price or add a provider to an existing model

Edit data/models-manual.json. Find the model by id and add/update the provider entry. Then validate:

python3 scripts/validate-schema.py data/models.json

Add a new model (video, image, audio, niche LLM)

  1. Add an entry to data/models-manual.json following the schema above
  2. Run bash scripts/update-litellm.sh to regenerate models.json
  3. Run python3 scripts/validate-schema.py data/models.json — must return zero errors
  4. Open a PR with a brief description of the model and source for the pricing

Add a new provider (automated fetch)

  1. Add provider metadata to data/providers.json
  2. Create scripts/fetch-PROVIDER.py (use fetch-piapi.py as a template for curated providers, or fetch-fal.py for API-based fetch)
  3. Add a step to scripts/update-litellm.sh
  4. Add --provider argument and parser in scripts/merge-data.py (use parse_curated())

Provider patches (manual additions without a full fetch script)

For models that exist in LiteLLM but are missing a provider entry, use data/provider-patches.json:

{
  "patches": [
    {
      "model_id": "some-model",
      "provider": {
        "provider_id": "fireworks",
        "pricing": { "per_second": 0.05 },
        "url": "https://fireworks.ai/models/fireworks/some-model",
        "available": true
      }
    }
  ]
}

Tech stack


Roadmap

  • 2000+ models across 8 categories
  • 25+ providers with live pricing
  • Weekly automated updates via shell scripts
  • OpenRouter frontend API (640 models including image gen)
  • Fireworks AI as full data source
  • Free API detection (free_type: open vs tier)
  • OSS/local availability auto-detection
  • Model Radar — weekly diff and change detection
  • AI News Radar — daily RSS → Claude → Discord
  • Price change history (track over time)
  • Affiliate links (OpenRouter, Replicate, fal.ai, ElevenLabs, piapi.ai)
  • Email alerts for price changes
  • B2B catalog API (programmatic access)

Deployment

rsync -avz --exclude='.git' . mikrus:~/sites/ai-api-catalog/

nginx config:

server {
    root /home/ubuntu/sites/ai-api-catalog;
    index index.html;
    location / { try_files $uri $uri/ =404; }
}

Acknowledgments


Support

The catalog is free and open source, but model prices change weekly and the crawler doesn't run on air. You can top up the tank:

⚡ Top up the tank

License

MIT — see LICENSE

About

Compare prices & providers for 2000+ AI models — LLMs, video, image, audio

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages