API Reference
The Conduit REST API lets you manage servers, API keys, billing, and access the public trust registry.
Authentication
API endpoints use two authentication methods:
Session cookie (browser)
Used by the web dashboard. Set automatically after login via Supabase Auth.
API key (CLI / programmatic)
Pass in the Authorization header:
Authorization: Bearer cnd_live_xxxxxxxxxxxxxxxxxxxx
Base URL
https://conduitapi.devServers
/api/serversRegister a new MCP server.
{
"name": "My MCP Server",
"upstream_url": "https://my-server.com/mcp",
"description": "Optional description"
}{
"id": "uuid",
"name": "My MCP Server",
"slug": "my-mcp-server",
"gateway_endpoint": "https://gateway.conduitapi.dev/s/org/my-mcp-server",
"status": "active",
"health_status": "unknown",
"trust_score": null,
"created_at": "2026-02-08T..."
}Returns 409 if a server with the same name already exists.
/api/serversList all servers in your organization.
[
{
"id": "uuid",
"name": "My MCP Server",
"slug": "my-mcp-server",
"status": "active",
"health_status": "healthy",
"trust_score": 92,
"trust_grade": "A",
...
}
]API Keys
/api/keysCreate a new API key.
{
"name": "Production key"
}{
"id": "uuid",
"name": "Production key",
"key": "cnd_live_xxxxxxxxxxxxxxxxxxxx",
"created_at": "2026-02-08T..."
}The key field is only returned once at creation. Store it securely.
/api/keysList all API keys for your organization.
[
{
"id": "uuid",
"name": "Production key",
"prefix": "cnd_live_xxxx",
"last_used_at": "2026-02-08T...",
"created_at": "2026-02-07T..."
}
]Key values are never returned after creation. Only the prefix is shown.
/api/keys/:idRevoke an API key. Takes effect immediately.
{ "success": true }Scanning
/api/servers/:slug/scanTrigger a trust scan for a server.
{
"scores": {
"total": 92,
"grade": "A",
"breakdown": {
"security": 95,
"compliance": 88,
"auth": 90,
"performance": 94,
"runtime": null
}
},
"findingsCount": 2,
"error": null
}Scans typically take 10-30 seconds. The response is synchronous.
Public Registry
Registry endpoints are public — no authentication required.
/api/registryList public servers with optional filters.
{
"servers": [...],
"total": 42,
"limit": 20,
"offset": 0
}Query params: ?grade=A&limit=20&offset=0&sort=score
/api/registry/:serverIdGet full trust report for a public server.
{
"server": { "id": "...", "name": "...", ... },
"latestScan": { "total_score": 92, "grade": "A", ... },
"findings": [...],
"history": [...]
}/api/registry/searchSearch public servers by name or description.
{
"servers": [...],
"total": 5
}Query params: ?q=search+term
Badges
/api/badges/:serverIdGet trust score badge as SVG.
SVG image (image/svg+xml)
Query params: ?style=standard|compact|detailed. Cached for 1 hour.
Billing
/api/billing/checkoutCreate a Stripe Checkout session to upgrade your platform plan.
{
"plan": "pro"
}{
"url": "https://checkout.stripe.com/c/pay/..."
}Redirects the user to Stripe Checkout. Valid plans: pro, team, scale.
/api/billing/portalCreate a Stripe Customer Portal session to manage subscription.
{
"url": "https://billing.stripe.com/p/session/..."
}Vendor Billing
/api/vendor/billing/checkoutCreate a Stripe Checkout session for a vendor plan.
{
"plan": "vendor_starter"
}{
"url": "https://checkout.stripe.com/c/pay/..."
}Valid plans: vendor_starter ($99/mo), vendor_professional ($499/mo).
/api/vendor/billing/usageGet current billing period usage for a vendor.
{
"plan": "vendor_starter",
"included_queries": 5000,
"used_queries": 2341,
"overage_queries": 0,
"overage_cost": 0,
"billing_period_start": "2026-02-01T...",
"billing_period_end": "2026-03-01T..."
}/api/vendor/billing/portalCreate a Stripe Customer Portal session for vendor subscription management.
{
"url": "https://billing.stripe.com/p/session/..."
}CLI Authentication
These endpoints support the CLI login flow.
/api/auth/cli-tokenGenerate a short-lived CLI login token.
{ "token": "eyJ..." }Token expires in 5 minutes. Used for the browser-based CLI login flow.
/api/auth/cli-verifyExchange a CLI token for an API key.
{ "token": "eyJ..." }{
"api_key": "cnd_live_xxxxxxxxxxxxxxxxxxxx",
"email": "user@example.com",
"org_name": "My Org"
}/api/auth/cli-whoamiGet identity of the current API key holder.
{
"email": "user@example.com",
"org_name": "My Org"
}/api/auth/cli-statusGet account status and usage for the CLI.
{
"email": "user@example.com",
"org_name": "My Org",
"plan": "pro",
"server_count": 3,
"usage_today": 1234,
"usage_limit": 50000
}