Overview #
List products #
GET
/api/admin/26.0/products
Parameters
| Field | Type | Description |
|---|---|---|
| limit | integer | [Optional] Number of results to return (default 20, max 10000) |
| page | integer | [Optional] Page number to fetch (default 1) |
| sort_by | string | [Optional] Field to sort by (e.g. created_at, title) |
| sort_order | string | [Optional] Sort direction: asc or desc |
| collection_id | integer | [Optional] Filter by collection ID |
| vendor | string | [Optional] Filter by vendor name |
| product_type | string | [Optional] Filter by product type |
| available | boolean | [Optional] Filter by availability (true/false) |
| ids | string | [Optional] Comma-separated list of product IDs |
| handle | string | [Optional] Filter by product handle |
| min_stock | integer | [Optional] Minimum inventory stock |
| max_stock | integer | [Optional] Maximum inventory stock |
| search | string | [Optional] Search in title or description |
| inventory_status | string | [Optional] Filter by status (available, out_of_stock) |
| status | string | [Optional] Filter by status (public, draft, private) |
| min_price | float | [Optional] Minimum price |
| max_price | float | [Optional] Maximum price |
| fields | string | [Optional] Comma-separated fields to return |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"products": [
{
"id": 104593,
"handle": "premium-wireless-headphones",
"title": "Premium Wireless Headphones",
"description": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"label": "Sale",
"body_html": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"published_at": "2026-08-27T11:31:04+02:00",
"vendor": "AudioTech",
"product_type": "Electronics",
"product_category": "Headphones",
"status": "public",
"tags": "audio, wireless, new",
"inventory_quantity": 150,
"available": true,
"available_for_sale": true,
"track_quantity": 1,
"variants": [
{
"id": 593821,
"variant_id": 4920,
"product_id": 104593,
"title": "Black \/ Standard",
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sale_price": 149.990000000000009094947017729282379150390625,
"discount": 50,
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"sku": "ATH-BLK-01",
"is_trackable": true,
"track_quantity": true,
"inventory_quantity": 100,
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"cost": 80,
"barcode": "123456789012",
"taxable": true
}
],
"images": [
{
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
],
"image": {
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Get product #
GET
/api/admin/26.0/products/{id}
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"product": {
"id": 104593,
"handle": "premium-wireless-headphones",
"title": "Premium Wireless Headphones",
"description": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"label": "Sale",
"body_html": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"published_at": "2026-08-27T11:31:04+02:00",
"vendor": "AudioTech",
"product_type": "Electronics",
"product_category": "Headphones",
"status": "public",
"tags": "audio, wireless, new",
"inventory_quantity": 150,
"available": true,
"available_for_sale": true,
"track_quantity": 1,
"variants": [
{
"id": 593821,
"variant_id": 4920,
"product_id": 104593,
"title": "Black \/ Standard",
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sale_price": 149.990000000000009094947017729282379150390625,
"discount": 50,
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"sku": "ATH-BLK-01",
"is_trackable": true,
"track_quantity": true,
"inventory_quantity": 100,
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"cost": 80,
"barcode": "123456789012",
"taxable": true
}
],
"images": [
{
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
],
"image": {
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
}
}
Create product #
POST
/api/admin/26.0/products
Parameters
| Field | Type | Description |
|---|---|---|
| title | string | [Required] The title of the product |
| body_html | string | [Optional] HTML description of the product |
| handle | string | [Optional] Human-friendly unique string for the product URL |
| vendor | string | [Optional] The name of the vendor |
| product_type | string | [Optional] The product type |
| status | string | [Optional] Status of product: active, draft, or archived |
| tags | string | [Optional] Comma-separated tags |
| options | array | [Optional] Array of custom product options (e.g. Size, Color) |
| options[].name | string | [Required if options used] Name of the option (e.g. Size) |
| options[].values | array | [Required if options used] Array of string values (e.g. ['Small', 'Medium']) |
| variants | array | [Optional] Array of product variants |
| variants[].price | float | [Required if variants used] The price of the variant |
| variants[].compare_at_price | float | [Optional] The original price before sale |
| variants[].cost_per_item | float | [Optional] The cost of the variant to the merchant |
| variants[].sku | string | [Optional] Stock Keeping Unit |
| variants[].barcode | string | [Optional] Barcode, UPC, or ISBN |
| variants[].weight | float | [Optional] The weight of the variant |
| variants[].weight_unit | string | [Optional] Unit of measurement (g, kg, oz, lb) |
| variants[].tracked | boolean | [Optional] Whether inventory is tracked (1 or 0) |
| variants[].position | integer | [Optional] Sort order position |
| variants[].image_id | integer | [Optional] The ID of the image associated with this variant |
| variants[].option1 | string | [Optional] Value for the first option (must match an option value) |
| variants[].option2 | string | [Optional] Value for the second option |
| variants[].option3 | string | [Optional] Value for the third option |
| images | array | [Optional] Array of product images |
| images[].src | string | [Required if images used] The source URL of the image |
| images[].position | integer | [Optional] Sort order position |
| images[].variant_ids | array | [Optional] Array of variant IDs to link this image to |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Request Body
{
"product": {
"title": "Premium Wireless Headphones",
"body_html": "<p>Experience true audio freedom.<\/p>",
"handle": "premium-wireless-headphones",
"vendor": "AudioTech",
"product_type": "Electronics",
"status": "active",
"tags": "audio, wireless, new",
"options": [
{
"name": "Color",
"values": [
"Black",
"White"
]
}
],
"variants": [
{
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sku": "ATH-BLK-01",
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"tracked": 1,
"option1": "Black"
},
{
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sku": "ATH-WHT-01",
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"tracked": 1,
"option1": "White"
}
],
"images": [
{
"src": "https:\/\/example.com\/images\/headphones-black.jpg",
"position": 1
},
{
"src": "https:\/\/example.com\/images\/headphones-white.jpg",
"position": 2
}
]
}
}
Response
200 OK
{
"product": {
"id": 104593,
"handle": "premium-wireless-headphones",
"title": "Premium Wireless Headphones",
"description": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"label": "Sale",
"body_html": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"published_at": "2026-08-27T11:31:04+02:00",
"vendor": "AudioTech",
"product_type": "Electronics",
"product_category": "Headphones",
"status": "public",
"tags": "audio, wireless, new",
"inventory_quantity": 150,
"available": true,
"available_for_sale": true,
"track_quantity": 1,
"variants": [
{
"id": 593821,
"variant_id": 4920,
"product_id": 104593,
"title": "Black \/ Standard",
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sale_price": 149.990000000000009094947017729282379150390625,
"discount": 50,
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"sku": "ATH-BLK-01",
"is_trackable": true,
"track_quantity": true,
"inventory_quantity": 100,
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"cost": 80,
"barcode": "123456789012",
"taxable": true
}
],
"images": [
{
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
],
"image": {
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
}
}
Update product #
PUT
/api/admin/26.0/products/{id}
Parameters
| Field | Type | Description |
|---|---|---|
| title | string | [Required] The title of the product |
| body_html | string | [Optional] HTML description of the product |
| handle | string | [Optional] Human-friendly unique string for the product URL |
| vendor | string | [Optional] The name of the vendor |
| product_type | string | [Optional] The product type |
| status | string | [Optional] Status of product: active, draft, or archived |
| tags | string | [Optional] Comma-separated tags |
| options | array | [Optional] Array of custom product options (e.g. Size, Color) |
| options[].name | string | [Required if options used] Name of the option (e.g. Size) |
| options[].values | array | [Required if options used] Array of string values (e.g. ['Small', 'Medium']) |
| variants | array | [Optional] Array of product variants |
| variants[].price | float | [Required if variants used] The price of the variant |
| variants[].compare_at_price | float | [Optional] The original price before sale |
| variants[].cost_per_item | float | [Optional] The cost of the variant to the merchant |
| variants[].sku | string | [Optional] Stock Keeping Unit |
| variants[].barcode | string | [Optional] Barcode, UPC, or ISBN |
| variants[].weight | float | [Optional] The weight of the variant |
| variants[].weight_unit | string | [Optional] Unit of measurement (g, kg, oz, lb) |
| variants[].tracked | boolean | [Optional] Whether inventory is tracked (1 or 0) |
| variants[].position | integer | [Optional] Sort order position |
| variants[].image_id | integer | [Optional] The ID of the image associated with this variant |
| variants[].option1 | string | [Optional] Value for the first option (must match an option value) |
| variants[].option2 | string | [Optional] Value for the second option |
| variants[].option3 | string | [Optional] Value for the third option |
| images | array | [Optional] Array of product images |
| images[].src | string | [Required if images used] The source URL of the image |
| images[].position | integer | [Optional] Sort order position |
| images[].variant_ids | array | [Optional] Array of variant IDs to link this image to |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Request Body
{
"product": {
"title": "Premium Wireless Headphones",
"body_html": "<p>Experience true audio freedom.<\/p>",
"handle": "premium-wireless-headphones",
"vendor": "AudioTech",
"product_type": "Electronics",
"status": "active",
"tags": "audio, wireless, new",
"options": [
{
"name": "Color",
"values": [
"Black",
"White"
]
}
],
"variants": [
{
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sku": "ATH-BLK-01",
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"tracked": 1,
"option1": "Black"
},
{
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sku": "ATH-WHT-01",
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"tracked": 1,
"option1": "White"
}
],
"images": [
{
"src": "https:\/\/example.com\/images\/headphones-black.jpg",
"position": 1
},
{
"src": "https:\/\/example.com\/images\/headphones-white.jpg",
"position": 2
}
]
}
}
Response
200 OK
{
"product": {
"id": 104593,
"handle": "premium-wireless-headphones",
"title": "Premium Wireless Headphones",
"description": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"label": "Sale",
"body_html": "<p>Experience true audio freedom with our premium wireless headphones.<\/p>",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"published_at": "2026-08-27T11:31:04+02:00",
"vendor": "AudioTech",
"product_type": "Electronics",
"product_category": "Headphones",
"status": "public",
"tags": "audio, wireless, new",
"inventory_quantity": 150,
"available": true,
"available_for_sale": true,
"track_quantity": 1,
"variants": [
{
"id": 593821,
"variant_id": 4920,
"product_id": 104593,
"title": "Black \/ Standard",
"price": 149.990000000000009094947017729282379150390625,
"compare_at_price": 199.990000000000009094947017729282379150390625,
"sale_price": 149.990000000000009094947017729282379150390625,
"discount": 50,
"weight": 0.450000000000000011102230246251565404236316680908203125,
"weight_unit": "kg",
"sku": "ATH-BLK-01",
"is_trackable": true,
"track_quantity": true,
"inventory_quantity": 100,
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"cost": 80,
"barcode": "123456789012",
"taxable": true
}
],
"images": [
{
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
],
"image": {
"id": 1029,
"url": "https:\/\/cdn.joonweb.com\/images\/headphones-black.jpg",
"alt": "Black Wireless Headphones"
}
}
}
Delete product #
DELETE
/api/admin/26.0/products/{id}
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"success": true,
"message": "Deleted successfully"
}
Count products #
GET
/api/admin/26.0/products/count
Parameters
| Field | Type | Description |
|---|---|---|
| limit | integer | [Optional] Number of results to return (default 20, max 10000) |
| page | integer | [Optional] Page number to fetch (default 1) |
| sort_by | string | [Optional] Field to sort by (e.g. created_at, title) |
| sort_order | string | [Optional] Sort direction: asc or desc |
| collection_id | integer | [Optional] Filter by collection ID |
| vendor | string | [Optional] Filter by vendor name |
| product_type | string | [Optional] Filter by product type |
| available | boolean | [Optional] Filter by availability (true/false) |
| ids | string | [Optional] Comma-separated list of product IDs |
| handle | string | [Optional] Filter by product handle |
| min_stock | integer | [Optional] Minimum inventory stock |
| max_stock | integer | [Optional] Maximum inventory stock |
| search | string | [Optional] Search in title or description |
| inventory_status | string | [Optional] Filter by status (available, out_of_stock) |
| status | string | [Optional] Filter by status (public, draft, private) |
| min_price | float | [Optional] Minimum price |
| max_price | float | [Optional] Maximum price |
| fields | string | [Optional] Comma-separated fields to return |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"count": 156
}
List product metafields #
GET
/api/admin/26.0/products/{id}/metafields
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"metafields": [
{
"id": 8492,
"namespace": "global",
"key": "title_tag",
"value": "Buy Premium Headphones Online",
"value_type": "string",
"description": "SEO Title Tag",
"owner_id": 104593,
"owner_resource": "product",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00"
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Create product metafield #
POST
/api/admin/26.0/products/{id}/metafields
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
| namespace | string | [Required] Grouping namespace |
| key | string | [Required] Metafield key |
| value | string | [Required] Metafield value |
| value_type | string | [Required] string, integer, json, etc. |
| description | string | [Optional] Description of the metafield |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"metafield": {
"id": 8492,
"namespace": "global",
"key": "title_tag",
"value": "Buy Premium Headphones Online",
"value_type": "string",
"description": "SEO Title Tag",
"owner_id": 104593,
"owner_resource": "product",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00"
}
}
Update product metafield #
PUT
/api/admin/26.0/products/{id}/metafields
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
| namespace | string | [Required] Grouping namespace |
| key | string | [Required] Metafield key |
| value | string | [Required] Metafield value |
| value_type | string | [Required] string, integer, json, etc. |
| description | string | [Optional] Description of the metafield |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"metafield": {
"id": 8492,
"namespace": "global",
"key": "title_tag",
"value": "Buy Premium Headphones Online",
"value_type": "string",
"description": "SEO Title Tag",
"owner_id": 104593,
"owner_resource": "product",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00"
}
}