Skill v1.0.0
currentAutomated scan0/100version: "1.0.0" name: oatda-text-completion description: Generate text, code, or chat completions using OATDA's unified LLM API gateway — like calling ChatGPT, Claude, Gemini, GPT-5, Claude Sonnet 4.5, Grok 4, or Qwen from a single endpoint. Triggers when the user wants to generate, write, summarize, translate, or complete text via OpenAI, Anthropic, Google, Deepseek, Mistral, xAI, Alibaba/Qwen, MiniMax, ZAI/GLM, Moonshot/Kimi, or Bytedance. Also use when comparing outputs across models or using aliases like "gpt-4o", "gpt-5", "claude", "gemini", "deepseek", "grok", "qwen", "mistral", "kimi". homepage: https://oatda.com metadata: { "openclaw": { "emoji": "💬", "requires": { "bins": ["curl", "jq"], "env": ["OATDA_API_KEY"], "config": ["~/.oatda/credentials.json"] }, "primaryEnv": "OATDA_API_KEY", }, }
OATDA Text Completion
Generate text from 10+ LLM providers through OATDA's unified API.
API Key Resolution
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.
Model Mapping
| User says | Provider | Model | |
|---|---|---|---|
| gpt-4o | openai | gpt-4o | |
| gpt-4o-mini | openai | gpt-4o-mini | |
| gpt-5 | openai | gpt-5 | |
| gpt-5-mini | openai | gpt-5-mini | |
| o1 | openai | o1 | |
| o3 | openai | o3 | |
| claude, sonnet | anthropic | claude-sonnet-4-5-20250929 | |
| haiku | anthropic | claude-haiku-4-5-20251001 | |
| opus | anthropic | claude-opus-4-5-20251101 | |
| gemini | gemini-3-pro-preview | ||
| gemini-2.5 | gemini-2.5-pro | ||
| deepseek | deepseek | deepseek-v4-pro | |
| mistral | mistral | mistral-large-latest | |
| grok | xai | grok-4-fast | |
| grok-4 | xai | grok-4-1-fast-reasoning | |
| qwen | alibaba | qwen3-max | |
| kimi, moonshot | moonshot | kimi-k2.7-code | |
| glm | zai | glm-5 |
Default: openai / gpt-4o if no model specified. If user provides provider/model format, split on /.
⚠️ Models update frequently. If a model ID fails, queryoatda-list-modelsfor the latest available models.
⚠️ Models update frequently. If a model ID fails, queryoatda-list-modelsfor the latest available models.
API Call
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 POST "https://oatda.com/api/v1/llm" \-H "Content-Type: application/json" \-H "Authorization: Bearer $OATDA_API_KEY" \-d '{"provider": "<PROVIDER>","model": "<MODEL>","prompt": "<USER_PROMPT>","temperature": 0.7,"maxTokens": 4096}'
Optional Parameters
temperature: 0 (deterministic) to 2 (creative). Default: 0.7maxTokens: Max tokens to generate. Default: 4096 (max 128000 for some models)stream: Set totruefor streaming (not recommended via curl)
Response Format
{"success": true,"provider": "openai","model": "gpt-4o","response": "The generated text content...","tokenUsage": {"prompt_tokens": 25,"completion_tokens": 150,"total_tokens": 175,"cost": 0.001375}}
Present the response field to the user. Optionally mention token usage and cost.
Error Handling
| HTTP Status | Meaning | Action | |
|---|---|---|---|
| 401 | Invalid API key | Tell user to check key at https://oatda.com/dashboard/api-keys | |
| 402 | Insufficient credits | Tell user to check balance at https://oatda.com/dashboard/usage | |
| 429 | Rate limited | Wait 5 seconds and retry once | |
| 400 | Bad request / model not found | Check model format, suggest oatda-list-models |
Example
User: "Write a haiku about code using claude"
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 POST "https://oatda.com/api/v1/llm" \-H "Content-Type: application/json" \-H "Authorization: Bearer $OATDA_API_KEY" \-d '{"provider": "anthropic","model": "claude-sonnet-4-5-20250929","prompt": "Write a haiku about code","temperature": 0.7,"maxTokens": 256}'
Notes
- The API expects
promptas a plain string, NOT amessagesarray - Split
provider/modelinto separate JSON fields - For long-form content, increase
maxTokens - Use
oatda-list-modelsto see all available models - Use
oatda-vision-analysisfor image analysis tasks