GET /api/v1/cloud/skills
Retrieves the list of all skills under the current account with cursor-based pagination.
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer $QODER_PAT |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Maximum number of records per page. Default 20, range 1-100. Values above 100 return 400 invalid_request_error. |
page | string | No | Claude-style forward cursor. Equivalent to after_id; mutually exclusive with before_id and after_id |
after_id | string | No | Cursor pagination: return records after this ID. Mutually exclusive with page and before_id |
before_id | string | No | Cursor pagination: return records before this ID. Mutually exclusive with page and after_id |
name | string | No | Prefix search on skill name, case-insensitive |
source | string | No | Filter by source. Valid values: custom, qoder |
Example request
# List all skills
curl -X GET https://api.qoder.com/api/v1/cloud/skills \
-H "Authorization: Bearer $QODER_PAT"
# Paginate
curl -X GET "https://api.qoder.com/api/v1/cloud/skills?limit=10" \
-H "Authorization: Bearer $QODER_PAT"
# Page forward with a cursor
curl -X GET "https://api.qoder.com/api/v1/cloud/skills?limit=10&page=skill_019e3bba474b73cfaf19eae9b5f5e66d" \
-H "Authorization: Bearer $QODER_PAT"
Example response
HTTP 200 OK{
"data": [
{
"id": "skill_019e3bba474b73cfaf19eae9b5f5e66d",
"type": "skill",
"display_title": "test-skill-api-doc",
"description": "A test skill for API documentation",
"source": "custom",
"latest_version": "1",
"metadata": {
"team": "docs"
},
"created_at": "2026-05-18T15:35:24.248164Z",
"updated_at": "2026-05-18T15:35:24.248164Z"
}
],
"next_page": null,
"first_id": "skill_019e3bba474b73cfaf19eae9b5f5e66d",
"last_id": "skill_019e3bba474b73cfaf19eae9b5f5e66d",
"has_more": false
}
Pagination example (has_more = true)
{
"data": [],
"next_page": "skill_019e3bbb6a25768b9b50ca2f52aa4345",
"first_id": "skill_019e3bbb6a25768b9b50ca2f52aa4345",
"last_id": "skill_019e3bbb6a25768b9b50ca2f52aa4345",
"has_more": true
}
Empty list response
{
"data": [],
"next_page": null,
"first_id": null,
"last_id": null,
"has_more": false
}
Response fields
| Field | Type | Description |
|---|---|---|
data | array | Array of Skill objects. content is not included in list responses |
next_page | string | null | Forward cursor for the next page; use as page when has_more is true |
first_id | string | null | ID of the first record on the current page |
last_id | string | null | ID of the last record on the current page |
has_more | boolean | Whether more records are available; when true, use next_page as the next page’s page value |
Errors
| HTTP | Type | Trigger |
|---|---|---|
| 400 | invalid_request_error | Invalid limit, invalid source, or more than one of page, before_id, and after_id is provided |
| 401 | TOKEN_INVALID | Missing or invalid authentication token |
Related
Agent Skills
Attach domain expertise to your agent.