npx skills add ...
npx skills add acedatacloud/skills --skill ai-chat
Access 50+ LLM models through AceDataCloud's unified chat APIs. Use when you need native Claude Messages, OpenAI-compatible chat/responses calls, text embeddings for search or RAG, or stateful conversations and scheduled agent tasks across GPT, Claude, Gemini, Grok, Kimi, GLM, and DeepSeek models. Supports streaming, multimodal input, and tool calling.
npx skills add acedatacloud/skills --skill ai-chat
AceDataCloud exposes the following documented chat surfaces:
| Endpoint | Use For |
|---|---|
POST /aichat2/conversations | Recommended stateful / multimodal / agentic conversations |
POST /aichat/conversations | Legacy conversation endpoint |
POST /openai/chat/completions (public alias /v1/chat/completions) | OpenAI-compatible stateless chat completions |
POST /openai/responses (public alias /v1/responses) | OpenAI-compatible responses API |
POST /v1/messages (alias /claude/messages) | Native Claude Messages, including thinking and tool calls |
POST /v1/messages/count_tokens (alias /claude/messages/count_tokens) | Count native Claude input tokens without generating output |
clawhub install @acedatacloud/ai-chat. Check that the ClawHub publisher is @acedatacloud.Bearer ; a platform-... management token is not a service API key./aichat2/conversations for the first example; other chat routes need their own access. Advanced workflows below may call additional routes.ACEDATACLOUD_API_TOKEN=your_api_key_here in ~/.openclaw/.env, then restart the Gateway and start a new session. For a direct terminal test, run export ACEDATACLOUD_API_TOKEN="your_api_key_here" in that shell. Never put the key in a prompt or commit an .env file.Illustrated key setup, first run, and troubleshooting · Token details
Set Base URL to https://api.acedata.cloud/v1, API Key to your AceDataCloud service token, model to gpt-5.5 (or another supported chat model), and model type to LLM. Select conversation type Chat and API type Chat Completions. Dify appends /chat/completions itself; do not use /openai/v1 or include the full endpoint in Base URL. Test the connection before selecting the model in a Workflow / Chatflow LLM node.
The OpenAPI specs expose a broad, fast-moving model catalog. Representative current models include:
| Family | Current examples |
|---|---|
| OpenAI / reasoning | gpt-6-astra, gpt-6.1-sol, gpt-6-sol, gpt-6-luna, gpt-5.6-luna, gpt-5.6-terra, gpt-5.6-sol-fast, gpt-5.6-sol, gpt-5.5, gpt-5.5-pro, gpt-5.4, gpt-5.4-pro, gpt-5.2, gpt-5.1, gpt-5, gpt-5-mini, gpt-5-nano, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4o, gpt-4o-mini, o1, o3, o4-mini |
| OpenAI free-tier chat-completions | gpt-5.5:free, gpt-5:free, gpt-4.1:free, gpt-4o:free, gpt-4o-mini:free, gpt-oss:free |
| Claude | claude-opus-5-5 and claude-sonnet-5-5 (Messages only), claude-fable-5-1, claude-fable-5, claude-opus-5, claude-sonnet-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5-20251101, claude-sonnet-4-6, claude-sonnet-4-5-20250929, claude-sonnet-4-20250514, claude-haiku-4-5-20251001, claude-3-7-sonnet-20250219 |
| Gemini | gemini-3.8-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.1-pro, gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview, gemini-3-pro-preview, gemini-2.5-flash-lite, gemini-2.0-flash-lite |
| Grok | grok-4.7, grok-4.5, grok-4, grok-4-0709, grok-3, grok-3-fast |
| DeepSeek | deepseek-v4.1-flash, deepseek-v4-pro, deepseek-v4-flash, deepseek-r1, deepseek-r1-0528, deepseek-v3, deepseek-v3-250324, deepseek-v3.2-exp |
| Kimi | kimi-k3, kimi-k2.6, kimi-k2.5, kimi-k2-thinking-turbo, kimi-k2-thinking |
| GLM | glm-5.2, glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.6, glm-4.5, glm-4.5v, glm-3-turbo |
When the user asks for a recommended model, read the current public GET https://platform.acedata.cloud/api/v1/models/ response and prefer suitable entries with recommended=true. This is an editorial preference, not an access grant or a new API capability; recommended=false does not retire a model. Check the selected model's supported route and current pricing before calling it, and do not silently replace a model the user explicitly selected.
To select gpt-5.6-sol-fast, send that exact public model ID on Chat Completions, Responses, Messages, or either conversation endpoint above. It is listed in the public model/pricing catalog with vision capability, but has no public model introduction. Check account eligibility and current pricing before requesting it; catalog visibility does not guarantee access. Its pricing rules use a higher tier when recorded prompt_tokens exceeds 272,000 (not at exactly 272,000). Do not silently substitute gpt-5.6-sol after an access or parameter error; protocol-specific features remain model-dependent.
gpt-6.1-sol supports low, medium, high, xhigh, and max reasoning effort; do not send none or minimal. During its first week, access requires verified ACE T1+ holdings or an access grant. Check the platform access response for the opening time.
claude-opus-5-5 and claude-sonnet-5-5 are available only through the dedicated Claude Messages API; do not send it to /openai/chat/completions or /aichat2/conversations.
/aichat2/conversations also accepts model_group values
chatgpt, claude, gemini, grok, kimi, glm, and deepseek.
Image-generating models are not chat models. Names ending in
-image(e.g.gemini-*-image,gpt-4o-image) are image-generation models and do not work on any chat surface listed above. Generate images through the dedicated endpoints instead — Gemini viaPOST /v1beta/models/{model}:generateContent, or/nano-banana/images.
Common parameters:
| Parameter | Type | Description |
|---|---|---|
model | string | One of the documented OpenAI-compatible models |
messages | array | Standard OpenAI chat message list |
temperature / top_p | number | Sampling controls |
max_tokens | integer | Output cap |
stream | boolean | Enable SSE streaming |
tools / tool_choice | array / string-object | Function-calling controls |
service_tier | string | Processing tier (auto, default, flex, scale, priority) |
Use POST /openai/embeddings (public alias /v1/embeddings) with the same AceDataCloud Bearer token for semantic search or RAG, not chat generation. Choose text-embedding-3-small or text-embedding-3-large; model and input are required.
text-embedding-ada-002 is retired; do not send new requests with that model. Rebuild existing indexes with the selected supported model before querying them; do not mix vectors from different models in one index or silently switch models for an existing index.
Use POST /v1/messages (public alias /claude/messages) for native Claude calls, including Messages-only models. Authenticate with the same AceDataCloud Bearer token. Required fields are model, messages, and max_tokens; use top-level system for system instructions.
thinking, output_config, effort, sampling parameters, and extension fields unchanged. The platform does not enforce a frozen per-model enum or rewrite thinking modes; the selected model decides which values and combinations it accepts and its parameter errors are returned to the caller. Pass-through is not a promise of feature support across models or protocols.thinking.type values are adaptive, enabled, and disabled; newer modes such as between_tools, fixed budget_tokens, and whether thinking can be disabled depend on the model. Common effort values include low, medium, high, xhigh, and max, but are not a closed enum.thinking.display="summarized" returns a readable summary, not raw reasoning. omitted hides the thinking text while retaining its opaque signature. Beta updates requests short progress updates between tool calls with hidden reasoning; send anthropic-beta: thinking-display-updates-2026-08-18 and thinking.display="updates". The value and beta header are forwarded, not rewritten to summarized; actual support and output depend on the selected model.max_tokens budget with final text. Display settings do not disable thinking or reduce its token billing. Increase the budget or lower supported effort if the final answer is empty or truncated.redacted_thinking depends on the model service; surface errors instead of dropping blocks or silently changing the request.To estimate input size, send the native input to POST /v1/messages/count_tokens (alias /claude/messages/count_tokens) with the same model, messages, and applicable system/tools/thinking fields. Read input_tokens; this endpoint generates no model output and consumes no quota. Its thinking configuration is extensible too; do not substitute a locally hard-coded model validator.
POST /aichat2/conversations generalizes the legacy conversation API with
multimodal user content, CRUD-style actions, and server-side conversation state.
Useful parameters:
| Parameter | Type | Description |
|---|---|---|
action | string | chat, retrieve, retrieve_batch, update, delete |
model | string | Model name |
question | string | Simple text prompt |
message | string or array | Multimodal content using text, image_url, or file_url items |
stateful | boolean | Keep conversation history server-side |
references | array | Extra context documents |
preset | string | Preset/system prompt |
max_turns | integer | Agent iterations per request: 1–500, default 500; not retained history |
allowed_skills / allowed_mcp_servers | array | Restrict tool-use scope |
unattended_policy | object | Tool-use permission policy |
tool_results | array | Return results for previously requested tool calls |
model_group | string | Family selector (chatgpt, claude, gemini, grok, kimi, glm, deepseek) |
offset / limit | integer | Pagination for retrieval actions |
callback_url / async | string / boolean | Async execution |
Set max_turns deliberately for the expected tool chain. Each iteration is a model call, not a history-retention setting; max_turns: 1 requests a single answer without tool calls. Omitting it allows up to 500 iterations, not a guarantee that all will run.
Use POST /aichat2/scheduled-tasks on https://api.acedata.cloud with the same service Bearer token and aichat API access. All operations use POST with an action; this is not a platform-management-token endpoint.
schedule.type: cron requires a five-field cron expression and tz; interval requires interval_seconds and tz; once requires a Unix-seconds at and tz. Use an IANA zone such as UTC, not UTC+8. The saved timezone governs Cron wall-clock time even if the device timezone changes.template. Optional template.max_turns is 1–500, default 500, and caps iterations per run, not schedule frequency. Each model call is billed by actual usage; a run can end earlier due to timeout, authorization or other execution conditions. A run lasts at most 15 minutes. Set an explicit Unix-seconds ends_at when needed; otherwise tasks stop three months after creation.id. List with action="retrieve_batch"; inspect executions with action="retrieve_runs" and that id, or action="retrieve_runs_batch" for all tasks (optional status, offset, limit). Read each run's status, error_code and conversation_id; retrieve the conversation through /aichat2/conversations for the full result. Task state="enabled" (shown as “running” in the list) is not evidence of a successful run.awaiting_user_input. Diagnose the run history, fix balance/authorization/prompt issues, and explicitly pause recurring failures to prevent further attempts.action="update", the task id and state="disabled"; resume with state="enabled" only after confirmation. Delete with action="delete" and id only after confirming permanent removal.Creation payload (preview locally and obtain confirmation before sending):
/openai/* retain public aliases /v1/chat/completions, /v1/responses, and /v1/embeddings. For clients that append /chat/completions, use Base URL https://api.acedata.cloud/v1 (not /openai/v1); the SDK example above keeps the existing /openai base.POST /aichat2/conversations is the recommended stateful endpoint; POST /aichat/conversations remains for legacy clients.message on /aichat2/conversations can be multimodal (text, image_url, file_url); plain question still works for simple text prompts.action on /aichat2/conversations is not chat-only — it also supports retrieve, retrieve_batch, update, and delete.gpt-5.5:free are documented on /openai/chat/completions.import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ACEDATACLOUD_API_TOKEN"],
base_url="https://api.acedata.cloud/openai"
)
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Explain quantum computing"}]
)
print(response.choices[0].message.content)POST /openai/chat/completions
{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "Write a haiku about observability."}],
"stream": true,
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {"type": "object", "properties": {"location": {"type": "string"}}}
}
}
]
}POST /openai/embeddings
{
"model": "text-embedding-3-small",
"input": "Hello!"
}curl -X POST https://api.acedata.cloud/v1/messages \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model":"claude-sonnet-5-5",
"messages":[{"role":"user","content":"Review this implementation plan."}],
"max_tokens":8192,
"thinking":{"type":"adaptive"},
"output_config":{"effort":"high"}
}'POST /aichat2/conversations
{
"action": "chat",
"model": "claude-sonnet-4-6",
"message": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
],
"stateful": true,
"allowed_skills": ["google-search"],
"allowed_mcp_servers": ["mcp-google-search"]
}POST /aichat2/scheduled-tasks
{
"action": "create",
"name": "Daily AI news summary",
"schedule": {"type": "cron", "cron": "0 9 * * *", "tz": "UTC"},
"template": {
"model": "gpt-4o-mini",
"question": "Today is {{date}}. Search and summarize the three most important AI news items. Do not publish or send messages.",
"max_turns": 5
}
}POST /aichat2/scheduled-tasks
{"action": "retrieve_runs", "id": "TASK_ID"}POST /aichat2/scheduled-tasks
{"action": "update", "id": "TASK_ID", "state": "disabled"}