API Reference
Use the OpenClawBundles API to integrate with the marketplace programmatically.
Base URL: https://api.openclawbundles.com
Authentication: Bearer token (JWT) or X-API-Key header
Products
/v1/productsList products with filtering, sorting, and pagination.
Response
{
"products": [...],
"page": 1,
"per_page": 12,
"total": 42,
"total_pages": 4
}Example
curl "https://api.openclawbundles.com/v1/products?page=1&per_page=12&sort=popular&type=skill"/v1/products/:slugGet detailed product information including versions, images, and creator info.
Response
{
"product": {
"id": "...",
"title": "My Awesome Skill",
"slug": "my-awesome-skill",
"price_cents": 999,
"avg_rating": 4.5,
...
}
}Example
curl "https://api.openclawbundles.com/v1/products/my-awesome-skill"Reviews
/v1/products/:slug/reviewsList reviews for a product with pagination.
Response
{
"reviews": [
{
"id": "...",
"rating": 5,
"title": "Great product!",
"body": "Works perfectly.",
"creator_reply": null,
"profiles": { "username": "buyer1" }
}
],
"total": 3
}Example
curl "https://api.openclawbundles.com/v1/products/my-skill/reviews?page=1"/v1/products/:slug/reviewsCreate a review. Requires a completed purchase. One review per product.
Request Body
{
"rating": 5,
"title": "Great product!",
"body": "Works perfectly for my use case."
}Example
curl -X POST "https://api.openclawbundles.com/v1/products/my-skill/reviews" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rating": 5, "title": "Great!", "body": "Works perfectly."}'/v1/products/:slug/reviews/:idEdit your own review.
Request Body
{ "rating": 4, "body": "Updated review." }Example
curl -X PATCH "https://api.openclawbundles.com/v1/products/my-skill/reviews/REVIEW_ID" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rating": 4}'/v1/products/:slug/reviews/:id/replyReply to a review as the product creator. One reply per review.
Request Body
{ "reply": "Thanks for the feedback!" }Example
curl -X POST "https://api.openclawbundles.com/v1/products/my-skill/reviews/REVIEW_ID/reply" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reply": "Thanks for the feedback!"}'Creator
/v1/creator/productsList your products with pagination.
Example
curl "https://api.openclawbundles.com/v1/creator/products" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/creator/productsCreate a new product (starts in draft status).
Request Body
{
"title": "My New Skill",
"description": "A useful OpenClaw skill.",
"type": "skill",
"price_cents": 999,
"tags": ["automation", "productivity"]
}Example
curl -X POST "https://api.openclawbundles.com/v1/creator/products" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "My New Skill", "type": "skill", "price_cents": 999}'/v1/creator/analytics/overviewGet KPIs: revenue, sales count, views, and conversion rate.
Response
{
"revenue": 15000,
"sales": 12,
"views": 340,
"conversion_rate": 3.53
}Example
curl "https://api.openclawbundles.com/v1/creator/analytics/overview?period=30d" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/creator/analytics/revenueGet revenue time series data grouped by day.
Response
{
"series": [
{ "date": "2026-04-01", "revenue": 1500, "sales": 2 },
{ "date": "2026-04-03", "revenue": 999, "sales": 1 }
]
}Example
curl "https://api.openclawbundles.com/v1/creator/analytics/revenue?period=30d" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/creator/analytics/productsGet per-product performance metrics.
Example
curl "https://api.openclawbundles.com/v1/creator/analytics/products" \
-H "Authorization: Bearer YOUR_TOKEN"Checkout
/v1/checkout/createCreate a Stripe Checkout session to purchase a product.
Request Body
{
"product_id": "PRODUCT_UUID",
"discount_code": "SAVE20"
}Response
{ "url": "https://checkout.stripe.com/..." }Example
curl -X POST "https://api.openclawbundles.com/v1/checkout/create" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": "PRODUCT_UUID"}'/v1/checkout/validate-discountValidate a discount code without consuming it.
Request Body
{ "code": "SAVE20", "product_id": "PRODUCT_UUID" }Example
curl -X POST "https://api.openclawbundles.com/v1/checkout/validate-discount" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code": "SAVE20", "product_id": "PRODUCT_UUID"}'Library
/v1/libraryList your purchased products.
Example
curl "https://api.openclawbundles.com/v1/library" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/library/:purchaseId/downloadGet a presigned download URL (expires in 15 minutes).
Response
{ "url": "https://...", "expires_in": 900 }Example
curl "https://api.openclawbundles.com/v1/library/PURCHASE_UUID/download" \
-H "Authorization: Bearer YOUR_TOKEN"API Keys
/v1/creator/api-keysCreate an API key. The plaintext key is returned only once.
Request Body
{
"name": "Production",
"scopes": ["products:read", "analytics:read"]
}Response
{
"api_key": {
"id": "...",
"name": "Production",
"key": "ocb_live_abc123...",
"scopes": ["products:read"]
}
}Example
curl -X POST "https://api.openclawbundles.com/v1/creator/api-keys" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Production", "scopes": ["products:read"]}'/v1/creator/api-keysList your API keys (without the key value).
Example
curl "https://api.openclawbundles.com/v1/creator/api-keys" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/creator/api-keys/:idRevoke an API key permanently.
Example
curl -X DELETE "https://api.openclawbundles.com/v1/creator/api-keys/KEY_ID" \
-H "Authorization: Bearer YOUR_TOKEN"Webhooks
Webhooks deliver real-time notifications via HTTPS POST. Each delivery includes an X-OCB-Signature header (HMAC-SHA256 of timestamp.body) and X-OCB-Timestamp.
/v1/creator/webhooksCreate a webhook endpoint. Max 5 per creator. Signing secret returned once.
Request Body
{
"url": "https://your-server.com/webhook",
"events": ["sale.completed", "product.review.created"]
}Response
{
"webhook": {
"id": "...",
"url": "https://example.com/hook",
"events": ["sale.completed"],
"signing_secret": "abc123..."
}
}Example
curl -X POST "https://api.openclawbundles.com/v1/creator/webhooks" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/hook", "events": ["sale.completed"]}'/v1/creator/webhooksList your webhook endpoints.
Example
curl "https://api.openclawbundles.com/v1/creator/webhooks" \
-H "Authorization: Bearer YOUR_TOKEN"/v1/creator/webhooks/:idUpdate webhook URL, events, or active status.
Request Body
{ "active": false }Example
curl -X PATCH "https://api.openclawbundles.com/v1/creator/webhooks/WEBHOOK_ID" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"active": false}'/v1/creator/webhooks/:idDelete a webhook endpoint.
Example
curl -X DELETE "https://api.openclawbundles.com/v1/creator/webhooks/WEBHOOK_ID" \
-H "Authorization: Bearer YOUR_TOKEN"Using API Keys
Instead of a Bearer token, you can authenticate with an API key using the X-API-Key header. API keys have scoped permissions — only endpoints matching your key's scopes will be accessible.
Available Scopes:
products:read— Read product dataproducts:write— Create and update productsanalytics:read— View analytics datadownloads:read— Access download linkswebhooks:write— Manage webhooks
Webhook Event Types
| Event | Description |
|---|---|
| sale.completed | A buyer has completed a purchase of your product |
| product.review.created | A buyer has left a review on your product |
| product.version.published | A new version of your product has been published |
| payout.sent | A payout has been sent to your Stripe account |