Live console
Adjust parameters and send a request directly to this site.
https://dshpluginhub.dev/api/v1/plugins/search?locale=en&sort=stars&page=1&per_page=20curl --request GET 'https://dshpluginhub.dev/api/v1/plugins/search?locale=en&sort=stars&page=1&per_page=20' \
--header 'Accept: application/json'Response
Send a request to view formatted JSON here.
Query parameters
All filters run server-side. Empty results return 200 with an empty array.
| Parameter | Rules |
|---|---|
q | Optional; at most 100 characters after whitespace normalization. |
locale | zh or en; defaults to en. |
category | Optional; uses the marketplace category set. |
type | host, client, or hybrid. |
source | npm or github. |
sort | relevance, growth, stars, newest, or active. |
page | 1-1000; defaults to 1. |
per_page | 1-50; defaults to 20. |
Response fields
Responses include public plugin data, compatibility, metrics, timestamps, links, and pagination metadata.
items[]11
idstring- GitHub repository numeric ID and the stable plugin identifier.
slugstring- Repository identifier in owner/repository form.
namestring- Plugin display name.
ownerstring- GitHub repository owner.
repostring- GitHub repository name.
descriptionstring- Plugin summary localized to the requested locale.
typehost | client | hybrid- Plugin runtime form.
categorystring- Marketplace category enum value.
topicsstring[]- GitHub repository topics.
languagestring- Primary language detected by GitHub.
licensestring- Repository license SPDX identifier.
items[].package6
namestring- Installable package name.
versionstring- Currently validated version.
sourcenpm | github- Installation source.
sourceSpecstring- Complete install source specification with a pinned version.
installCommandstring- Ready-to-run DSH command that installs the current latest release.
profilestring- DSH profile used by the install command.
items[].compatibility4
verificationLevelstatic-checked | runtime-verified- Distinguishes static catalog checks from runtime verification.
harnessVersionstring- DSH version used for compatibility validation.
smokeStatusstring- Static or runtime smoke validation status.
validatedAtstring- Latest validation time in ISO 8601.
items[].metrics5
starsnumber- Current GitHub star count.
starsDelta1dnumber | null- Star change between the latest two successful daily snapshots; null without a baseline.
forksnumber- Current GitHub fork count.
openIssuesnumber- Current open issue count.
viewsnumber- Cumulative marketplace detail-page views.
items[].timestamps3
listedAtstring- First marketplace listing time in ISO 8601.
lastPushedAtstring- Latest GitHub push time in ISO 8601.
sourceUpdatedAtstring- Latest source-data sync time in ISO 8601.
items[].links2
detailstring- Absolute localized plugin detail URL.
repositorystring- GitHub repository URL.
pagination4
pagenumber- Current page number.
perPagenumber- Current number of items per page.
totalnumber- Total number of matching plugins.
totalPagesnumber- Total number of result pages.
meta5
apiVersionv1- Current API version.
localezh | en- Locale used for this response.
querystring- Normalized search text; empty when omitted.
sortstring- Sort mode used for this response.
dataUpdatedAtstring | null- Latest result data update time in ISO 8601.
Complete response example
A successful request returns 200; this example includes every public field.
{
"items": [
{
"id": "1163808211",
"slug": "liustack/modlens",
"name": "modlens",
"owner": "liustack",
"repo": "modlens",
"description": "OCR, layout, and semantic visual evidence for text-only coding agents.",
"type": "hybrid",
"category": "multimodal-creative",
"topics": [
"dsh-plugin",
"vision",
"ocr"
],
"language": "TypeScript",
"license": "MIT",
"package": {
"name": "@liustack/modlens",
"version": "3.22.1",
"source": "npm",
"sourceSpec": "@liustack/modlens@3.22.1",
"installCommand": "dsh plugin --profile web add @liustack/modlens",
"profile": "web"
},
"compatibility": {
"harnessVersion": "0.1.0-rc.7",
"verificationLevel": "static-checked",
"smokeStatus": "static-passed",
"validatedAt": "2026-08-21T02:00:00.000Z"
},
"metrics": {
"stars": 3393,
"starsDelta1d": 24,
"forks": 91,
"openIssues": 2,
"views": 420
},
"timestamps": {
"listedAt": "2026-08-19T01:20:29.105Z",
"lastPushedAt": "2026-08-20T14:19:24.000Z",
"sourceUpdatedAt": "2026-08-21T02:00:00.000Z"
},
"links": {
"detail": "https://dsh-plugin-hub-blond.vercel.app/en/plugins/liustack/modlens",
"repository": "https://github.com/liustack/modlens"
}
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 216,
"totalPages": 11
},
"meta": {
"apiVersion": "v1",
"locale": "en",
"query": "vision",
"sort": "relevance",
"dataUpdatedAt": "2026-08-21T02:00:00.000Z"
}
}Errors and limits
Invalid parameters return 400, exhausted anonymous quotas return 429, and temporary failures return 503.
Anonymous clients receive 60 requests per minute and 2,000 per day by default. Response headers report remaining quota and reset time.
Rate limiting stores only a daily rotating HMAC of the IP address, never the raw IP.