Skip to main content
Corsair mounts one route. It serves Hub delivery — OAuth callbacks, connect pages, self-registration — and the management API in the same place. Every adapter wraps a single primitive, managementHandler(corsair), which returns a (request: Request) => Promise<Response>. Pick the tab for your server; the rest of your app is identical.

Configure Corsair

corsair.ts

Mount the route

app/api/corsair/[[...path]]/route.ts
Pages Router? Export a catch-all API route at pages/api/corsair/[...path].ts and forward req/res through the same toNextJsHandler. The App Router is the supported default.

Run and go green

Start your dev server and make one request to /api/corsair. On that first request your app self-registers its delivery URL with Hub and the dashboard header dot turns green. See Delivery URLs. Stays grey? The route isn’t reachable at /api/corsair. Check the mount path and — on Express and Hono — that basePath and the wildcard (/api/corsair/*) match the path you mounted.

What’s next

Hub setup

Create a project, copy keys, reach the green check.

Add a plugin

Browse the catalog — GitHub, Slack, Linear, and hundreds more.

Vanilla client

Call the management API from any JS runtime.

React hooks

Typed useTenants, useConnectionStatus, and friends.