WooCommerce REST API integration with managed OAuth. Access products, orders, customers, coupons, shipping, taxes, reports, and webhooks. Use this skill when users want to manage e-commerce operations, process orders, or integrate with WooCommerce stores. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Install
Documentation
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
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:
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
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
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
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:
{
"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
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:
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
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
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:
[
{
"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
GET /woocommerce/wp-json/wc/v3/products/{id}
Example:
curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/products/123" -H "Authorization: Bearer $MATON_API_KEY"
#### Create a Product
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:
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
PUT /woocommerce/wp-json/wc/v3/products/{id}
Example:
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
DELETE /woocommerce/wp-json/wc/v3/products/{id}
Query parameters:
- -
force- Set totrueto permanently delete (default:falsemoves to trash)
#### Duplicate a Product
POST /woocommerce/wp-json/wc/v3/products/{id}/duplicate
Product Variations
For variable products, manage individual variations:
#### List Variations
GET /woocommerce/wp-json/wc/v3/products/{product_id}/variations
#### Create Variation
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
PUT /woocommerce/wp-json/wc/v3/products/{product_id}/variations/{id}
#### Delete Variation
DELETE /woocommerce/wp-json/wc/v3/products/{product_id}/variations/{id}
#### Batch Update Variations
POST /woocommerce/wp-json/wc/v3/products/{product_id}/variations/batch
Product Attributes
#### List Attributes
GET /woocommerce/wp-json/wc/v3/products/attributes
#### Create Attribute
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
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
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
GET /woocommerce/wp-json/wc/v3/products/categories
#### Create Category
POST /woocommerce/wp-json/wc/v3/products/categories
Content-Type: application/json
{
"name": "Electronics",
"parent": 0,
"description": "Electronic products"
}
#### Get/Update/Delete Category
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
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
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
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
POST /woocommerce/wp-json/wc/v3/products/reviews
Content-Type: application/json
{
"product_id": 123,
"review": "Great product!",
"reviewer": "John Doe",
"reviewer_email": "john@example.com",
"rating": 5
}
#### Get/Update/Delete Review
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
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
- -
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
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:
[
{
"id": 456,
"status": "processing",
"currency": "USD",
"total": "129.99",
"customer_id": 12,
"billing": {
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com"
},
"line_items": [
{
"id": 789,
"product_id": 123,
"name": "Premium T-Shirt",
"quantity": 2,
"total": "59.98"
}
]
}
]
#### Get an Order
GET /woocommerce/wp-json/wc/v3/orders/{id}
#### Create an Order
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": "john@example.com",
"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
PUT /woocommerce/wp-json/wc/v3/orders/{id}
Example - Update order status:
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
DELETE /woocommerce/wp-json/wc/v3/orders/{id}
Order Notes
#### List Order Notes
GET /woocommerce/wp-json/wc/v3/orders/{order_id}/notes
#### Create Order Note
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 totrueto make the note visible to the customer
#### Get/Delete Order Note
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
GET /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds
#### Create Refund
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 totrueto process refund through payment gateway
#### Get/Delete Refund
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
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
curl -s -X GET "https://gateway.maton.ai/woocommerce/wp-json/wc/v3/customers?per_page=25" -H "Authorization: Bearer $MATON_API_KEY"
Response:
[
{
"id": 12,
"email": "john@example.com",
"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": "john@example.com",
"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
GET /woocommerce/wp-json/wc/v3/customers/{id}
#### Create a Customer
POST /woocommerce/wp-json/wc/v3/customers
Content-Type: application/json
{
"email": "jane@example.com",
"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": "jane@example.com",
"phone": "555-5678"
}
}
#### Update a Customer
PUT /woocommerce/wp-json/wc/v3/customers/{id}
#### Delete a Customer
DELETE /woocommerce/wp-json/wc/v3/customers/{id}
Customer Downloads
GET /woocommerce/wp-json/wc/v3/customers/{customer_id}/downloads
Returns downloadable products the customer has access to.
---
Coupons
#### List All Coupons
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
GET /woocommerce/wp-json/wc/v3/coupons/{id}
#### Create a Coupon
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
- -
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
PUT /woocommerce/wp-json/wc/v3/coupons/{id}
#### Delete a Coupon
DELETE /woocommerce/wp-json/wc/v3/coupons/{id}
---
Taxes
#### Tax Rates
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:
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
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
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:
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
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:
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
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)
GET /woocommerce/wp-json/wc/v3/shipping_methods
GET /woocommerce/wp-json/wc/v3/shipping_methods/{id}
---
Payment Gateways
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:
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
GET /woocommerce/wp-json/wc/v3/settings
#### List Settings in a Group
GET /woocommerce/wp-json/wc/v3/settings/{group}
Common groups: general, products, tax, shipping, checkout, account, email
#### Get/Update a Setting
GET /woocommerce/wp-json/wc/v3/settings/{group}/{id}
PUT /woocommerce/wp-json/wc/v3/settings/{group}/{id}
Example - Update Store Address:
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
POST /woocommerce/wp-json/wc/v3/settings/{group}/batch
---
Webhooks
#### List All Webhooks
GET /woocommerce/wp-json/wc/v3/webhooks
#### Create a Webhook
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
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
GET /woocommerce/wp-json/wc/v3/reports
#### Sales Report
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
GET /woocommerce/wp-json/wc/v3/reports/top_sellers
#### Coupons Totals
GET /woocommerce/wp-json/wc/v3/reports/coupons/totals
#### Customers Totals
GET /woocommerce/wp-json/wc/v3/reports/customers/totals
#### Orders Totals
GET /woocommerce/wp-json/wc/v3/reports/orders/totals
#### Products Totals
GET /woocommerce/wp-json/wc/v3/reports/products/totals
#### Reviews Totals
GET /woocommerce/wp-json/wc/v3/reports/reviews/totals
---
Data
#### List All Data Endpoints
GET /woocommerce/wp-json/wc/v3/data
#### Continents
GET /woocommerce/wp-json/wc/v3/data/continents
GET /woocommerce/wp-json/wc/v3/data/continents/{code}
#### Countries
GET /woocommerce/wp-json/wc/v3/data/countries
GET /woocommerce/wp-json/wc/v3/data/countries/{code}
#### Currencies
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
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:
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:
{
"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
- -
X-WP-Total- Total number of items - -
X-WP-TotalPages- Total number of pages - -
Link- Containsnext,prev,first,lastpagination links
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
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
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
import os
import requests
order_data = {
"payment_method": "stripe",
"set_paid": True,
"billing": {
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"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=editparameter for additional writable fields - -IMPORTANT: When using curl commands, use
curl -gwhen URLs contain brackets (fields[],sort[],records[]) to disable glob parsing - -IMPORTANT: When piping curl output to
jqor other commands, environment variables like$MATON_API_KEYmay 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:{
"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:
echo $MATON_API_KEY
2. Verify the API key is valid by listing connections:
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:support@maton.ai)
Launch an agent with WooCommerce on Termo.