REST API
Submissions API
POST /api/v1/submissions — programmatically submit plugin proposals via API key, with inline tools and auth methods.
List Submissions
GET /api/v1/submissionsReturns all plugins created by the authenticated developer.
Authentication
API key required: Authorization: Bearer nk_live_...
Response
{
"plugins": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"slug": "my-plugin",
"name": "My Plugin",
"description": "A custom integration",
"reviewStatus": "draft",
"adminNotes": null,
"createdAt": "2025-03-15T10:30:00.000Z"
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Plugin UUID |
slug | string | Unique identifier |
name | string | Display name |
description | string or null | Plugin description |
reviewStatus | string | draft, pending_review, approved, declined, or revision_requested |
adminNotes | string or null | Feedback from admin (when declined or revision requested) |
createdAt | string | ISO 8601 timestamp |
Create Submission
POST /api/v1/submissionsCreate a new plugin submission, optionally including inline tools and auth methods. The plugin can be saved as a draft or immediately submitted for review.
Authentication
API key required: Authorization: Bearer nk_live_...
Request Body
{
"slug": "weather-api",
"name": "Weather API",
"description": "Current weather and forecast data",
"baseUrl": "https://api.weather.example.com",
"iconUrl": "https://example.com/weather-icon.png",
"toolSource": "manual",
"categoryIds": ["uuid-1"],
"submitForReview": true,
"tools": [
{
"slug": "GET_CURRENT_WEATHER",
"name": "Get Current Weather",
"description": "Returns current weather for a city",
"method": "GET",
"path": "/v1/current/{city}",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
],
"authMethods": [
{
"type": "api_key",
"label": "API Key Auth",
"isDefault": true,
"config": {
"header_name": "X-API-Key"
}
}
]
}Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | URL-safe identifier (lowercase, hyphens/underscores) |
name | string | Yes | Display name |
description | string | No | What the plugin does |
baseUrl | string | No | API root URL. Required for manual tool source. |
iconUrl | string | No | Plugin icon URL |
toolSource | string | No | manual (default), mcp, or both |
mcpConfig | object | No | MCP server configuration |
categoryIds | array | No | Array of category UUIDs to associate |
submitForReview | boolean | No | true to immediately submit; false (default) to save as draft |
tools | array | No | Inline tool definitions (see Tools API for schema) |
authMethods | array | No | Inline auth method definitions (see Auth System) |
Tool Object
| Field | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Unique tool slug within the plugin |
name | string | Yes | Display name |
description | string | Yes | Description shown to AI agents |
method | string | Yes | HTTP method (GET, POST, PUT, PATCH, DELETE) |
path | string | Yes | URL path appended to plugin base URL |
inputSchema | object | No | JSON Schema for parameters |
outputSchema | object | No | JSON Schema for response |
headers | object | No | Static headers merged per request |
Auth Method Object
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | oauth2, bearer_token, api_key, service_account, custom, no_auth |
label | string | Yes | Human-readable name |
isDefault | boolean | No | Whether this is the default method (default false) |
config | object | No | Type-specific configuration |
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"slug": "weather-api",
"reviewStatus": "pending_review"
}Example: cURL
curl -X POST https://your-domain.com/api/v1/submissions \
-H "Authorization: Bearer nk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "weather-api",
"name": "Weather API",
"description": "Current weather and forecast data",
"baseUrl": "https://api.weather.example.com",
"toolSource": "manual",
"submitForReview": true,
"tools": [
{
"slug": "GET_CURRENT_WEATHER",
"name": "Get Current Weather",
"description": "Returns current weather for a city",
"method": "GET",
"path": "/v1/current/{city}",
"inputSchema": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
],
"authMethods": [
{
"type": "api_key",
"label": "API Key Auth",
"isDefault": true,
"config": { "header_name": "X-API-Key" }
}
]
}'