Skip to main content
Corsair supports hundreds of integrations through its SDK. Add as many as you need and interact with them all using the same consistent syntax.
corsair.ts
import { createCorsair } from "corsair";
import { slack, linear } from "corsair/plugins";

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.
example.ts
// 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.
example.ts
// 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.
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.
corsair.ts
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 guide for a step-by-step walkthrough.

Missing an Endpoint?

If an existing integration is missing an endpoint you need, create an issue 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 section for the full list.