Build with Smoo AI
Integrate AI-powered customer support, configuration management, knowledge bases, and testing infrastructure into your applications with our comprehensive REST API.
Get Started in Minutes
Three steps to your first API call.
Create an account
Sign up for Smoo AI and create an organization from the dashboard.
Generate API credentials
Create an OAuth 2.0 client from Settings > API Keys, or run `th api keys create --type m2m`, to get your client ID and secret.
Make your first request
Authenticate with `th api login` (or the token endpoint) and start calling the API to manage agents, config, knowledge, and more.
Authenticate & make your first call
// 1. Exchange client credentials for an access token
const tokenRes = await fetch("https://auth.smoo.ai/token", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
grant_type: "client_credentials",
client_id: process.env.SMOO_CLIENT_ID!,
client_secret: process.env.SMOO_CLIENT_SECRET!,
}),
});
const { access_token } = await tokenRes.json();
// 2. Call the API with the bearer token
const orgs = await fetch("https://api.smoo.ai/organizations", {
headers: { Authorization: `Bearer ${access_token}` },
}).then((r) => r.json());
console.log(orgs);Create a CRM contact
Same request in every language. org_id comes from the organizations list above.
const res = await fetch("https://api.smoo.ai/organizations/{org_id}/crm/contacts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SMOO_ACCESS_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"firstName": "Ada",
"lastName": "Lovelace",
"email": "[email protected]",
"phone": "+15555550100"
}),
});
const data = await res.json();
console.log(data);Drive Smoo AI from your coding agent
th is a single ~10MB static binary that speaks to the same API — auth, CRM, knowledge, config, jobs, and observability. Because every command is scriptable and returns JSON, an agent like Claude Code can act on your org directly: read state, make a change, verify the result.
you ▸ add [email protected] to the CRM and show me how many contacts we have
agent ▸ th api crm contacts create ./ada.json
{ "id": "cnt_9f3a...", "email": "[email protected]", "createdAt": "2026-07-03T..." }
agent ▸ th api crm contacts list --json | jq 'length'
128
agent ◂ Done — Ada Lovelace is contact cnt_9f3a. Your org now has 128 contacts.Install once
brew install SmooAI/tools/th or the curl installer. Then th api login.
Claude Code plugin
Install the smooth plugin marketplace, then /plugin install smooth-agent@smooth to teach your agent the commands.
Open source
Built on smooth-operator, our Rust agent framework. Extend it or self-host.