Get started
API v1
API v1
База: https://clawhub.ai
OpenAPI: /api/v1/openapi.json
Повторное использование публичного каталога
Вы можете создать сторонний каталог, директорию или поисковую поверхность поверх публичных API чтения ClawHub. Публичные метаданные Skills и файлы Skills публикуются по правилам лицензии Skills ClawHub, а сам API имеет ограничения частоты запросов и должен использоваться ответственно.
Рекомендации:
- Используйте публичные конечные точки чтения, такие как
GET /api/v1/skills,GET /api/v1/searchиGET /api/v1/skills/{slug}, для списков каталога. - Кэшируйте ответы и учитывайте
429,Retry-Afterи заголовки ограничения частоты запросов вместо агрессивного опроса. - При отображении списков добавляйте ссылку на канонический URL Skills ClawHub, чтобы пользователи могли проверить исходную запись реестра.
- Используйте канонические URL страниц в форме
https://clawhub.ai/<owner>/skills/<slug>. - Не создавайте впечатление, что ClawHub одобряет, проверяет или управляет сторонним сайтом.
- Не зеркалируйте скрытый, приватный или заблокированный модерацией контент, обходя публичные фильтры API или границы авторизации.
Авторизация
- Публичное чтение: токен не требуется.
- Запись + аккаунт:
Authorization: Bearer clh_....
Ограничения частоты запросов
Применение с учетом авторизации:
-
Анонимные запросы: по IP.
-
Авторизованные запросы (действительный Bearer-токен): по корзине пользователя.
-
Отсутствующий/недействительный токен приводит к применению ограничения по IP.
-
Чтение: 3000/мин на IP, 12000/мин на ключ
-
Запись: 300/мин на IP, 3000/мин на ключ
-
Загрузка: 1200/мин на IP, 6000/мин на ключ
Заголовки: X-RateLimit-Limit, X-RateLimit-Reset, RateLimit-Limit, RateLimit-Reset;
X-RateLimit-Remaining, RateLimit-Remaining и Retry-After включаются при 429.
Семантика:
X-RateLimit-Reset: секунды эпохи Unix (абсолютное время сброса)RateLimit-Reset: задержка в секундах до сбросаX-RateLimit-Remaining/RateLimit-Remaining: точный оставшийся бюджет, если присутствует; шардированные успешные запросы опускают его вместо возврата приблизительного глобального значенияRetry-After: задержка в секундах ожидания при429
Пример 429:
HTTP/2 429x-ratelimit-limit: 20x-ratelimit-remaining: 0x-ratelimit-reset: 1771404540ratelimit-limit: 20ratelimit-remaining: 0ratelimit-reset: 34retry-after: 34Обработка клиентом:
- Предпочитайте
Retry-After, если он присутствует. - Иначе используйте
RateLimit-Resetили вычисляйте задержку изX-RateLimit-Reset. - Добавляйте джиттер к повторным попыткам.
Ошибки
- Ошибки v1 являются обычным текстом (
text/plain; charset=utf-8), включая400,401,403,404,429и ответы заблокированных загрузок. - Неизвестные параметры запроса игнорируются для совместимости.
- Известные параметры запроса с недопустимыми значениями возвращают
400.
Конечные точки
Публичное чтение:
GET /api/v1/search?q=...- Необязательные фильтры:
highlightedOnly=true,nonSuspiciousOnly=true - Устаревший псевдоним:
nonSuspicious=true
- Необязательные фильтры:
GET /api/v1/skills?limit=&cursor=&sort=sort:updated(по умолчанию),recommended(default),createdAt(newest),downloads,stars(rating), устаревшие псевдонимы установкиinstallsCurrent/installs/installsAllTimeсопоставляются сdownloads,trending- Недопустимые значения
sortвозвращают400 cursorприменяется к сортировкам, кромеtrending- Необязательный фильтр:
nonSuspiciousOnly=true - Устаревший псевдоним:
nonSuspicious=true - С
nonSuspiciousOnly=trueстраницы на основе курсора могут содержать меньше элементов, чемlimit; используйтеnextCursor, чтобы продолжить. recommendedиспользует сигналы вовлеченности и новизны.
GET /api/v1/skills/{slug}GET /api/v1/skills/{slug}/moderationGET /api/v1/skills/{slug}/versions?limit=&cursor=GET /api/v1/skills/{slug}/versions/{version}GET /api/v1/skills/{slug}/scan?version=&tag=GET /api/v1/skills/{slug}/file?path=&version=&tag=GET /api/v1/resolve?slug=&hash=GET /api/v1/download?slug=&version=&tag=- Размещенные Skills возвращают детерминированные ZIP-байты.
- Текущие Skills на базе GitHub со сканированием
cleanилиsuspiciousвозвращают JSON-дескриптор передачиpublic-githubвместо байтов ClawHub.
GET /api/v1/skills/export?startDate=&endDate=&limit=&cursor=- Размещенные Skills экспортируются как сохраненные файлы.
- Текущие Skills на базе GitHub со сканированием
cleanилиsuspiciousэкспортируются как дескрипторы передачиpublic-github.
GET /api/v1/packages?limit=&cursor=&sort=sort:updated(по умолчанию),recommended,downloads, устаревший псевдонимinstalls- Недопустимые значения
sortвозвращают400
GET /api/v1/plugins?limit=&cursor=&sort=sort:recommended(по умолчанию),downloads,updated, устаревший псевдонимinstalls
GET /api/v1/plugins/search?q=...GET /api/v1/packages/{name}/versions/{version}/artifactGET /api/v1/packages/{name}/versions/{version}/securityGET /api/v1/packages/{name}/versions/{version}/artifact/downloadGET /api/npm/{package}GET /api/npm/{package}/-/{tarball}.tgz
Требуется авторизация:
POST /api/v1/skills(публикация, multipart предпочтителен)DELETE /api/v1/skills/{slug}DELETE /api/v1/packages/{name}POST /api/v1/skills/{slug}/undeletePOST /api/v1/packages/{name}/undeletePOST /api/v1/skills/{slug}/renamePOST /api/v1/skills/{slug}/mergePOST /api/v1/skills/{slug}/transferPOST /api/v1/packages/{name}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/skills/export?startDate=&endDate=&limit=&cursor=GET /api/v1/plugins/export?startDate=&endDate=&limit=&cursor=&family=GET /api/v1/transfers/incomingGET /api/v1/transfers/outgoingGET /api/v1/whoami
Только администратор:
POST /api/v1/users/reserveрезервирует корневые slugs и приватные заглушки пакетов без выпусков для handle владельца.
Устаревшее
Устаревшие /api/* и /api/cli/* всё еще доступны. См. DEPRECATIONS.md.