# Oatda List Models

> List and filter AI models from OATDA's unified gateway — ChatGPT/GPT-5, Claude Sonnet 4.5, Gemini 3, Grok 4, Qwen3, Kimi K2.7, GLM-5, and 100+ more across 10+ providers. Triggers when the user wants to see available models, pick the right LLM for a task, discover provider-specific parameters for image/video/audio generation, or filter by capability (chat/image/video/audio/vision) and provider. Ideal for model discovery, pricing comparison, and capability lookup before calling other OATDA skills.

- Skill: `devcsde/oatda-list-models-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add devcsde/oatda-list-models-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/devcsde/oatda-list-models-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: devcsde (https://skillmd.com/u/devcsde)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/devcsde/oatda-list-models-2

---


# OATDA List Models

List all available AI models from OATDA's providers with optional filtering.

## API Key Resolution

All commands need the OATDA API key. Resolve it inline for each `exec` call:

```bash
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}"
```

If the key is empty or `null`, tell the user to get one at https://oatda.com and configure it.

**Security**: Never print the full API key. Only verify existence or show first 8 chars.

## API Calls

All requests are GET. Add query parameters to filter.

### List all models

```bash
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X GET "https://oatda.com/api/v1/llm/models" \
  -H "Authorization: Bearer $OATDA_API_KEY"
```

### Filter by type

- `?type=chat` — Text/chat models
- `?type=image` — Image generation models
- `?type=video` — Video generation models
- `?type=audio` — Speech, transcription, and translation models

### Filter by provider

- `?provider=openai`
- `?provider=anthropic`
- `?provider=google`
- `?provider=bytedance`
- `?provider=deepseek`
- etc.

### Combine filters

```bash
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=image&provider=openai" \
  -H "Authorization: Bearer $OATDA_API_KEY"
```

### Discover model-specific parameters

Image, video, and audio models include `supported_params` describing model-specific options:

```bash
# Image model params
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=image" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.image_models[] | {id, supported_params}'

# Video model params
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=video" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.video_models[] | {id, supported_params}'

# Specific provider's video params
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=video&provider=bytedance" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.video_models[] | select(.model | contains("seedance")) | .supported_params'

# Audio model params
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=audio" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.audio_models[] | {id, supported_params}'
```

## Response Format

```json
{
  "total": 42,
  "filter": {"type": "all", "provider": null},
  "chatModels": [
    {"id": "provider/model-name", "provider": "...", "model": "...", "displayName": "..."}
  ],
  "imageModels": [
    {
      "id": "provider/model-name",
      "provider": "...",
      "model": "...",
      "displayName": "...",
      "supported_params": {
        "style": {"type": "string", "values": ["vivid", "natural"], "default": "vivid"}
      }
    }
  ],
  "videoModels": [
    {
      "id": "provider/model-name",
      "provider": "...",
      "model": "...",
      "displayName": "...",
      "supported_params": {
        "ratio": {"type": "string", "values": ["16:9", "9:16", "1:1"], "default": "16:9"},
        "duration": {"type": "string", "values": ["5", "10"], "default": "5"},
        "generate_audio": {"type": "boolean", "default": false, "optional": true},
        "first_frame_image": {"type": "file", "accept": "image/*", "optional": true}
      }
    }
  ],
  "audio_models": [
    {
      "id": "provider/model-name",
      "provider": "...",
      "model_name": "...",
      "display_name": "...",
      "supported_params": {
        "audio_modes": ["tts", "transcription", "translation"],
        "voice": {"type": "string", "values": ["alloy", "nova", "shimmer"]},
        "response_format": {"type": "string", "values": ["mp3", "wav", "json", "srt", "vtt"]}
      }
    }
  ]
}
```

## Understanding supported_params

Each parameter has:
- `type`: `string`, `number`, `boolean`, or `file`
- `values`: Allowed values for enums
- `default`: Default value
- `description`: What it does
- `optional`: Whether required
- `accept`: For `file` types — accepted MIME types (e.g., `"image/*"`)
- `min` / `max`: Range constraints for numbers

**File-type params** (e.g., `mask`, `first_frame_image`, `last_frame_image`) require public HTTPS URLs, not local paths.

**Audio modes**: Audio models may support one or more modes such as `tts`, `transcription`, and `translation`. Use that to choose the right workflow:
- `tts` → `oatda-generate-speech`
- `transcription` → `oatda-transcribe-audio`
- `translation` → `oatda-translate-audio`

## Presenting Results

Format models by category. Use the actual data returned by the API — do not hardcode model names.

**Chat Models** (N total):
- `provider/model-name` — Display Name

**Image Models** (N total):
- `provider/model-name` — Display Name

**Video Models** (N total):
- `provider/model-name` — Display Name

**Audio Models** (N total):
- `provider/model-name` — Display Name

## Error Handling

| HTTP Status | Meaning | Action |
|-------------|---------|--------|
| 401 | Invalid API key | Tell user to check their key |
| 429 | Rate limited | Wait and retry |

## Notes

- This is a GET request — no request body
- The `id` field (e.g., `openai/gpt-4o`) is the model identifier used in other OATDA skills
- Use `supported_params` to discover model-specific parameters before generating
- For file-type params, provide publicly accessible URLs
- Audio models may expose `audio_modes`, supported voices, and output formats
- Related skills: `oatda-text-completion`, `oatda-generate-image`, `oatda-generate-video`, `oatda-generate-speech`, `oatda-transcribe-audio`, `oatda-translate-audio`, `oatda-vision-analysis`

