Skills API
The Skills API is a paginated JSON REST endpoint that returns all discoverable resources on the platform. It is the primary machine-readable interface for programmatic discovery, supporting filtering by type, full-text search, and cursor-based pagination.
Endpoints
/api/discovery/skillsReturns all discoverable skills across every workspace on the platform.
/api/discovery/:workspaceId/skillsReturns discoverable skills belonging to a single workspace. workspaceId must be a valid UUID. Returns 404 if the workspace does not exist.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| type | gateway | function | file | app | - | Filter by resource type. |
| search | string | - | Case-insensitive search against name and description. |
| limit | integer (1–200) | 50 | Maximum number of skills to return. |
| offset | integer (≥ 0) | 0 | Number of skills to skip for pagination. |
Response shape
The response is a SkillSet object containing a flat list of endpoint-level items. Each skill is one callable endpoint; pagination.total is the total endpoint count.
{
"platform": "PayWeave",
"version": "0.1.0",
"scope": "global", // "global" | "workspace"
"workspaceId": "uuid", // present when scope is "workspace"
"workspaceName": "Acme AI Labs", // present when scope is "workspace"
"skills": [ /* SkillItem[] */ ],
"pagination": {
"limit": 50,
"offset": 0,
"total": 142
},
"generatedAt": "2026-04-02T10:30:00.000Z"
}Each entry in skills is a SkillItem object representing a single callable endpoint, with its parent skill fields denormalized onto it:
{
"id": "gw_abc123:analyse", // `${skillId}:${path}`
"skillId": "gw_abc123",
"skillName": "Sentiment Analysis API",
"skillDescription": "Analyse text sentiment using a fine-tuned model.",
"name": "Analyse Text",
"description": "Returns a sentiment score between -1.0 and 1.0.",
"methods": "POST",
"priceUsd": "0.005",
"resource": "https://api.payweave.app/gw/gw_abc123/analyse",
"skillMdUrl": "https://api.payweave.app/gw/gw_abc123/analyse/skill.md",
"openApiUrl": "https://api.payweave.app/gw/gw_abc123/openapi.json",
"inputSchema": { "text": { "type": "string" } }, // optional
"exampleInput": { "text": "PayWeave is great!" }, // optional
"exampleOutput": { "score": 0.92, "label": "positive" } // optional
}Fetch example
const res = await fetch(
'https://api.payweave.app/api/discovery/skills?limit=10'
);
const { data } = await res.json();
for (const skill of data.skills) {
console.log(`${skill.skillName} - ${skill.name}`);
console.log(` ${skill.methods} ${skill.resource} - $${skill.priceUsd}/call`);
}
Pagination
async function fetchAllItems() {
const PAGE = 50;
let offset = 0;
const all = [];
while (true) {
const res = await fetch(
`https://api.payweave.app/api/discovery/skills?limit=${PAGE}&offset=${offset}`
);
const { data } = await res.json();
all.push(...data.skills);
offset += PAGE;
if (offset >= data.pagination.total) break;
}
return all;
}
discoverable = true and status = active are returned. Changes may take up to five minutes to appear.OpenAPI specs
Every skill exposes a machine-readable OpenAPI 3.1 specification at its openApiUrl. The spec includes the x-payment-info extension on each operation describing the MPP payment intent, method, amount, and accepted currencies.