Help us improve
Share bugs, ideas, or general feedback.
From wix-ecom-cowork
Provides curl command patterns for direct Wix REST API calls to Stores Catalog V1-V3, with authentication, site/account headers, queries, pagination, bulk updates, and PATCH operations.
npx claudepluginhub wix/wix-ecom-cowork --plugin wix-ecom-coworkHow this skill is triggered — by the user, by Claude, or both
Slash command
/wix-ecom-cowork:wix-api-coreThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides foundational patterns for making direct Wix REST API calls without using MCP tools. All requests use curl commands with proper authentication and headers.
Guides discovery of Wix eCommerce APIs via Playwright UI automation, official docs, and user guidance to build commands/skills for wix-ecom-cowork plugin.
Builds and consumes WooCommerce REST API v3 endpoints: authentication, custom routes, resource extensions, webhooks, batch operations. For WooCommerce API development and integrations.
Configures and manages Wix business solutions via REST API: stores, bookings, payments, CMS, contacts, forms, media, blog, calendar, domains, and more.
Share bugs, ideas, or general feedback.
This skill provides foundational patterns for making direct Wix REST API calls without using MCP tools. All requests use curl commands with proper authentication and headers.
df7c18eb-009b-4868-9891-15e19dddbe67 (hard-coded)${API_KEY} (environment variable)${SITE_ID} (environment variable)Site-level requests (most common):
-H "Authorization: ${API_KEY}"
-H "wix-site-id: ${SITE_ID}"
-H "Content-Type: application/json"
Account-level requests (rare):
-H "Authorization: ${API_KEY}"
-H "wix-account-id: ${ACCOUNT_ID}"
-H "Content-Type: application/json"
wix-site-id OR wix-account-id, NOT bothContent-Type: application/jsonhttps://www.wixapis.com/stores/v1/
https://www.wixapis.com/stores-reader/v1/
https://www.wixapis.com/stores/v2/
https://www.wixapis.com/stores/v3/
Note: Each site supports either V1 or V3, not both. Use Catalog Versioning API to determine which version a site uses.
curl -X GET "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Accept: application/json"
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"visible\": true}",
"paging": {"limit": 50, "offset": 0}
}
}'
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"name": "Updated Product Name",
"price": 29.99
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/bulk/products/update" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"set": [
{
"id": "product-1",
"property": "visible",
"value": true
}
]
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"paging": {
"limit": 100,
"offset": 0
}
}
}'
Response includes pagination metadata:
{
"products": [...],
"metadata": {
"count": 100,
"offset": 0,
"total": 450
}
}
Iterate through pages:
"offset": 0"offset": 100"offset": 200offset + count >= totalFilters use JSON string format inside query:
-d '{
"query": {
"filter": "{\"price\": {\"$gte\": 10, \"$lte\": 100}}"
}
}'
Common filter operators:
$eq - equals$ne - not equals$gt - greater than$gte - greater than or equal$lt - less than$lte - less than or equal$in - value in array$and - logical AND$or - logical OR-d '{
"query": {
"sort": "{\"price\": \"asc\"}",
"paging": {"limit": 50}
}
}'
Sort directions:
"asc" - ascending"desc" - descending200 - Success400 - Bad Request (invalid parameters)401 - Unauthorized (invalid API key)403 - Forbidden (insufficient permissions)404 - Not Found (resource doesn't exist)429 - Too Many Requests (rate limit)500 - Internal Server Error{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Product ID is required",
"details": {
"applicationError": {
"description": "Product ID cannot be empty",
"code": "MISSING_REQUIRED_FIELD"
}
}
}
}
response=$(curl -s -w "\n%{http_code}" -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{"query": {}}')
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')
if [ "$http_code" -ge 400 ]; then
echo "Error: HTTP $http_code"
echo "$body" | jq '.error'
exit 1
fi
echo "$body" | jq '.'
Wix API Rate Limits:
Best Practices:
X-RateLimit-* headers in responses{
"product": {
"id": "abc123",
"name": "Product Name",
"price": 29.99,
"visible": true
}
}
{
"products": [
{
"id": "abc123",
"name": "Product 1"
}
],
"metadata": {
"count": 1,
"offset": 0,
"total": 1
}
}
{
"bulkActionMetadata": {
"totalSuccesses": 10,
"totalFailures": 0,
"undetailedFailures": 0
},
"results": [
{
"itemMetadata": {
"id": "product-1",
"originalIndex": 0,
"success": true
}
}
]
}
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{"query": {"paging": {"limit": 1}}}'
Expected response: HTTP 200 with product data
# Test read permission
curl -X GET "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
# Test write permission
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{"product": {"name": "Test Update"}}'
export API_KEY="your-api-key-here"
export SITE_ID="your-site-id-here"
export APP_ID="df7c18eb-009b-4868-9891-15e19dddbe67"
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json"
curl ... | jq '.'
curl ... > response.json
curl -v ...