ClawSkills logoClawSkills

WooCommerce

WooCommerce REST API integration with managed OAuth. Access products, orders, customers, coupons, shipping, taxes, reports, and webhooks. Use this skill when us

Introduction

# WooCommerce

Access the WooCommerce REST API with managed OAuth authentication. Manage products, orders, customers, coupons, shipping, taxes, and more for e-commerce operations.

## Quick Start

```bash # List products python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

## Base URL

``` https://gateway.maton.ai/woocommerce/{native-api-path} ```

Replace `{native-api-path}` with the actual WooCommerce API endpoint path. The gateway proxies requests to your WooCommerce store and automatically handles authentication.

## Authentication

All requests require the Maton API key in the Authorization header:

``` Authorization: Bearer $MATON_API_KEY ```

**Environment Variable:** Set your API key as `MATON_API_KEY`:

```bash export MATON_API_KEY="YOUR_API_KEY" ```

### Getting Your API Key

1. Sign in or create an account at [maton.ai](https://maton.ai) 2. Go to [maton.ai/settings](https://maton.ai/settings) 3. Copy your API key

## Connection Management

Manage your WooCommerce OAuth connections at `https://ctrl.maton.ai`.

### List Connections

```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections?app=woocommerce&status=ACTIVE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

### Create Connection

```bash python <<'EOF' import urllib.request, os, json data = json.dumps({'app': 'woocommerce'}).encode() req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

### Get Connection

```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

**Response:** ```json { "connection": { "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80", "status": "ACTIVE", "creation_time": "2025-12-08T07:20:53.488460Z", "last_updated_time": "2026-01-31T20:03:32.593153Z", "url": "https://connect.maton.ai/?session_token=...", "app": "woocommerce", "metadata": {} } } ```

Open the returned `url` in a browser to complete OAuth authorization.

### Delete Connection

```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

### Specifying Connection

If you have multiple WooCommerce connections, specify which one to use with the `Maton-Connection` header:

```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

If omitted, the gateway uses the default (oldest) active connection.

## API Reference

### Products

#### List All Products

```bash GET /woocommerce/wp-json/wc/v3/products ```

Query parameters: - `page` - Current page (default: 1) - `per_page` - Items per page (default: 10, max: 100) - `search` - Search by product name - `status` - Filter by status: `draft`, `pending`, `private`, `publish` - `type` - Filter by type: `simple`, `grouped`, `external`, `variable` - `sku` - Filter by SKU - `category` - Filter by category ID - `tag` - Filter by tag ID - `featured` - Filter featured products - `on_sale` - Filter on-sale products - `min_price` / `max_price` - Filter by price range - `stock_status` - Filter by stock status: `instock`, `outofstock`, `onbackorder` - `orderby` - Sort by: `date`, `id`, `include`, `title`, `slug`, `price`, `popularity`, `rating` - `order` - Sort order: `asc`, `desc`

**Example:**

```bash curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products?per_page=20&status=publish" -H "Authorization: Bearer $MATON_API_KEY" ```

**Response:** ```json [ { "id": 123, "name": "Premium T-Shirt", "slug": "premium-t-shirt", "type": "simple", "status": "publish", "sku": "TSH-001", "price": "29.99", "regular_price": "34.99", "sale_price": "29.99", "stock_quantity": 50, "stock_status": "instock", "categories": [{"id": 15, "name": "Apparel"}], "images": [{"id": 456, "src": "https://..."}] } ] ```

#### Get a Product

```bash GET /woocommerce/wp-json/wc/v3/products/{id} ```

**Example:**

```bash curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products/123" -H "Authorization: Bearer $MATON_API_KEY" ```

#### Create a Product

```bash POST /woocommerce/wp-json/wc/v3/products Content-Type: application/json

{ "name": "New Product", "type": "simple", "regular_price": "49.99", "description": "Full product description", "short_description": "Brief description", "sku": "PROD-001", "manage_stock": true, "stock_quantity": 100, "categories": [{"id": 15}], "images": [{"src": "https://example.com/image.jpg"}] } ```

**Example:**

```bash curl -s -X POST "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"name": "Premium Widget", "type": "simple", "regular_price": "19.99", "sku": "WDG-001"}' ```

#### Update a Product

```bash PUT /woocommerce/wp-json/wc/v3/products/{id} ```

**Example:**

```bash curl -s -X PUT "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products/123" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"regular_price": "24.99", "sale_price": "19.99"}' ```

#### Delete a Product

```bash DELETE /woocommerce/wp-json/wc/v3/products/{id} ```

Query parameters: - `force` - Set to `true` to permanently delete (default: `false` moves to trash)

#### Duplicate a Product

```bash POST /woocommerce/wp-json/wc/v3/products/{id}/duplicate ```

### Product Variations

For variable products, manage individual variations:

#### List Variations

```bash GET /woocommerce/wp-json/wc/v3/products/{product_id}/variations ```

#### Create Variation

```bash POST /woocommerce/wp-json/wc/v3/products/{product_id}/variations Content-Type: application/json

{ "regular_price": "29.99", "sku": "TSH-001-RED-M", "attributes": [ {"id": 1, "option": "Red"}, {"id": 2, "option": "Medium"} ] } ```

#### Update Variation

```bash PUT /woocommerce/wp-json/wc/v3/products/{product_id}/variations/{id} ```

#### Delete Variation

```bash DELETE /woocommerce/wp-json/wc/v3/products/{product_id}/variations/{id} ```

#### Batch Update Variations

```bash POST /woocommerce/wp-json/wc/v3/products/{product_id}/variations/batch ```

### Product Attributes

#### List Attributes

```bash GET /woocommerce/wp-json/wc/v3/products/attributes ```

#### Create Attribute

```bash POST /woocommerce/wp-json/wc/v3/products/attributes Content-Type: application/json

{ "name": "Color", "slug": "color", "type": "select", "order_by": "menu_order" } ```

#### Get/Update/Delete Attribute

```bash GET /woocommerce/wp-json/wc/v3/products/attributes/{id} PUT /woocommerce/wp-json/wc/v3/products/attributes/{id} DELETE /woocommerce/wp-json/wc/v3/products/attributes/{id} ```

### Attribute Terms

```bash GET /woocommerce/wp-json/wc/v3/products/attributes/{attribute_id}/terms POST /woocommerce/wp-json/wc/v3/products/attributes/{attribute_id}/terms GET /woocommerce/wp-json/wc/v3/products/attributes/{attribute_id}/terms/{id} PUT /woocommerce/wp-json/wc/v3/products/attributes/{attribute_id}/terms/{id} DELETE /woocommerce/wp-json/wc/v3/products/attributes/{attribute_id}/terms/{id} ```

### Product Categories

#### List Categories

```bash GET /woocommerce/wp-json/wc/v3/products/categories ```

#### Create Category

```bash POST /woocommerce/wp-json/wc/v3/products/categories Content-Type: application/json

{ "name": "Electronics", "parent": 0, "description": "Electronic products" } ```

#### Get/Update/Delete Category

```bash GET /woocommerce/wp-json/wc/v3/products/categories/{id} PUT /woocommerce/wp-json/wc/v3/products/categories/{id} DELETE /woocommerce/wp-json/wc/v3/products/categories/{id} ```

### Product Tags

```bash GET /woocommerce/wp-json/wc/v3/products/tags POST /woocommerce/wp-json/wc/v3/products/tags GET /woocommerce/wp-json/wc/v3/products/tags/{id} PUT /woocommerce/wp-json/wc/v3/products/tags/{id} DELETE /woocommerce/wp-json/wc/v3/products/tags/{id} ```

### Product Shipping Classes

```bash GET /woocommerce/wp-json/wc/v3/products/shipping_classes POST /woocommerce/wp-json/wc/v3/products/shipping_classes GET /woocommerce/wp-json/wc/v3/products/shipping_classes/{id} PUT /woocommerce/wp-json/wc/v3/products/shipping_classes/{id} DELETE /woocommerce/wp-json/wc/v3/products/shipping_classes/{id} ```

### Product Reviews

#### List Reviews

```bash GET /woocommerce/wp-json/wc/v3/products/reviews ```

Query parameters: - `product` - Filter by product ID - `status` - Filter by status: `approved`, `hold`, `spam`, `trash`

#### Create Review

```bash POST /woocommerce/wp-json/wc/v3/products/reviews Content-Type: application/json

{ "product_id": 123, "review": "Great product!", "reviewer": "John Doe", "reviewer_email": "[email protected]", "rating": 5 } ```

#### Get/Update/Delete Review

```bash GET /woocommerce/wp-json/wc/v3/products/reviews/{id} PUT /woocommerce/wp-json/wc/v3/products/reviews/{id} DELETE /woocommerce/wp-json/wc/v3/products/reviews/{id} ```

---

### Orders

#### List All Orders

```bash GET /woocommerce/wp-json/wc/v3/orders ```

Query parameters: - `page` - Current page (default: 1) - `per_page` - Items per page (default: 10) - `search` - Search orders - `after` / `before` - Filter by date (ISO8601) - `status` - Order status (see below) - `customer` - Filter by customer ID - `product` - Filter by product ID - `orderby` - Sort by: `date`, `id`, `include`, `title`, `slug` - `order` - Sort order: `asc`, `desc`

**Order Statuses:** - `pending` - Payment pending - `processing` - Payment received, awaiting fulfillment - `on-hold` - Awaiting payment confirmation - `completed` - Order fulfilled - `cancelled` - Cancelled by admin or customer - `refunded` - Fully refunded - `failed` - Payment failed

**Example:**

```bash curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/orders?status=processing&per_page=50" -H "Authorization: Bearer $MATON_API_KEY" ```

**Response:** ```json [ { "id": 456, "status": "processing", "currency": "USD", "total": "129.99", "customer_id": 12, "billing": { "first_name": "John", "last_name": "Doe", "email": "[email protected]" }, "line_items": [ { "id": 789, "product_id": 123, "name": "Premium T-Shirt", "quantity": 2, "total": "59.98" } ] } ] ```

#### Get an Order

```bash GET /woocommerce/wp-json/wc/v3/orders/{id} ```

#### Create an Order

```bash POST /woocommerce/wp-json/wc/v3/orders Content-Type: application/json

{ "payment_method": "stripe", "payment_method_title": "Credit Card", "set_paid": true, "billing": { "first_name": "John", "last_name": "Doe", "address_1": "123 Main St", "city": "Anytown", "state": "CA", "postcode": "12345", "country": "US", "email": "[email protected]", "phone": "555-1234" }, "shipping": { "first_name": "John", "last_name": "Doe", "address_1": "123 Main St", "city": "Anytown", "state": "CA", "postcode": "12345", "country": "US" }, "line_items": [ { "product_id": 123, "quantity": 2 } ] } ```

#### Update an Order

```bash PUT /woocommerce/wp-json/wc/v3/orders/{id} ```

**Example - Update order status:**

```bash curl -s -X PUT "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/orders/456" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"status": "completed"}' ```

#### Delete an Order

```bash DELETE /woocommerce/wp-json/wc/v3/orders/{id} ```

### Order Notes

#### List Order Notes

```bash GET /woocommerce/wp-json/wc/v3/orders/{order_id}/notes ```

#### Create Order Note

```bash POST /woocommerce/wp-json/wc/v3/orders/{order_id}/notes Content-Type: application/json

{ "note": "Order shipped via FedEx, tracking #12345", "customer_note": true } ```

- `customer_note`: Set to `true` to make the note visible to the customer

#### Get/Delete Order Note

```bash GET /woocommerce/wp-json/wc/v3/orders/{order_id}/notes/{id} DELETE /woocommerce/wp-json/wc/v3/orders/{order_id}/notes/{id} ```

### Order Refunds

#### List Refunds

```bash GET /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds ```

#### Create Refund

```bash POST /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds Content-Type: application/json

{ "amount": "25.00", "reason": "Product damaged during shipping", "api_refund": true } ```

- `api_refund`: Set to `true` to process refund through payment gateway

#### Get/Delete Refund

```bash GET /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds/{id} DELETE /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds/{id} ```

---

### Customers

#### List All Customers

```bash GET /woocommerce/wp-json/wc/v3/customers ```

Query parameters: - `page` - Current page (default: 1) - `per_page` - Items per page (default: 10) - `search` - Search by name or email - `email` - Filter by exact email - `role` - Filter by role: `all`, `administrator`, `customer`, `shop_manager` - `orderby` - Sort by: `id`, `include`, `name`, `registered_date` - `order` - Sort order: `asc`, `desc`

**Example:**

```bash curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/customers?per_page=25" -H "Authorization: Bearer $MATON_API_KEY" ```

**Response:** ```json [ { "id": 12, "email": "[email protected]", "first_name": "John", "last_name": "Doe", "username": "johndoe", "billing": { "first_name": "John", "last_name": "Doe", "address_1": "123 Main St", "city": "Anytown", "state": "CA", "postcode": "12345", "country": "US", "email": "[email protected]", "phone": "555-1234" }, "shipping": { "first_name": "John", "last_name": "Doe", "address_1": "123 Main St", "city": "Anytown", "state": "CA", "postcode": "12345", "country": "US" } } ] ```

#### Get a Customer

```bash GET /woocommerce/wp-json/wc/v3/customers/{id} ```

#### Create a Customer

```bash POST /woocommerce/wp-json/wc/v3/customers Content-Type: application/json

{ "email": "[email protected]", "first_name": "Jane", "last_name": "Smith", "username": "janesmith", "password": "secure_password", "billing": { "first_name": "Jane", "last_name": "Smith", "address_1": "456 Oak Ave", "city": "Springfield", "state": "IL", "postcode": "62701", "country": "US", "email": "[email protected]", "phone": "555-5678" } } ```

#### Update a Customer

```bash PUT /woocommerce/wp-json/wc/v3/customers/{id} ```

#### Delete a Customer

```bash DELETE /woocommerce/wp-json/wc/v3/customers/{id} ```

### Customer Downloads

```bash GET /woocommerce/wp-json/wc/v3/customers/{customer_id}/downloads ```

Returns downloadable products the customer has access to.

---

### Coupons

#### List All Coupons

```bash GET /woocommerce/wp-json/wc/v3/coupons ```

Query parameters: - `page` - Current page (default: 1) - `per_page` - Items per page (default: 10) - `search` - Search coupons - `code` - Filter by coupon code

#### Get a Coupon

```bash GET /woocommerce/wp-json/wc/v3/coupons/{id} ```

#### Create a Coupon

```bash POST /woocommerce/wp-json/wc/v3/coupons Content-Type: application/json

{ "code": "SUMMER2024", "discount_type": "percent", "amount": "15", "description": "Summer promotion - 15% off", "date_expires": "2024-08-31T23:59:59", "individual_use": true, "usage_limit": 100, "usage_limit_per_user": 1, "minimum_amount": "50.00", "maximum_amount": "500.00", "free_shipping": false, "exclude_sale_items": true } ```

**Discount Types:** - `percent` - Percentage discount - `fixed_cart` - Fixed amount off entire cart - `fixed_product` - Fixed amount off per product

**Coupon Properties:** - `code` - Coupon code (required) - `amount` - Discount amount - `discount_type` - Type of discount - `description` - Coupon description - `date_expires` - Expiration date (ISO8601) - `individual_use` - Cannot be combined with other coupons - `product_ids` - Array of product IDs the coupon applies to - `excluded_product_ids` - Array of product IDs excluded - `usage_limit` - Total number of times coupon can be used - `usage_limit_per_user` - Usage limit per customer - `limit_usage_to_x_items` - Max items the discount applies to - `free_shipping` - Enables free shipping - `product_categories` - Array of category IDs - `excluded_product_categories` - Array of excluded category IDs - `exclude_sale_items` - Exclude sale items from discount - `minimum_amount` - Minimum cart total required - `maximum_amount` - Maximum cart total allowed - `email_restrictions` - Array of allowed email addresses

#### Update a Coupon

```bash PUT /woocommerce/wp-json/wc/v3/coupons/{id} ```

#### Delete a Coupon

```bash DELETE /woocommerce/wp-json/wc/v3/coupons/{id} ```

---

### Taxes

#### Tax Rates

```bash GET /woocommerce/wp-json/wc/v3/taxes POST /woocommerce/wp-json/wc/v3/taxes GET /woocommerce/wp-json/wc/v3/taxes/{id} PUT /woocommerce/wp-json/wc/v3/taxes/{id} DELETE /woocommerce/wp-json/wc/v3/taxes/{id} POST /woocommerce/wp-json/wc/v3/taxes/batch ```

**Create Tax Rate Example:**

```bash curl -s -X POST "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/taxes" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"country": "US", "state": "CA", "rate": "7.25", "name": "CA State Tax", "shipping": true}' ```

#### Tax Classes

```bash GET /woocommerce/wp-json/wc/v3/taxes/classes POST /woocommerce/wp-json/wc/v3/taxes/classes DELETE /woocommerce/wp-json/wc/v3/taxes/classes/{slug} ```

---

### Shipping

#### Shipping Zones

```bash GET /woocommerce/wp-json/wc/v3/shipping/zones POST /woocommerce/wp-json/wc/v3/shipping/zones GET /woocommerce/wp-json/wc/v3/shipping/zones/{id} PUT /woocommerce/wp-json/wc/v3/shipping/zones/{id} DELETE /woocommerce/wp-json/wc/v3/shipping/zones/{id} ```

**Create Shipping Zone Example:**

```bash curl -s -X POST "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/shipping/zones" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"name": "US West Coast", "order": 1}' ```

#### Shipping Zone Locations

```bash GET /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/locations PUT /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/locations ```

**Update Zone Locations Example:**

```bash curl -s -X PUT "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/shipping/zones/1/locations" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '[{"code": "US:CA", "type": "state"}, {"code": "US:OR", "type": "state"}, {"code": "US:WA", "type": "state"}]' ```

#### Shipping Zone Methods

```bash GET /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods POST /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods GET /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods/{id} PUT /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods/{id} DELETE /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods/{id} ```

#### Shipping Methods (Global)

```bash GET /woocommerce/wp-json/wc/v3/shipping_methods GET /woocommerce/wp-json/wc/v3/shipping_methods/{id} ```

---

### Payment Gateways

```bash GET /woocommerce/wp-json/wc/v3/payment_gateways GET /woocommerce/wp-json/wc/v3/payment_gateways/{id} PUT /woocommerce/wp-json/wc/v3/payment_gateways/{id} ```

**Example - Enable a Payment Gateway:**

```bash curl -s -X PUT "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/payment_gateways/stripe" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"enabled": true}' ```

---

### Settings

#### List Settings Groups

```bash GET /woocommerce/wp-json/wc/v3/settings ```

#### List Settings in a Group

```bash GET /woocommerce/wp-json/wc/v3/settings/{group} ```

Common groups: `general`, `products`, `tax`, `shipping`, `checkout`, `account`, `email`

#### Get/Update a Setting

```bash GET /woocommerce/wp-json/wc/v3/settings/{group}/{id} PUT /woocommerce/wp-json/wc/v3/settings/{group}/{id} ```

**Example - Update Store Address:**

```bash curl -s -X PUT "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/settings/general/woocommerce_store_address" -H "Content-Type: application/json" -H "Authorization: Bearer $MATON_API_KEY" -d '{"value": "123 Commerce St"}' ```

#### Batch Update Settings

```bash POST /woocommerce/wp-json/wc/v3/settings/{group}/batch ```

---

### Webhooks

#### List All Webhooks

```bash GET /woocommerce/wp-json/wc/v3/webhooks ```

#### Create a Webhook

```bash POST /woocommerce/wp-json/wc/v3/webhooks Content-Type: application/json

{ "name": "Order Created", "topic": "order.created", "delivery_url": "https://example.com/webhooks/woocommerce", "status": "active" } ```

**Webhook Topics:** - `order.created`, `order.updated`, `order.deleted`, `order.restored` - `product.created`, `product.updated`, `product.deleted`, `product.restored` - `customer.created`, `customer.updated`, `customer.deleted` - `coupon.created`, `coupon.updated`, `coupon.deleted`, `coupon.restored`

#### Get/Update/Delete Webhook

```bash GET /woocommerce/wp-json/wc/v3/webhooks/{id} PUT /woocommerce/wp-json/wc/v3/webhooks/{id} DELETE /woocommerce/wp-json/wc/v3/webhooks/{id} ```

---

### Reports

#### List Available Reports

```bash GET /woocommerce/wp-json/wc/v3/reports ```

#### Sales Report

```bash GET /woocommerce/wp-json/wc/v3/reports/sales ```

Query parameters: - `period` - Report period: `week`, `month`, `last_month`, `year` - `date_min` / `date_max` - Custom date range

#### Top Sellers Report

```bash GET /woocommerce/wp-json/wc/v3/reports/top_sellers ```

#### Coupons Totals

```bash GET /woocommerce/wp-json/wc/v3/reports/coupons/totals ```

#### Customers Totals

```bash GET /woocommerce/wp-json/wc/v3/reports/customers/totals ```

#### Orders Totals

```bash GET /woocommerce/wp-json/wc/v3/reports/orders/totals ```

#### Products Totals

```bash GET /woocommerce/wp-json/wc/v3/reports/products/totals ```

#### Reviews Totals

```bash GET /woocommerce/wp-json/wc/v3/reports/reviews/totals ```

---

### Data

#### List All Data Endpoints

```bash GET /woocommerce/wp-json/wc/v3/data ```

#### Continents

```bash GET /woocommerce/wp-json/wc/v3/data/continents GET /woocommerce/wp-json/wc/v3/data/continents/{code} ```

#### Countries

```bash GET /woocommerce/wp-json/wc/v3/data/countries GET /woocommerce/wp-json/wc/v3/data/countries/{code} ```

#### Currencies

```bash GET /woocommerce/wp-json/wc/v3/data/currencies GET /woocommerce/wp-json/wc/v3/data/currencies/{code} GET /woocommerce/wp-json/wc/v3/data/currencies/current ```

---

### System Status

```bash GET /woocommerce/wp-json/wc/v3/system_status GET /woocommerce/wp-json/wc/v3/system_status/tools POST /woocommerce/wp-json/wc/v3/system_status/tools/{id} ```

---

## Batch Operations

Most resources support batch operations for creating, updating, and deleting multiple items:

```bash POST /woocommerce/wp-json/wc/v3/{resource}/batch Content-Type: application/json

{ "create": [ {"name": "New Product 1", "regular_price": "19.99"}, {"name": "New Product 2", "regular_price": "29.99"} ], "update": [ {"id": 123, "regular_price": "24.99"} ], "delete": [456, 789] } ```

**Response:** ```json { "create": [...], "update": [...], "delete": [...] } ```

## Pagination

WooCommerce uses page-based pagination with response headers:

**Query Parameters:** - `page` - Page number (default: 1) - `per_page` - Items per page (default: 10, max: 100) - `offset` - Offset to start from

**Response Headers:** - `X-WP-Total` - Total number of items - `X-WP-TotalPages` - Total number of pages - `Link` - Contains `next`, `prev`, `first`, `last` pagination links

**Example:**

```bash curl -s -I -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products?page=2&per_page=25" -H "Authorization: Bearer $MATON_API_KEY" ```

## Code Examples

### JavaScript

```javascript const response = await fetch( 'https://gateway.maton.ai/woocommerce/wp-json/wc/v3/orders?status=processing', { headers: { 'Authorization': `Bearer ${process.env.MATON_API_KEY}` } } ); const orders = await response.json(); ```

### Python

```python import os import requests

response = requests.get( 'https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'per_page': 50, 'status': 'publish'} ) products = response.json() ```

### Creating an Order with Line Items

```python import os import requests

order_data = { "payment_method": "stripe", "set_paid": True, "billing": { "first_name": "John", "last_name": "Doe", "email": "[email protected]", "address_1": "123 Main St", "city": "Anytown", "state": "CA", "postcode": "12345", "country": "US" }, "line_items": [ {"product_id": 123, "quantity": 2}, {"product_id": 456, "quantity": 1} ] }

response = requests.post( 'https://gateway.maton.ai/woocommerce/wp-json/wc/v3/orders', headers={ 'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}', 'Content-Type': 'application/json' }, json=order_data ) order = response.json() ```

## Notes

- All monetary amounts are returned as strings with two decimal places - Dates are in ISO8601 format: `YYYY-MM-DDTHH:MM:SS` - Resource IDs are integers - The API requires "pretty permalinks" enabled in WordPress - Use `context=edit` parameter for additional writable fields - IMPORTANT: When using curl commands, use `curl -g` when URLs contain brackets (`fields[]`, `sort[]`, `records[]`) to disable glob parsing - IMPORTANT: When piping curl output to `jq` or other commands, environment variables like `$MATON_API_KEY` may not expand correctly in some shell environments. You may get "Invalid API key" errors when piping.

## Error Handling

| Status | Meaning | |--------|---------| | 400 | Bad request or invalid data | | 401 | Invalid or missing authentication | | 403 | Forbidden - insufficient permissions | | 404 | Resource not found | | 500 | Internal server error |

**Error Response Format:** ```json { "code": "woocommerce_rest_invalid_id", "message": "Invalid ID.", "data": { "status": 404 } } ```

### Troubleshooting: API Key Issues

1. Check that the `MATON_API_KEY` environment variable is set:

```bash echo $MATON_API_KEY ```

2. Verify the API key is valid by listing connections:

```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```

### Troubleshooting: Invalid App Name

1. Ensure your URL path starts with `woocommerce`. For example:

- Correct: `https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products` - Incorrect: `https://gateway.maton.ai/wp-json/wc/v3/products`

## Resources

### General - [WooCommerce REST API Documentation](https://woocommerce.github.io/woocommerce-rest-api-docs/) - [API Authentication Guide](https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication) - [WooCommerce Developer Resources](https://developer.woocommerce.com/)

### Products - [Products](https://woocommerce.github.io/woocommerce-rest-api-docs/#products) - [Product Variations](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-variations) - [Product Attributes](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-attributes) - [Product Attribute Terms](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-attribute-terms) - [Product Categories](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-categories) - [Product Tags](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-tags) - [Product Shipping Classes](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-shipping-classes) - [Product Reviews](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-reviews)

### Orders - [Orders](https://woocommerce.github.io/woocommerce-rest-api-docs/#orders) - [Order Notes](https://woocommerce.github.io/woocommerce-rest-api-docs/#order-notes) - [Refunds](https://woocommerce.github.io/woocommerce-rest-api-docs/#refunds)

### Customers - [Customers](https://woocommerce.github.io/woocommerce-rest-api-docs/#customers)

### Coupons - [Coupons](https://woocommerce.github.io/woocommerce-rest-api-docs/#coupons)

### Taxes - [Tax Rates](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rates) - [Tax Classes](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-classes)

### Shipping - [Shipping Zones](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-zones) - [Shipping Zone Locations](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-zone-locations) - [Shipping Zone Methods](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-zone-methods) - [Shipping Methods](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-methods)

### Payments & Settings - [Payment Gateways](https://woocommerce.github.io/woocommerce-rest-api-docs/#payment-gateways) - [Settings](https://woocommerce.github.io/woocommerce-rest-api-docs/#settings) - [Setting Options](https://woocommerce.github.io/woocommerce-rest-api-docs/#setting-options)

### Webhooks - [Webhooks](https://woocommerce.github.io/woocommerce-rest-api-docs/#webhooks)

### Reports - [Reports](https://woocommerce.github.io/woocommerce-rest-api-docs/#reports) - [Sales Reports](https://woocommerce.github.io/woocommerce-rest-api-docs/#sales-reports) - [Top Sellers Report](https://woocommerce.github.io/woocommerce-rest-api-docs/#top-sellers-report) - [Coupons Totals](https://woocommerce.github.io/woocommerce-rest-api-docs/#coupons-totals) - [Customers Totals](https://woocommerce.github.io/woocommerce-rest-api-docs/#customers-totals) - [Orders Totals](https://woocommerce.github.io/woocommerce-rest-api-docs/#orders-totals) - [Products Totals](https://woocommerce.github.io/woocommerce-rest-api-docs/#products-totals) - [Reviews Totals](https://woocommerce.github.io/woocommerce-rest-api-docs/#reviews-totals)

### Data - [Data](https://woocommerce.github.io/woocommerce-rest-api-docs/#data) - [Continents](https://woocommerce.github.io/woocommerce-rest-api-docs/#continents) - [Countries](https://woocommerce.github.io/woocommerce-rest-api-docs/#countries) - [Currencies](https://woocommerce.github.io/woocommerce-rest-api-docs/#currencies)

### System - [System Status](https://woocommerce.github.io/woocommerce-rest-api-docs/#system-status) - [System Status Tools](https://woocommerce.github.io/woocommerce-rest-api-docs/#system-status-tools) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:[email protected])

More Products