> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# StackAI plugin

> Inspect project input and output schemas and manage asynchronous StackAI runs.

Use **StackAI** through Corsair: one client, typed API calls.

Use a StackAI personal API key or supported user token. The hosted origin is [https://api.stack-ai.com](https://api.stack-ai.com); configure `baseURL` for a private deployment. The key needs `projects.read`, `projects.run`, and `analytics.read` as appropriate. Replace `example_input` with a node ID from your project's I/O schema. Start, cancel, and resume return the JSON body and the actual `Location` header; a successful response does not mean the run has completed. The plugin prevents Corsair retries from resending writes, though custom root handlers may delay and reprocess the failure. Reconcile ambiguous write failures before manually retrying. Never attach credentials to an untrusted Location URL.

**What you get:**

* 6 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/stackai better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/stackai better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/stackai better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/stackai better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { stackai } from '@corsair-dev/stackai';

export const corsair = createCorsair({
	plugins: [
		stackai(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> Store the StackAI API key before the first call: `pnpm corsair setup --plugin=stackai --tenant=acme api_key=<your-key>` (leave out `--tenant` without `multiTenancy`), or pass it as `key` in the plugin options. With Hub, each tenant enters their own key on the connect page. See [API key auth](https://docs.corsair.dev/concepts/api-key).
>
> ```ts theme={null}
> stackai()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'stackai',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**List runs**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.stackai.api.runs.list({ page_size: 25 });
```

**Start a project run**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.stackai.api.runs.start({
	project_id: 'example-project',
	input: { example_input: 'Hello' },
});
```

See the full list on the [API](https://docs.corsair.dev/plugins/stackai/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/stackai/api.md)
>
> Every `stackai.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.