Developer Hub

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.

1

Create an account

Sign up for Smoo AI and create an organization from the dashboard.

2

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.

3

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);
th — the agent-drivable CLI

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.

Claude Code driving th
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.