Loslegen
API v1
API v1
Basis: https://clawhub.ai
OpenAPI: /api/v1/openapi.json
Wiederverwendung des öffentlichen Katalogs
Sie können auf Grundlage der öffentlichen Lese-APIs von ClawHub einen Katalog, ein Verzeichnis oder eine Suchoberfläche eines Drittanbieters erstellen. Öffentliche Skill-Metadaten und Skill-Dateien werden gemäß den Skill-Lizenzregeln von ClawHub veröffentlicht, während die API selbst ratenbegrenzt ist und verantwortungsvoll genutzt werden sollte.
Richtlinien:
- Verwenden Sie öffentliche Lese-Endpunkte wie
GET /api/v1/skills,GET /api/v1/searchundGET /api/v1/skills/{slug}für Katalogeinträge. - Speichern Sie Antworten im Cache und beachten Sie
429,Retry-Aftersowie die Ratenbegrenzungs-Header, anstatt häufige Abfragen durchzuführen. - Verlinken Sie beim Anzeigen von Einträgen auf die kanonische ClawHub-Skill-URL, damit Benutzer den zugrunde liegenden Registry-Eintrag prüfen können.
- Verwenden Sie kanonische Seiten-URLs in der Form
https://clawhub.ai/<owner>/skills/<slug>. - Erwecken Sie nicht den Eindruck, dass ClawHub die Drittanbieter-Website unterstützt, überprüft oder betreibt.
- Spiegeln Sie keine ausgeblendeten, privaten oder durch die Moderation gesperrten Inhalte, indem Sie öffentliche API-Filter oder Authentifizierungsgrenzen umgehen.
Authentifizierung
- Öffentlicher Lesezugriff: kein Token erforderlich.
- Schreibzugriff + Konto:
Authorization: Bearer clh_....
Ratenbegrenzungen
Authentifizierungsabhängige Durchsetzung:
-
Anonyme Anfragen: pro IP.
-
Authentifizierte Anfragen (gültiges Bearer-Token): pro Benutzerkontingent.
-
Bei fehlendem/ungültigem Token erfolgt die Durchsetzung nach IP.
-
Lesen: 3000/min pro IP, 12000/min pro Schlüssel
-
Schreiben: 300/min pro IP, 3000/min pro Schlüssel
-
Download: 1200/min pro IP, 6000/min pro Schlüssel
Header: X-RateLimit-Limit, X-RateLimit-Reset, RateLimit-Limit, RateLimit-Reset;
X-RateLimit-Remaining, RateLimit-Remaining und Retry-After sind bei 429 enthalten.
Semantik:
X-RateLimit-Reset: Sekunden seit der Unix-Epoche (absoluter Rücksetzzeitpunkt)RateLimit-Reset: Verzögerung in Sekunden bis zum ZurücksetzenX-RateLimit-Remaining/RateLimit-Remaining: exaktes verbleibendes Kontingent, sofern vorhanden; bei erfolgreichen, auf Shards verteilten Anfragen wird dieser Wert ausgelassen, statt einen ungefähren globalen Wert zurückzugebenRetry-After: bei429abzuwartende Verzögerung in Sekunden
Beispiel für 429:
HTTP/2 429x-ratelimit-limit: 20x-ratelimit-remaining: 0x-ratelimit-reset: 1771404540ratelimit-limit: 20ratelimit-remaining: 0ratelimit-reset: 34retry-after: 34Clientseitige Verarbeitung:
- Bevorzugen Sie
Retry-After, sofern vorhanden. - Verwenden Sie andernfalls
RateLimit-Resetoder leiten Sie die Verzögerung ausX-RateLimit-Resetab. - Fügen Sie Wiederholungsversuchen eine zufällige Streuung hinzu.
Fehler
- v1-Fehler sind Klartext (
text/plain; charset=utf-8), einschließlich400,401,403,404,429und Antworten bei blockierten Downloads. - Unbekannte Abfrageparameter werden aus Kompatibilitätsgründen ignoriert.
- Bekannte Abfrageparameter mit ungültigen Werten geben
400zurück.
Endpunkte
Öffentlicher Lesezugriff:
GET /api/v1/search?q=...- Optionale Filter:
highlightedOnly=true,nonSuspiciousOnly=true - Legacy-Alias:
nonSuspicious=true
- Optionale Filter:
GET /api/v1/skills?limit=&cursor=&sort=sort:updated(Standard),recommended(default),createdAt(newest),downloads,stars(rating), die Legacy-InstallationsaliaseinstallsCurrent/installs/installsAllTimewerden aufdownloads,trendingabgebildet- Ungültige
sort-Werte geben400zurück cursorgilt für Sortierungen außertrending- Optionaler Filter:
nonSuspiciousOnly=true - Legacy-Alias:
nonSuspicious=true - Mit
nonSuspiciousOnly=truekönnen cursorbasierte Seiten weniger alslimitElemente enthalten; verwenden SienextCursor, um fortzufahren. recommendedverwendet Interaktions- und Aktualitätssignale.
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=- Gehostete Skills geben deterministische ZIP-Bytes zurück.
- Aktuelle GitHub-gestützte Skills mit einem Scan vom Typ
cleanodersuspiciousgeben anstelle von ClawHub-Bytes einen JSON-Übergabedeskriptor vom Typpublic-githubzurück.
GET /api/v1/skills/export?startDate=&endDate=&limit=&cursor=- Gehostete Skills werden als gespeicherte Dateien exportiert.
- Aktuelle GitHub-gestützte Skills mit einem Scan vom Typ
cleanodersuspiciouswerden als Übergabedeskriptoren vom Typpublic-githubexportiert.
GET /api/v1/packages?limit=&cursor=&sort=sort:updated(Standard),recommended,downloads, Legacy-Aliasinstalls- Ungültige
sort-Werte geben400zurück
GET /api/v1/plugins?limit=&cursor=&sort=sort:recommended(Standard),downloads,updated, Legacy-Aliasinstalls
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
Authentifizierung erforderlich:
POST /api/v1/skills(Veröffentlichen, Multipart bevorzugt)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
Nur für Administratoren:
POST /api/v1/users/reservereserviert Stamm-Slugs und private Paketplatzhalter ohne Release für ein Eigentümer-Handle.
Legacy
Die Legacy-Endpunkte /api/* und /api/cli/* sind weiterhin verfügbar. Siehe DEPRECATIONS.md.