Oatda text completion
Skill devcsde/oatda-openclaw-skills/skills/oatda-text-completion
OpenClaw skills for OATDA's unified LLM API gateway — text, vision, image, video, audio (TTS/STT/translation). 10+ providers, 100+ models, 1 API key.
npx -y skills add devcsde/oatda-openclaw-skills --skill oatda-text-completionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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".
SKILL.md
4.7 KB, as published. Nobody here has run it
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, query
oatda-list-modelsfor the latest available models.
⚠️ Models update frequently. If a model ID fails, query
oatda-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