Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/woocommerce-products-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: WooCommerce REST Cart Products API
description: The WooCommerce REST API is the primary server-side interface for reading and writing WooCommerce store data programmatically. It follows REST conventions, uses JSON for all requests and responses, and is fully integrated with the WordPress REST API under the /wp-json/wc/v3/ namespace. The API covers products, product variations, product categories, product attributes, orders, order notes, order refunds, customers, coupons, tax rates, shipping zones, payment gateways, settings, webhooks, reports, and system status. Authentication uses Consumer Key and Consumer Secret pairs generated in the WooCommerce admin, transmitted over HTTPS via HTTP Basic Auth or OAuth 1.0a over plain HTTP.
version: v3
contact:
name: WooCommerce Developer Support
url: https://developer.woocommerce.com/docs/apis/rest-api/
termsOfService: https://woocommerce.com/terms-conditions/
servers:
- url: https://example.com/wp-json/wc/v3
description: Production Server (replace example.com with your store domain)
security:
- basicAuth: []
tags:
- name: Products
description: Create, retrieve, update, and delete store products and their variations
paths:
/products:
get:
operationId: listProducts
summary: WooCommerce List All Products
description: Returns a paginated list of products in the store. Supports filtering by status, category, tag, SKU, featured flag, on-sale flag, price range, stock status, and date ranges. Results are sorted by date by default. Use the page and per_page parameters to paginate through large catalogs.
tags:
- Products
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/before'
- name: status
in: query
description: 'Filter products by publication status. Options: any, draft, pending, private, publish.'
required: false
schema:
type: string
enum:
- any
- draft
- pending
- private
- publish
example: any
- name: category
in: query
description: Filter products by category ID.
required: false
schema:
type: string
example: string-value
- name: tag
in: query
description: Filter products by tag ID.
required: false
schema:
type: string
example: string-value
- name: on_sale
in: query
description: Limit results to products on sale when true.
required: false
schema:
type: boolean
example: true
- name: featured
in: query
description: Limit results to featured products when true.
required: false
schema:
type: boolean
example: true
- name: stock_status
in: query
description: 'Filter by stock status. Options: instock, outofstock, onbackorder.'
required: false
schema:
type: string
enum:
- instock
- outofstock
- onbackorder
example: instock
responses:
'200':
description: Successful list of products
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Product'
examples:
listProducts200Example:
summary: Default listProducts 200 response
x-microcks-default: true
value:
- id: 1
name: Example Name
slug: string-value
permalink: https://example.com/path
type: simple
status: draft
featured: true
description: A sample description
short_description: A sample description
sku: string-value
price: string-value
regular_price: string-value
sale_price: string-value
on_sale: true
purchasable: true
total_sales: 1
virtual: true
downloadable: true
manage_stock: true
stock_quantity: 1
stock_status: instock
weight: string-value
dimensions:
length: string-value
width: string-value
height: string-value
categories:
- id: 1
name: Example Name
slug: string-value
tags:
- id: 1
name: Example Name
slug: string-value
images:
- string-value
attributes:
- string-value
date_created: '2026-05-03T14:30:00Z'
date_modified: '2026-05-03T14:30:00Z'
meta_data:
- string-value
'401':
$ref: '#/components/responses/Unauthorized'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createProduct
summary: WooCommerce Create a Product
description: Creates a new product in the store. Requires at minimum a product name. Products can be simple, grouped, external/affiliate, or variable type. Pricing, stock management, shipping, tax settings, categories, tags, images, and attributes are all configurable at creation time.
tags:
- Products
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProductInput'
responses:
'201':
description: Product created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
examples:
createProduct201Example:
summary: Default createProduct 201 response
x-microcks-default: true
value:
id: 1
name: Example Name
slug: string-value
permalink: https://example.com/path
type: simple
status: draft
featured: true
description: A sample description
short_description: A sample description
sku: string-value
price: string-value
regular_price: string-value
sale_price: string-value
on_sale: true
purchasable: true
total_sales: 1
virtual: true
downloadable: true
manage_stock: true
stock_quantity: 1
stock_status: instock
weight: string-value
dimensions:
length: string-value
width: string-value
height: string-value
categories:
- id: 1
name: Example Name
slug: string-value
tags:
- id: 1
name: Example Name
slug: string-value
images:
- string-value
attributes:
- string-value
date_created: '2026-05-03T14:30:00Z'
date_modified: '2026-05-03T14:30:00Z'
meta_data:
- string-value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/products/{id}:
get:
operationId: getProduct
summary: WooCommerce Retrieve a Product
description: Returns the details of a single product identified by its numeric ID. Includes all product properties such as pricing, stock, images, categories, tags, attributes, and metadata.
tags:
- Products
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Product details
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
examples:
getProduct200Example:
summary: Default getProduct 200 response
x-microcks-default: true
value:
id: 1
name: Example Name
slug: string-value
permalink: https://example.com/path
type: simple
status: draft
featured: true
description: A sample description
short_description: A sample description
sku: string-value
price: string-value
regular_price: string-value
sale_price: string-value
on_sale: true
purchasable: true
total_sales: 1
virtual: true
downloadable: true
manage_stock: true
stock_quantity: 1
stock_status: instock
weight: string-value
dimensions:
length: string-value
width: string-value
height: string-value
categories:
- id: 1
name: Example Name
slug: string-value
tags:
- id: 1
name: Example Name
slug: string-value
images:
- string-value
attributes:
- string-value
date_created: '2026-05-03T14:30:00Z'
date_modified: '2026-05-03T14:30:00Z'
meta_data:
- string-value
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: updateProduct
summary: WooCommerce Update a Product
description: Updates an existing product identified by its numeric ID. Only the properties included in the request body are updated; omitted properties retain their current values.
tags:
- Products
parameters:
- $ref: '#/components/parameters/id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProductInput'
responses:
'200':
description: Product updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
examples:
updateProduct200Example:
summary: Default updateProduct 200 response
x-microcks-default: true
value:
id: 1
name: Example Name
slug: string-value
permalink: https://example.com/path
type: simple
status: draft
featured: true
description: A sample description
short_description: A sample description
sku: string-value
price: string-value
regular_price: string-value
sale_price: string-value
on_sale: true
purchasable: true
total_sales: 1
virtual: true
downloadable: true
manage_stock: true
stock_quantity: 1
stock_status: instock
weight: string-value
dimensions:
length: string-value
width: string-value
height: string-value
categories:
- id: 1
name: Example Name
slug: string-value
tags:
- id: 1
name: Example Name
slug: string-value
images:
- string-value
attributes:
- string-value
date_created: '2026-05-03T14:30:00Z'
date_modified: '2026-05-03T14:30:00Z'
meta_data:
- string-value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
operationId: deleteProduct
summary: WooCommerce Delete a Product
description: Deletes a product by its numeric ID. By default the product is moved to the trash. Set the force parameter to true to permanently delete the product and bypass the trash.
tags:
- Products
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/force'
responses:
'200':
description: Product deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
examples:
deleteProduct200Example:
summary: Default deleteProduct 200 response
x-microcks-default: true
value:
id: 1
name: Example Name
slug: string-value
permalink: https://example.com/path
type: simple
status: draft
featured: true
description: A sample description
short_description: A sample description
sku: string-value
price: string-value
regular_price: string-value
sale_price: string-value
on_sale: true
purchasable: true
total_sales: 1
virtual: true
downloadable: true
manage_stock: true
stock_quantity: 1
stock_status: instock
weight: string-value
dimensions:
length: string-value
width: string-value
height: string-value
categories:
- id: 1
name: Example Name
slug: string-value
tags:
- id: 1
name: Example Name
slug: string-value
images:
- string-value
attributes:
- string-value
date_created: '2026-05-03T14:30:00Z'
date_modified: '2026-05-03T14:30:00Z'
meta_data:
- string-value
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/products/batch:
post:
operationId: batchUpdateProducts
summary: WooCommerce Batch Create, Update, and Delete Products
description: Performs batch create, update, and delete operations on products in a single request. Pass arrays of product objects under the create, update, and delete keys respectively. Delete accepts an array of product IDs.
tags:
- Products
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchProductRequest'
responses:
'200':
description: Batch operation completed
content:
application/json:
schema:
$ref: '#/components/schemas/BatchProductResponse'
examples:
batchUpdateProducts200Example:
summary: Default batchUpdateProducts 200 response
x-microcks-default: true
value:
create:
- string-value
update:
- string-value
delete:
- string-value
'401':
$ref: '#/components/responses/Unauthorized'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/products/collection-data:
get:
operationId: getProductCollectionData
summary: WooCommerce Get Product Collection Data
description: Returns aggregate data about a product collection including price ranges, attribute counts, and category counts. Used to populate filter widgets on shop and category archive pages without fetching full product records.
tags:
- Products
parameters:
- name: calculate_price_range
in: query
description: Whether to calculate and return the min/max price range.
required: false
schema:
type: boolean
example: true
- name: calculate_attribute_counts
in: query
description: Comma-separated list of attribute slugs to count active terms for filter UIs.
required: false
schema:
type: string
example: string-value
- name: calculate_rating_counts
in: query
description: Whether to calculate and return review rating counts.
required: false
schema:
type: boolean
example: true
responses:
'200':
description: Product collection aggregate data
content:
application/json:
schema:
$ref: '#/components/schemas/ProductCollectionData'
examples:
getProductCollectionData200Example:
summary: Default getProductCollectionData 200 response
x-microcks-default: true
value:
price_range:
min_price: string-value
max_price: string-value
attribute_counts:
- term: 1
count: 1
rating_counts:
- rating: 1
count: 1
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
ProductImage:
type: object
description: An image associated with a product.
properties:
id:
type: integer
description: Image unique identifier.
example: 1
src:
type: string
format: uri
description: Image URL.
example: https://example.com/path
name:
type: string
description: Image name.
example: Example Name
alt:
type: string
description: Image alternative text.
example: string-value
BatchProductRequest:
type: object
description: Batch request for creating, updating, and deleting products.
properties:
create:
type: array
description: Array of product objects to create.
items:
$ref: '#/components/schemas/ProductInput'
example:
- string-value
update:
type: array
description: Array of product objects with IDs to update.
items:
$ref: '#/components/schemas/ProductInput'
example:
- string-value
delete:
type: array
description: Array of product IDs to delete.
items:
type: integer
example:
- 1
BatchProductResponse:
type: object
description: Response from a batch product operation.
properties:
create:
type: array
description: Created products.
items:
$ref: '#/components/schemas/Product'
example:
- string-value
update:
type: array
description: Updated products.
items:
$ref: '#/components/schemas/Product'
example:
- string-value
delete:
type: array
description: Deleted products.
items:
$ref: '#/components/schemas/Product'
example:
- string-value
ProductCollectionData:
type: object
description: Aggregate data about a filtered product collection.
properties:
price_range:
type: object
description: Minimum and maximum prices in the collection.
nullable: true
properties:
min_price:
type: string
description: Minimum product price.
max_price:
type: string
description: Maximum product price.
example:
min_price: string-value
max_price: string-value
attribute_counts:
type: array
description: Term counts for requested attributes.
items:
type: object
properties:
term:
type: integer
description: Term ID.
count:
type: integer
description: Number of products with this term.
example:
- term: 1
count: 1
rating_counts:
type: array
description: Product counts by star rating.
items:
type: object
properties:
rating:
type: integer
description: Star rating value.
count:
type: integer
description: Number of products with this rating.
example:
- rating: 1
count: 1
MetaData:
type: object
description: Custom metadata key-value entry.
properties:
id:
type: integer
description: Metadata unique identifier.
example: 1
key:
type: string
description: Metadata key.
example: string-value
value:
type: string
description: Metadata value.
example: string-value
ProductAttribute:
type: object
description: A product attribute with option values.
properties:
id:
type: integer
description: Attribute ID (0 for custom attributes).
example: 1
name:
type: string
description: Attribute name.
example: Example Name
position:
type: integer
description: Attribute position in the product.
example: 1
visible:
type: boolean
description: Whether the attribute is visible on the product page.
example: true
variation:
type: boolean
description: Whether the attribute is used to define variations.
example: true
options:
type: array
description: List of available options (terms) for this attribute.
items:
type: string
example:
- string-value
ProductInput:
type: object
description: Input payload for creating or updating a product.
properties:
name:
type: string
description: Product name.
example: Example Name
type:
type: string
description: Product type.
enum:
- simple
- grouped
- external
- variable
example: simple
status:
type: string
description: Product publication status.
enum:
- draft
- pending
- private
- publish
example: draft
featured:
type: boolean
description: Whether the product is featured.
example: true
description:
type: string
description: Full product description.
example: A sample description
short_description:
type: string
description: Short product description.
example: A sample description
sku:
type: string
description: Stock-keeping unit identifier.
example: string-value
regular_price:
type: string
description: Regular price as a decimal string.
example: string-value
sale_price:
type: string
description: Sale price as a decimal string.
example: string-value
virtual:
type: boolean
description: Whether the product is virtual.
example: true
downloadable:
type: boolean
description: Whether the product is downloadable.
example: true
manage_stock:
type: boolean
description: Whether to enable stock management.
example: true
stock_quantity:
type: integer
description: Stock quantity.
example: 1
stock_status:
type: string
description: Stock status.
enum:
- instock
- outofstock
- onbackorder
example: instock
weight:
type: string
description: Product weight.
example: string-value
categories:
type: array
description: Categories to assign to the product.
items:
type: object
properties:
id:
type: integer
description: Category ID.
example:
- id: 1
tags:
type: array
description: Tags to assign to the product.
items:
type: object
properties:
id:
type: integer
description: Tag ID.
example:
- id: 1
images:
type: array
description: Images to attach.
items:
$ref: '#/components/schemas/ProductImage'
example:
- string-value
attributes:
type: array
description: Product attributes.
items:
$ref: '#/components/schemas/ProductAttribute'
example:
- string-value
meta_data:
type: array
description: Custom metadata.
items:
$ref: '#/components/schemas/MetaData'
example:
- string-value
Product:
type: object
description: A WooCommerce product in the store catalog.
properties:
id:
type: integer
description: Product unique identifier.
example: 1
name:
type: string
description: Product name.
example: Example Name
slug:
type: string
description: URL-friendly product identifier.
example: string-value
permalink:
type: string
format: uri
description: Product URL on the storefront.
example: https://example.com/path
type:
type: string
description: 'Product type. Options: simple, grouped, external, variable.'
enum:
- simple
- grouped
- external
- variable
example: simple
status:
type: string
description: 'Product status. Options: draft, pending, private, publish.'
enum:
- draft
- pending
- private
- publish
example: draft
featured:
type: boolean
description: Whether the product is featured.
example: true
description:
type: string
description: Full product description (HTML allowed).
example: A sample description
short_description:
type: string
description: Short product description (HTML allowed).
example: A sample description
sku:
type: string
description: Stock-keeping unit identifier.
example: string-value
price:
type: string
description: Current product price as a decimal string.
example: string-value
regular_price:
type: string
description: Regular product price as a decimal string.
example: string-value
sale_price:
type: string
description: Sale price as a decimal string. Empty string when not on sale.
example: string-value
on_sale:
type: boolean
description: Whether the product is on sale.
example: true
purchasable:
type: boolean
description: Whether the product can be bought.
example: true
total_sales:
type: integer
description: Total number of sales for the product.
example: 1
virtual:
type: boolean
description: Whether the product is virtual (no shipping required).
example: true
downloadable:
type: boolean
description: Whether the product is downloadable.
example: true
manage_stock:
type: boolean
description: Whether stock management is enabled for this product.
example: true
stock_quantity:
type: integer
description: Stock quantity when manage_stock is true.
nullable: true
example: 1
stock_status:
type: string
description: 'Stock status. Options: instock, outofstock, onbackorder.'
enum:
- instock
- outofstock
- onbackorder
example: instock
weight:
type: string
description: Product weight as a string in the store weight unit.
example: string-value
dimensions:
type: object
description: Product dimensions.
properties:
length:
type: string
description: Product length.
width:
type: string
description: Product width.
height:
type: string
description: Product height.
example:
length: string-value
width: string-value
height: string-value
categories:
type: array
description: Categories assigned to the product.
items:
type: object
properties:
id:
type: integer
description: Category ID.
name:
type: string
description: Category name.
slug:
type: string
description: Category slug.
example:
- id: 1
name: Example Name
slug: string-value
tags:
type: array
description: Tags assigned to the product.
items:
type: object
properties:
id:
type: integer
description: Tag ID.
name:
type: string
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/woocommerce/refs/heads/main/openapi/woocommerce-products-api-openapi.yml