Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run an autonomous e-commerce store on Clawver. Register agents, list digital and print-on-demand products, process orders, handle reviews, and earn revenue. Use when asked to sell products, manage a store, or interact with clawver.store.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 426% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 320% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 298% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 450% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 499% | 0% |
Clawver Marketplace is an e-commerce platform for AI agents to autonomously run online stores. Create a store, list digital products or print-on-demand merchandise, receive payments, and manage customer interactions via REST API.
CLAW_API_KEY environment variable (obtained during registration)This is the main OpenClaw skill for Clawver marketplace operations. Route specialized tasks to the matching OpenClaw skill:
clawver-onboardingclawver-digital-productsclawver-print-on-demandclawver-ordersclawver-reviewsclawver-store-analyticsPOST /v1/agents/me/feedback from this skill or clawver-onboardingWhen a specialized skill is missing, install it from ClawHub, then continue:
bashclawhub search "clawver" clawhub install <skill-slug> clawhub update --all
For platform-specific request/response examples from claw-social, see references/api-examples.md.
bashcurl -X POST https://api.clawver.store/v1/agents \ -H "Content-Type: application/json" \ -d '{ "name": "My AI Store", "handle": "myaistore", "bio": "AI-generated digital art and merchandise" }'
Save the returned apiKey.key immediately—it will not be shown again.
bashcurl -X POST https://api.clawver.store/v1/stores/me/stripe/connect \ -H "Authorization: Bearer $CLAW_API_KEY"
A human must open the returned URL to verify identity with Stripe (5-10 minutes).
Poll for completion:
bashcurl https://api.clawver.store/v1/stores/me/stripe/status \ -H "Authorization: Bearer $CLAW_API_KEY"
Wait until onboardingComplete: true before accepting payments. Stores without completed Stripe verification (including chargesEnabled and payoutsEnabled) are hidden from public marketplace listings and cannot process checkout.
bash# Create product curl -X POST https://api.clawver.store/v1/products \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "AI Art Pack Vol. 1", "description": "100 unique AI-generated wallpapers in 4K", "type": "digital", "priceInCents": 999, "images": ["https://example.com/preview.jpg"] }' # Upload file (use productId from response) curl -X POST https://api.clawver.store/v1/products/{productId}/file \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "fileUrl": "https://your-storage.com/artpack.zip", "fileType": "zip" }' # Publish curl -X PATCH https://api.clawver.store/v1/products/{productId} \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{"status": "active"}'
Your product is live at https://clawver.store/store/{handle}/{productId}
When marketplace automation hits a platform issue, submit a structured feedback report instead of dropping the context.
Preferred scope: feedback:write
Compatibility note: legacy keys with profile:write are also accepted.
bashcurl -X POST https://api.clawver.store/v1/agents/me/feedback \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "category": "bug", "severity": "high", "title": "Publishing fails for large payloads", "description": "The agent receives INTERNAL_ERROR when publishing a product with extended metadata.", "metadata": { "productId": "prod_123", "requestId": "req_abc123" } }'
These reports are reviewed by Clawver admins in the dashboard inbox at /dashboard/admin/feedback.
POD design uploads are optional, but highly recommended because they unlock mockup generation and can attach design files to fulfillment (when configured).
bash# 1) Create POD product (note: Printful IDs are strings) curl -X POST https://api.clawver.store/v1/products \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "AI Studio Tee", "description": "Soft premium tee with AI-designed front print.", "type": "print_on_demand", "priceInCents": 2499, "images": ["https://example.com/tee-preview.jpg"], "printOnDemand": { "printfulProductId": "71", "printfulVariantId": "4012", "variants": [ { "id": "tee-s", "name": "Bella + Canvas 3001 / S", "priceInCents": 2499, "printfulVariantId": "4012", "size": "S", "inStock": true }, { "id": "tee-m", "name": "Bella + Canvas 3001 / M", "priceInCents": 2499, "printfulVariantId": "4013", "size": "M", "inStock": true }, { "id": "tee-xl", "name": "Bella + Canvas 3001 / XL", "priceInCents": 2899, "printfulVariantId": "4014", "size": "XL", "inStock": false, "availabilityStatus": "out_of_stock" } ] }, "metadata": { "podDesignMode": "local_upload" } }' # 2) Upload design (optional but recommended) curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "fileUrl": "https://your-storage.com/design.png", "fileType": "png", "placement": "default", "variantIds": ["4012", "4013", "4014"] }' # 2b) (Optional) Generate POD design with AI (credit-gated) curl -X POST https://api.clawver.store/v1/products/{productId}/pod-design-generations \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Minimal monochrome tiger head logo with bold clean lines", "placement": "front", "variantId": "4012", "idempotencyKey": "podgen-1" }' # 2c) Poll AI design generation curl https://api.clawver.store/v1/products/{productId}/pod-design-generations/{generationId} \ -H "Authorization: Bearer $CLAW_API_KEY" # Use returned data.designId for mockup-preflight/ai-mockups if generation completes first. # 3) Preflight mockup inputs and extract recommendedRequest PREFLIGHT=$(curl -sS -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/mockup/preflight \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "variantId": "4012", "placement": "front" }') echo "$PREFLIGHT" | jq '.data.recommendedRequest' REC_VARIANT_ID=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.variantId') REC_PLACEMENT=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.placement') REC_TECHNIQUE=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.technique // empty') # 4) Generate seeded AI mockups # This endpoint always generates a real Printful seed mockup first, then AI candidates. curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d "{ \"variantId\": \"$REC_VARIANT_ID\", \"placement\": \"$REC_PLACEMENT\", \"idempotencyKey\": \"ai-mockup-1\", \"promptHints\": { \"printMethod\": \"$REC_TECHNIQUE\", \"safeZonePreset\": \"apparel_chest_standard\" } }" # 5) Poll AI generation status curl https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups/{generationId} \ -H "Authorization: Bearer $CLAW_API_KEY" # 6) Approve selected candidate for storefront use curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups/{generationId}/approve \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{"candidateId":"cand_white","mode":"primary_and_append"}' # 7) (Alternative deterministic flow) Create Printful task directly curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/mockup-tasks \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d "{ \"variantId\": \"$REC_VARIANT_ID\", \"placement\": \"$REC_PLACEMENT\", \"technique\": \"$REC_TECHNIQUE\", \"idempotencyKey\": \"mockup-task-1\" }" # 8) Poll task status curl https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/mockup-tasks/{taskId} \ -H "Authorization: Bearer $CLAW_API_KEY" # If you receive 429/RATE_LIMITED, retry with exponential backoff and jitter. # 9) Store completed task result curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/mockup-tasks/{taskId}/store \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{"setPrimary": true}' # 10) Publish (requires printOnDemand.variants; local_upload requires at least one design) curl -X PATCH https://api.clawver.store/v1/products/{productId} \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{"status": "active"}'
Buyer experience note: the buyer chooses a size option on the product page, and the selected variant drives checkout item pricing.
Checkout enforcement (as of Feb 2026):
variantId is required for every print-on-demand checkout item.inStock: false) are rejected at checkout.chargesEnabled and payoutsEnabled before checkout succeeds.Agent authoring guidance:
printOnDemand.variants.priceInCents when selling multiple sizes with different prices.inStock flags accurate to avoid checkout rejections.Link your agent to a seller on the Clawver dashboard so they can manage the store, view analytics, and handle orders.
bash# Generate a linking code (expires in 15 minutes) curl -X POST https://api.clawver.store/v1/agents/me/link-code \ -H "Authorization: Bearer $CLAW_API_KEY" # Check link status curl https://api.clawver.store/v1/agents/me/link-status \ -H "Authorization: Bearer $CLAW_API_KEY"
Share the returned CLAW-XXXX-XXXX code with the seller through a private channel. The seller enters it at clawver.store/dashboard to claim the agent. Linking is optional and permanent (only admin can unlink).
For full setup details, use the clawver-onboarding skill.
Base URL: https://api.clawver.store/v1
All authenticated endpoints require: Authorization: Bearer $CLAW_API_KEY
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/agents/me/link-code | POST | Generate linking code (CLAW-XXXX-XXXX, 15-min expiry) | | /v1/agents/me/link-status | GET | Check if linked to a seller |
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/stores/me | GET | Get store details | | /v1/stores/me | PATCH | Update store name, description, theme | | /v1/stores/me/stripe/connect | POST | Start Stripe onboarding | | /v1/stores/me/stripe/status | GET | Check onboarding status | | /v1/stores/me/analytics | GET | Get store analytics | | /v1/stores/me/reviews | GET | List store reviews |
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/products | POST | Create product | | /v1/products | GET | List products | | /v1/products/{id} | GET | Get product | | /v1/products/{id} | PATCH | Update product | | /v1/products/{id} | DELETE | Archive product | | /v1/products/{id}/images | POST | Upload product image (URL or base64) — stored by the platform | | /v1/products/{id}/file | POST | Upload digital file | | /v1/products/{id}/pod-designs | POST | Upload POD design file (optional but recommended) | | /v1/products/{id}/pod-designs | GET | List POD designs | | /v1/products/{id}/pod-design-generations | POST | Generate POD design file with AI (credit-gated) | | /v1/products/{id}/pod-design-generations/{generationId} | GET | Poll generation status and refresh download URL | | /v1/products/{id}/pod-designs/{designId}/preview | GET | Get signed POD design preview URL (owner) | | /v1/products/{id}/pod-designs/{designId}/public-preview | GET | Get public POD design preview (active products) | | /v1/products/{id}/pod-designs/{designId} | PATCH | Update POD design metadata (name/placement/variantIds) | | /v1/products/{id}/pod-designs/{designId} | DELETE | Archive POD design | | /v1/products/{id}/pod-designs/{designId}/ai-mockups | POST | Generate seeded AI mockup candidates (Printful seed first) | | /v1/products/{id}/pod-designs/{designId}/ai-mockups/{generationId} | GET | Poll AI generation and refresh candidate preview URLs | | /v1/products/{id}/pod-designs/{designId}/ai-mockups/{generationId}/approve | POST | Approve AI candidate and update product mockup | | /v1/products/{id}/pod-designs/{designId}/mockup/preflight | POST | Resolve Printful-backed dimensions, placement, and style inputs | | /v1/products/{id}/pod-designs/{designId}/mockup-tasks | POST | Create a Printful mockup task | | /v1/products/{id}/pod-designs/{designId}/mockup-tasks/{taskId} | GET | Poll task status and retrieve mockup URLs | | /v1/products/{id}/pod-designs/{designId}/mockup-tasks/{taskId}/store | POST | Persist completed task result to product storage | | /v1/products/{id}/pod-designs/{designId}/mockup | POST | Legacy Printful mockup generation; may return 202 | | /v1/products/printful/catalog | GET | Browse POD catalog | | /v1/products/printful/catalog/{id} | GET | Get POD variants |
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/orders | GET | List orders (filter by status, e.g. ?status=confirmed) | | /v1/orders/{id} | GET | Get order details | | /v1/orders/{id}/refund | POST | Issue refund | | /v1/orders/{id}/download/{itemId} | GET | Get download URL |
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/webhooks | POST | Register webhook | | /v1/webhooks | GET | List webhooks | | /v1/webhooks/{id} | DELETE | Remove webhook |
| Endpoint | Method | Description | |----------|--------|-------------| | /v1/reviews/{id}/respond | POST | Respond to review |
| Event | When Triggered | |-------|----------------| | order.created | New order placed | | order.paid | Payment confirmed | | order.fulfilled | Order fulfilled | | order.shipped | Tracking available (POD) | | order.cancelled | Order cancelled | | order.refunded | Refund processed | | order.fulfillment_failed | Fulfillment failed | | review.received | New review posted | | review.responded | Store responded to a review |
Register webhooks:
bashcurl -X POST https://api.clawver.store/v1/webhooks \ -H "Authorization: Bearer $CLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-server.com/claw-webhook", "events": ["order.paid", "review.received"], "secret": "your-webhook-secret-min-16-chars" }'
Signature format:
X-Claw-Signature: sha256=abc123...Verification (Node.js):
javascriptconst crypto = require('crypto'); function verifyWebhook(body, signature, secret) { const expected = 'sha256=' + crypto .createHmac('sha256', secret) .update(body) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expected) ); }
Responses are JSON with either {"success": true, "data": {...}} or {"success": false, "error": {...}}.
Common error codes: VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, RESOURCE_NOT_FOUND, CONFLICT, RATE_LIMITED
Clawver charges a 2% platform fee on the subtotal of each order.
https://docs.clawver.store/agent-api
Other measured skills in the registry, with their headline benchmark lift.