Developer Documentation
Integrate with MuleHub programmatically — search, download, and publish assets via REST API, CLI, or MCP server.
Base URL
https://mulehub.vercel.app/api/v1All endpoints are prefixed with /api/v1.
Response Format
All responses follow this shape:
// Success
{
"success": true,
"data": { ... },
"meta": { "total": 42, "page": 1, "limit": 20, "totalPages": 3 }
}
// Error
{
"success": false,
"error": "Human-readable error message"
}Authentication
Public endpoints (search, details, download) require no authentication. Management endpoints require an API key passed as a Bearer token:
Authorization: Bearer mh_your_api_key_hereGenerate API keys from your Profile > API Keys tab.
Public Endpoints
No authentication required.
GET /api/v1/assets
Search and browse all published assets.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| q | string | — | Search query (matches name and description) |
| category | string | — | Filter by category (e.g., "API Specs") |
| tags | string | — | Comma-separated tag filter (e.g., "rest,oauth") |
| sort | string | newest | Sort order: newest, oldest, downloads, rating |
| page | number | 1 | Page number |
| limit | number | 20 | Results per page (max 50) |
Example
curl "https://mulehub.vercel.app/api/v1/assets?q=salesforce&category=Connectors&sort=downloads&limit=5"Response
{
"success": true,
"data": [
{
"name": "Salesforce CRM Connector",
"slug": "salesforce-crm-connector",
"category": "Connectors",
"description": "Full-featured Salesforce connector with CRUD and Bulk API",
"author": "Test User",
"tags": ["salesforce", "crm", "connector"],
"averageRating": 4.5,
"reviewCount": 8,
"downloadCount": 120,
"latestVersion": "3.0.0",
"createdAt": "2026-01-15T10:00:00.000Z"
}
],
"meta": { "total": 12, "page": 1, "limit": 5, "totalPages": 3 }
}GET /api/v1/assets/:slug
Get full details of a specific asset including all versions, readme, and AI summary.
Example
curl "https://mulehub.vercel.app/api/v1/assets/salesforce-crm-connector"Response Fields
| Field | Type | Description |
|---|---|---|
| name | string | Asset display name |
| slug | string | URL-friendly identifier |
| category | string | Asset category |
| description | string | Short description |
| readme | string | null | Full markdown readme |
| aiSummary | object | null | AI-generated summary with steps and diagrams |
| author | string | Publisher's display name |
| tags | string[] | Asset tags |
| versions | array | All approved versions with files, size, changelog |
| averageRating | number | Average star rating (0-5) |
| downloadCount | number | Total downloads across all versions |
| sourceRepoUrl | string | null | Source repository or guide URL |
GET /api/v1/assets/:slug/download
Download an asset's files. Returns a single file directly or a zip archive if multiple files.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| version | string | Specific version ID (default: latest approved version) |
Example
# Download latest version
curl -O -J "https://mulehub.vercel.app/api/v1/assets/salesforce-crm-connector/download"
# Download specific version
curl -O -J "https://mulehub.vercel.app/api/v1/assets/salesforce-crm-connector/download?version=abc123"Authenticated Endpoints
Require Authorization: Bearer mh_... header.
POST /api/v1/assets
Create and publish a new asset. Accepts JSON (with base64 files) or multipart form data.
JSON Body
| Field | Required | Type | Description |
|---|---|---|---|
| name | Yes | string | Asset display name |
| category | Yes | string | One of the valid categories |
| description | Yes | string | Short description |
| versionLabel | Yes | string | Version label (e.g., "1.0.0") |
| files | Yes | array | [{ filename, content (base64) }] |
| tags | No | string[] | Tags for discoverability |
| readme | No | string | Markdown readme content |
| changelog | No | string | Version changelog |
| sourceRepoUrl | No | string | Source repository URL |
Example (JSON)
curl -X POST https://mulehub.vercel.app/api/v1/assets \
-H "Authorization: Bearer mh_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Order API Spec",
"category": "API Specs",
"description": "OpenAPI 3.0 spec for order management",
"versionLabel": "1.0.0",
"tags": ["openapi", "orders", "rest"],
"files": [{
"filename": "order-api.json",
"content": "eyJvcGVuYXBpIjoiMy4wLjAi...base64..."
}]
}'Example (multipart)
curl -X POST https://mulehub.vercel.app/api/v1/assets \
-H "Authorization: Bearer mh_your_key_here" \
-F "name=Order API Spec" \
-F "category=API Specs" \
-F "description=OpenAPI 3.0 spec for order management" \
-F "versionLabel=1.0.0" \
-F "tags=openapi,orders,rest" \
-F "files=@./order-api.json"Response
{
"success": true,
"data": {
"slug": "order-api-spec",
"status": "APPROVED",
"suggestedTags": ["json", "openapi"],
"scanResult": null
}
}If credentials are detected in uploaded files, status will be "REJECTED" and scanResult will contain the findings.
POST /api/v1/assets/:slug/versions
Add a new version to an asset you own. Same body format as create (versionLabel + files required).
Example
curl -X POST https://mulehub.vercel.app/api/v1/assets/order-api-spec/versions \
-H "Authorization: Bearer mh_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"versionLabel": "2.0.0",
"changelog": "Added fulfillment endpoints",
"files": [{ "filename": "order-api-v2.json", "content": "...base64..." }]
}'GET /api/v1/me/assets
List your own assets, including those with rejected scans or pending status.
Example
curl -H "Authorization: Bearer mh_your_key_here" \
"https://mulehub.vercel.app/api/v1/me/assets?page=1&limit=10"Error Codes
| Status | Meaning |
|---|---|
| 400 | Bad request — missing required fields or invalid input |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — you don't own this asset |
| 404 | Asset or version not found |
| 409 | Conflict — duplicate URL already shared |
| 500 | Server error |
Categories
Valid category values for the category parameter:
API SpecsMuleSoft ProjectsConnectorsDataWeave LibrariesPoliciesCI/CD PipelinesTest SuitesEnvironment ConfigsAgent ToolingSkills & RulesAI AgentsGuides & TutorialsOther