API Reference

All API endpoints are served from your ShipKit deployment URL.


MCP Endpoint

POST /api/mcp

The primary interface for AI coding tools. Implements JSON-RPC 2.0 over HTTP.

Authentication: Authorization: Bearer skyourkey header (preferred) or ?apikey=skyour_key query parameter (deprecated). Rate limit: 60 requests/minute per IP. Request:
{

"jsonrpc": "2.0",

"id": 1,

"method": "tools/call",

"params": {

"name": "shipkit_usage",

"arguments": {}

}

}

Response (success):
{

"jsonrpc": "2.0",

"id": 1,

"result": {

"content": [

{

"type": "text",

"text": "{\"plan\":\"pro\",\"capturesused\":42,\"captureslimit\":500}"

}

]

}

}

Response (error):
{

"jsonrpc": "2.0",

"id": 1,

"error": {

"code": -32000,

"message": "Invalid API key"

}

}

JSON-RPC error codes:
CodeMeaning
-32700Parse error (invalid JSON)
-32600Invalid JSON-RPC 2.0 request
-32601Method not found
-32602Invalid params (missing tool name, unknown tool)
-32000Application error (auth failure, rate limit, quota exceeded)
Supported methods:
MethodDescriptionRequires API Key
initializeMCP handshake — returns server info + capabilitiesNo
notifications/initializedClient acknowledgmentNo
tools/listList all 30 tool definitionsNo
tools/callExecute a toolYes (increments usage)

See the MCP Integration Guide (/guide/mcp-guide) for the full list of 30 tools.


Docs API

Public API for reading hosted documentation. Use this to serve ShipKit-hosted docs on your own website.

GET /api/docs/[siteId]

Returns site navigation and page list for a hosted documentation site.

Authentication: Authorization: Bearer skyourkey or ?apikey=skyour_key
ParameterTypeDescription
siteIdstringHosted site slug (e.g. "my-product-docs")
Response:
{

"site_title": "MyProduct Docs",

"navigation": [

{ "label": "Getting Started", "path": "getting-started" },

{ "label": "API Reference", "path": "api" }

],

"pages": [

{ "path": "getting-started", "title": "Getting Started" },

{ "path": "api", "title": "API Reference" }

],

"updated_at": "2026-03-20T12:00:00Z"

}


GET /api/docs/[siteId]/[...path]

Returns the content of a specific documentation page.

Authentication: Authorization: Bearer skyourkey or ?apikey=skyour_key
ParameterTypeDescription
siteIdstringHosted site slug
pathstringPage path (e.g. "getting-started")
Response:
{

"title": "Getting Started",

"content": "# Getting Started\n\nWelcome to MyProduct...",

"updated_at": "2026-03-20T12:00:00Z"

}

Cache: Cache-Control: public, max-age=60 (1-minute cache). Errors:
StatusBodyCause
401{ "error": "Missing API key..." }No API key provided
403{ "error": "Invalid or exhausted API key" }Bad key or quota exceeded
404{ "error": "Site not found" }No published site with that slug
404{ "error": "Page not found" }No page at that path

Webhook Endpoint

POST /api/webhooks/test

Send a test webhook to verify your endpoint configuration.

Authentication: Supabase session (browser cookie). Request:
{

"webhook_url": "https://your-server.com/webhook",

"webhook_secret": "your-secret-string"

}

Response (success):
{

"success": true,

"status": 200,

"message": "Test webhook delivered successfully."

}


Health Endpoint

GET /api/health

Public health check. No authentication required.

Response:
{

"status": "ok",

"timestamp": "2026-03-22T10:00:00.000Z",

"version": "5.7.0",

"env": {

"ready": true,

"configured": 8,

"missing": 0,

"ai_enabled": true,

"billing_enabled": true

}

}

FieldDescription
status"ok" if the server is running
versionCurrent deployment version
env.readyAll required env vars are set
env.configuredNumber of configured env vars
env.missingNumber of missing required env vars
env.aienabledGEMINIAPI_KEY is configured
env.billing_enabledAll Stripe keys are configured

Internal REST Endpoints

These endpoints are used by the ShipKit web dashboard. They require Supabase session authentication (cookie-based).

Projects

MethodPathDescription
GET/api/projectsList user projects
POST/api/projectsCreate project
GET/api/projects/[id]Get project detail
PATCH/api/projects/[id]Update project
DELETE/api/projects/[id]Delete project

Captures & Diffs

MethodPathDescription
POST/api/configs/[id]/captureTrigger screenshot capture
GET/api/configs/[id]/capturesList captures for config
GET/api/configs/[id]/embedGet embed token for config
POST/api/comparisonCompare two captures
GET/api/analysis/[diffId]Get AI analysis for a diff

Documentation

MethodPathDescription
GET/api/generate-docsList generated docs
POST/api/generate-docsStart doc generation
POST/api/generate-docs/[id]/publishPublish doc to platform
POST/api/generate-docs/[id]/translateTranslate doc

Hosted Sites

MethodPathDescription
GET/api/hosted-sitesList hosted doc sites
POST/api/hosted-sitesCreate hosted site
PATCH/api/hosted-sites/[id]Update hosted site

Launch & Promote

MethodPathDescription
POST/api/optimize-landingAnalyze landing page
POST/api/legalScan for legal data
POST/api/ph-launchFetch Product Hunt data
POST/api/social-postsFetch social post data
POST/api/launch-calendarGet launch calendar

Account & Billing

MethodPathDescription
GET/api/profileGet user profile
GET/api/usageGet usage stats
GET/api/api-keysList API keys
POST/api/api-keysCreate API key
POST/api/stripe/checkoutCreate Stripe checkout session
POST/api/stripe/portalCreate Stripe portal session