Build with codeWhat to use today from JavaScript and Python, and the SDK that is planned.

Build with code

SDK

There is no packaged SDK yet, on purpose: the API is small, the answers are plain JSON, and the MCP door already gives an agent everything the console's assistant knows. This page says what to reach for today and what is planned.

Today

An agent or an assistant

Use the MCP server. It is the supported integration for anything model-driven: drafting, validating, explaining failures, reading vendor docs, all tenant-scoped.

A program

Call the API directly with a personal access token. The examples below are the whole of what a client needs.

JavaScript

const base = 'https://console.ductileai.com';
const headers = { authorization: `Bearer ${process.env.DUCTILE_TOKEN}` };

const list = await fetch(`${base}/api/v1/console/businessProcesses?limit=50`, { headers })
  .then((r) => r.json());

const draft = await fetch(`${base}/api/v1/console/assist/generate`, {
  method: 'POST',
  headers: { ...headers, 'content-type': 'application/json' },
  body: JSON.stringify({ brief: 'every morning, email me the invoices that went overdue yesterday' }),
}).then((r) => r.json());
// draft.generation.definition is the process; draft.generation.valid says whether it validated

Python

import os, requests

base = "https://console.ductileai.com"
h = {"Authorization": f"Bearer {os.environ['DUCTILE_TOKEN']}"}

procs = requests.get(f"{base}/api/v1/console/businessProcesses", headers=h, params={"limit": 50}).json()

mcp = requests.post(f"{base}/mcp", headers=h, json={
    "jsonrpc": "2.0", "id": 1, "method": "tools/call",
    "params": {"name": "search_agents", "arguments": {"query": "post a Slack message", "limit": 5}},
}).json()

Planned

  • A typed client for JavaScript and Python, generated from the API's own schemas, so a definition is a type and a mistake is a compile error.
  • Invoke: start a deployed process from code and wait for its run, with cancel and resume. (Today: a process's job URL, called with a gateway key - see Webhooks on the API page.)
  • A local runner for tests: your process against its sample data on your laptop, no tenant needed.
  • Bring your own model for drafting: point the drafting assistant and the microphone at a model you host, per tenant. (For your processes this is here already: the AI gateway's models are yours to name, with your own keys, and every step that asks AI uses them.)

Until then the API is the contract. Anything documented here is stable within a major version; anything not documented may change.

Last updated October 29, 2026