API Reference
Build integrations with Skillsmith using our HTTP API. Search skills, fetch skill details, and request recommendations programmatically over plain HTTP — no SDK required.
Base URL
All endpoints are served from the Skillsmith API gateway:
https://api.skillsmith.app
The gateway proxies to the underlying Supabase Edge Functions. The direct Supabase origin path
is https://<project-ref>.supabase.co/functions/v1 — paths are identical, only
the host differs. Prefer the proxy base (api.skillsmith.app) for production traffic;
it terminates TLS, applies rate limiting, and shields the origin. Endpoint paths are RPC-style
function names (/skills-search, not /skills), so this is an HTTP API,
not a REST resource API.
Not @skillsmith/core
@skillsmith/core is a local DB/indexer library, not a network client — it does not
call the registry over HTTP. For programmatic registry access use the HTTP API documented here,
or the Skillsmith CLI.
Authentication
Pass your API key in the X-API-Key request header. Keys are tier-scoped and unlock
higher rate limits. Keys are available at account settings.
X-API-Key: $SKILLSMITH_API_KEY Search and skill-detail endpoints are also reachable unauthenticated at a low anonymous rate limit, but authenticated requests are strongly recommended for any integration.
Quick Start
Search for skills with a single GET request:
curl "https://api.skillsmith.app/skills-search?query=testing&trust_tier=verified&limit=10" \
-H "X-API-Key: $SKILLSMITH_API_KEY" Endpoints
GET /skills-search
Full-text search across skills with optional filters, passed as URL query-string parameters. Results are ranked by relevance and quality score.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
query | string | Conditional | Search query (minimum 3 characters). Required unless at least one filter (category, trust_tier, min_score) is provided. |
category | Category | No | Filter by category (case-sensitive — see Category) |
trust_tier | TrustTier | No | Filter by trust tier |
min_score | integer | No | Minimum quality score on a 0–100 integer scale |
limit | integer | No | Maximum results (default 20, max 100) |
offset | integer | No | Pagination offset (default 0) |
Example
curl "https://api.skillsmith.app/skills-search?query=git&category=Testing&trust_tier=verified&min_score=80&limit=5" \
-H "X-API-Key: $SKILLSMITH_API_KEY" Response (SearchResponse):
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "jest-helper",
"description": "Helper utilities for Jest testing",
"author": "community",
"repo_url": "https://github.com/example/jest-helper",
"quality_score": 0.85,
"trust_tier": "verified",
"tags": ["testing", "jest", "javascript"],
"stars": 150,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-15T00:00:00Z",
"categories": ["Testing", "Development"],
"rank": 0.92
}
],
"meta": {
"query": "git",
"total": 1,
"limit": 5,
"offset": 0,
"filters": { "category": "Testing", "trust_tier": "verified", "min_score": 80 }
}
} GET /skills-get
Retrieve detailed information about a single skill. The id query parameter accepts a
UUID, an author/name identifier (e.g. anthropic/commit), or a fuzzy
skill name.
Example
curl "https://api.skillsmith.app/skills-get?id=anthropic/commit" \
-H "X-API-Key: $SKILLSMITH_API_KEY" Response (SkillResponse) wraps a single skill in data:
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "commit",
"description": "Generate conventional commit messages",
"author": "anthropic",
"repo_url": "https://github.com/anthropic/commit",
"quality_score": 0.93,
"trust_tier": "official",
"tags": ["git", "commit"],
"stars": 1200,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-20T00:00:00Z",
"categories": ["DevOps"]
}
} POST /skills-recommend
Get skill recommendations ranked by relevance to your technology stack.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
stack | string[] | Yes | Technology stack, 1–10 items (e.g. ["react", "typescript"]) |
project_type | string | No | One of web, api, cli, mobile, data, ml |
limit | integer | No | Maximum recommendations (default 10, max 50) |
Example
curl -X POST https://api.skillsmith.app/skills-recommend \
-H "Content-Type: application/json" \
-H "X-API-Key: $SKILLSMITH_API_KEY" \
-d '{
"stack": ["typescript", "react", "jest"],
"project_type": "web",
"limit": 10
}'
Response (RecommendResponse) mirrors the search shape — a data array of
skills (each with an optional relevance_score) plus a meta object
echoing stack, project_type, total, and limit.
POST /events
Record an anonymous telemetry event. No personally identifiable information is collected;
anonymous_id must be a client-generated hex hash, never a user identifier.
curl -X POST https://api.skillsmith.app/events \
-H "Content-Type: application/json" \
-d '{
"event": "search",
"anonymous_id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"metadata": { "query": "testing", "results_count": 12 }
}' Returns { "ok": true } on success.
Wire Schema (JSON Response Shape)
All endpoints return snake_case JSON. The Skill object below is the
canonical wire schema returned inside data by every skill-returning endpoint.
Timestamps are ISO 8601 strings.
// Skill — wire schema (JSON response shape), snake_case
{
id: string; // UUID
name: string; // Skill name
description: string | null; // Skill description
author: string | null; // Author identifier
repo_url: string | null; // Source repository URL
quality_score: number | null; // 0-1 float (see Quality Score)
trust_tier: TrustTier; // Trust level
tags: string[]; // Searchable tags
stars: number | null; // GitHub stars count
created_at: string; // ISO 8601 timestamp
updated_at: string; // ISO 8601 timestamp
categories?: string[]; // Associated category names
}
Search results additionally carry a rank (relevance), and recommendation results
carry a relevance_score.
Category
Category values are case-sensitive Titlecase strings. Pass them exactly as
written — ?category=Testing matches, ?category=testing does not.
type Category =
| 'Development'
| 'Testing'
| 'DevOps'
| 'Documentation'
| 'Productivity'
| 'Security'; TrustTier
Five trust tiers, from highest assurance to lowest. See the trust tiers guide for criteria and promotion rules.
type TrustTier = 'official' | 'verified' | 'curated' | 'community' | 'unverified'; Quality Score
Quality is expressed on two different scales, so be careful not to mis-filter:
the min_score query parameter takes a 0–100 integer, while the
quality_score field in responses is a 0–1 float — a response value
of 0.85 corresponds to a min_score of 85.
Rate Limiting
API requests are rate-limited based on your plan:
| Plan | Requests/Month |
|---|---|
| Community | 1,000 |
| Individual | 10,000 |
| Team | 100,000 |
| Enterprise | Unlimited |
Each response includes X-RateLimit-Limit, X-RateLimit-Remaining, and
X-RateLimit-Reset (Unix timestamp) headers, plus an X-Request-ID for
support correlation.
Error Responses
Errors return a non-2xx status and a JSON body with an error message and optional
details:
{
"error": "Query must be at least 3 characters",
"details": { "parameter": "query", "received": "ab" }
} | Status | Meaning |
|---|---|
400 | Invalid request parameters |
404 | Skill or resource not found |
500 | Internal server error |
Enterprise Audit & SIEM
Audit-log access and SIEM export are exposed as MCP tools, not HTTP endpoints.
They run through the Skillsmith MCP server on the Enterprise tier — there is no
api.skillsmith.app path for them.
| MCP Tool | Description |
|---|---|
audit_query | Query audit-log events with filters (actor, action, time range) |
audit_export | Export audit-log events for a time range |
siem_export | Export audit events for SIEM ingestion |
SIEM Wire Formats
siem_export emits audit events in one of three wire formats, selectable per export:
| Format | Description |
|---|---|
CEF | ArcSight Common Event Format — pipe-delimited header plus key=value extensions |
LEEF | IBM QRadar Log Event Extended Format — tab-delimited attribute pairs |
JSON | Newline-delimited JSON objects, one audit event per line |
webhook_configure
MCP tool — in preview, availability pending a production migration. Configure HMAC-SHA256 signed webhooks for skill events (install, uninstall, update, audit) to integrate with external SIEM, incident-response, or notification pipelines.
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | HTTPS endpoint to receive events |
events | string[] | Yes | Event types to subscribe to (e.g. skill.installed) |
secret | string | No | HMAC-SHA256 signing secret (auto-generated if omitted) |
api_key_manage
MCP tool — in preview, availability pending a production migration. Manage API keys for programmatic access — list, create, rotate, and revoke keys scoped to your workspace.
| Field | Type | Required | Description |
|---|---|---|---|
action | 'list' | 'create' | 'rotate' | 'revoke' | Yes | Operation to perform |
keyId | string | Conditional | Required for rotate and revoke |
label | string | No | Human-readable label for create |
OpenAPI Specification
A machine-readable OpenAPI 3.0 specification is available at
www.skillsmith.app/openapi.yaml.
Import it into Postman, Insomnia, or any OpenAPI-compatible client to explore all endpoints.
Lifecycle Tutorials
The HTTP API endpoints above back the search, get_skill, and
recommend MCP tools that the CLI and MCP server expose. The lifecycle tutorials are
MCP-tool and CLI walkthroughs — they do not call these HTTP endpoints directly, but rely on the
same underlying data:
- Discover — uses the
searchandrecommendMCP tools (backed by/skills-searchand/skills-recommend). - Evaluate — uses the
get_skill,compare, andskill_diffMCP tools (skill detail backed by/skills-get). - Govern — uses the Enterprise
audit_query,audit_export, andsiem_exportMCP tools (see Enterprise Audit & SIEM for the wire format details).