List all available AI models from OATDA's providers with optional filtering.
All commands need the OATDA API key. Resolve it inline for each exec call:
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.
All requests are GET. Add query parameters to filter.
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"
?type=chat — Text/chat models?type=image — Image generation models?type=video — Video generation models?provider=openai?provider=anthropic?provider=google?provider=bytedance?provider=deepseekcurl -s -X GET "https://oatda.com/api/v1/llm/models?type=image&provider=openai" \
-H "Authorization: Bearer $OATDA_API_KEY"
Image and video models include supported_params describing model-specific options:
# 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'
{
"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}
}
}
]
}
Each parameter has:
type: string, number, boolean, or filevalues: Allowed values for enumsdefault: Default valuedescription: What it doesoptional: Whether requiredaccept: For file types — accepted MIME types (e.g., "image/*")min / max: Range constraints for numbersFile-type params (e.g., mask, first_frame_image, last_frame_image) require public HTTPS URLs, not local paths.
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 NameImage Models (N total):
provider/model-name — Display NameVideo Models (N total):
provider/model-name — Display Name| HTTP Status | Meaning | Action |
|---|---|---|
| ------------- | --------- | -------- |
| 401 | Invalid API key | Tell user to check their key |
| 429 | Rate limited | Wait and retry |
id field (e.g., openai/gpt-4o) is the model identifier used in other OATDA skillssupported_params to discover model-specific parameters before generatingoatda-text-completion, oatda-generate-image, oatda-generate-video, oatda-vision-analysis共 1 个版本