Corsair
Concepts

Integrations

Integrating Corsair with your stack

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.