> ## 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.

# Integrations

> Add as many as you want — same syntax, same patterns.

Corsair supports hundreds of integrations through its SDK. Add as many as you need and interact with them all using the same consistent syntax.

```ts corsair.ts theme={null}
import { createCorsair } from "corsair";
import { slack } from "@corsair-dev/slack";
import { linear } from "@corsair-dev/linear";

export const corsair = createCorsair({
    plugins: [
        slack({
            authType: "api_key",
            credentials: { botToken: "xoxb-..." },
        }),
        linear({
            authType: "api_key",
            credentials: { apiKey: "lin_..." },
        }),
    ],
});
```

## Consistent Syntax

Every integration uses the exact same patterns. No need to learn each SDK's unique quirks.

```ts example.ts theme={null}
// Slack
await corsair.slack.api.messages.post({
    channel: "C01234567",
    text: "Hello from Slack!",
});

// Linear
await corsair.linear.api.issues.create({
    title: "New feature request",
    teamId: "TEAM_123",
});

// Same structure: corsair.[integration].api.[resource].[action]()
```

## Strong Typing Everywhere

Every integration is fully typed. Your editor shows available methods, required parameters, and response shapes.

```ts example.ts theme={null}
// TypeScript knows all available endpoints
corsair.slack.api.channels.create({ name: "engineering" });
corsair.slack.api.channels.archive({ channel: "C01234567" });
corsair.slack.api.messages.post({ channel: "C01", text: "Hi" });

// And all response types
const channel = await corsair.slack.api.channels.get({ channel: "C01" });
console.log(channel.name, channel.is_member, channel.num_members);
```

## No Database Bloat

Adding more integrations doesn't add more tables. Corsair always uses the same four tables, no matter how many integrations you have.

```ts theme={null}
plugins: [
    slack({ ... }),
    linear({ ... }),
    github({ ... }),
    gmail({ ... }),
    // 100 more integrations — still just 4 tables
]
```

## Adding Integrations

Just add plugins to the array. Each integration is configured independently.

```ts corsair.ts theme={null}
export const corsair = createCorsair({
    plugins: [
        slack({
            authType: "api_key",
            credentials: { botToken: process.env.SLACK_BOT_TOKEN },
        }),
        linear({
            authType: "api_key",
            credentials: { apiKey: process.env.LINEAR_API_KEY },
        }),
    ],
});
```

## Custom Integrations

Need an integration that doesn't exist? Creating a custom one takes less than 10 minutes.

See the [Creating Custom Integrations](/guides/create-your-own-plugin) guide for a step-by-step walkthrough.

## Missing an Endpoint?

If an existing integration is missing an endpoint you need, [create an issue](https://github.com/corsair/corsair/issues) and we'll add it ASAP.

## Available Integrations

Corsair supports integrations including:

* **Slack** — channels, messages, users, reactions, files
* **Linear** — issues, projects, comments, teams
* **GitHub** — repositories, issues, pull requests, actions
* **Gmail** — messages, threads, labels, drafts

And many more. Check the [Plugins](https://github.com/corsairdev/corsair/tree/main/packages) section for the full list.
