TL;DR
Side-by-side
When to use /v1/messages
- Your existing app already manages conversation history (Postgres, Supabase, in-memory, whatever).
- You don’t want a managed connector layer.
- You’re already shipping and just want billing + multi-provider routing without rewriting anything.
- One-line migration:
ANTHROPIC_BASE_URL=https://api.qlaud.ai.
When to use /v1/threads/:id/messages
- You’re building a chatbot, agent, or AI feature with end-user identity.
- You want to give the model access to Linear, GitHub, Notion, Stripe, ClickUp, and the other 100+ vendors in the catalog — without writing a per-vendor integration.
- You want conversation history without running a database for it.
- You want semantic search across past chats without running a vector index.
/v1/messages PLUS auto-managed
threads, 105 catalog connectors auto-discoverable per end-user,
semantic search, and the built-in tool dispatch loop. Send the
next user turn, qlaud handles the rest, returns the assistant
reply.
The tools_mode flag
/v1/threads/:id/messages accepts tools_mode in the body. It
controls whether the model gets the meta-tools (auto-discovery)
or only the explicit tools you list:
For most chatbots, the default behavior is the right one — pass no
tools, get dynamic discovery, the model self-serves.
Disabling specific catalog vendors
If you want to suppress Linear (or any catalog vendor) from your end-users’ discovery without disabling all of them:/v1/mcp-catalog/enable. List currently disabled via
GET /v1/mcp-catalog/disabled.
Bringing your own MCP server or webhook tool
Both surfaces support custom tools you register yourself. They appear alongside catalog tools in dynamic-mode discovery.- Custom MCP server:
POST /v1/mcp-serverswithserver_url+ optionalauth_headers. Any HTTPS-reachable MCP server (your own, or a long-tail vendor not in our catalog). - Custom webhook tool:
POST /v1/toolswithwebhook_url+input_schema. qlaud HMAC-signs the dispatch; your endpoint returns the result.
Migration shape
Common questions
Can I mix the two on the same wallet? Yes. They share auth, billing, and key scopes. Pick per-route. If I switch from/v1/messages to Threads, what migrates? Nothing
historical — your prior conversations live in your existing DB.
New conversations start fresh in qlaud.
Does the model see prior messages on Threads? Yes —
qlaud auto-loads them. Long threads use a sliding-window strategy;
override by passing an explicit messages array if you need control.