Product APIs · 7 endpoints
Product APIs
Create, search, update, and remove the products your quizzes recommend. Keep your catalog in sync so every recommendation stays accurate.
Base URL: https://api.quizell.com/api/v1
Search Product GET
Retrieves products based on search criteria such as title, SKU, sorting, pagination, and status.
- Search for products by title or SKU.
- Apply filters such as active/inactive status.
- Paginate through large product lists.
- Sort results in ascending or descending order.
API Configuration
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| title | String | No | Product title to search for. |
| sku | String | No | Product SKU to search for. |
| per_page | Number | No | Number of results per page. Default is 10. |
| page | Number | No | Page number to retrieve. |
| sort | String | No | Sort order, e.g. asc or desc. |
| status | Number | No | Product status: 1 for active, 0 for inactive. |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import fetch from "node-fetch";
async function searchProducts() {
const queryParams = new URLSearchParams({
title: "Test Product",
per_page: "10",
page: "1",
sort: "desc",
status: "1",
});
const response = await fetch(`https://api.quizell.com/api/v1/products/search?${queryParams}`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
searchProducts().catch(console.error);JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"status": true,
"message": "Operation succeeded.",
"data": {
"current_page": 1,
"data": [],
"first_page_url": "https://api.quizell.com/api/v1/products/search?page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://api.quizell.com/api/v1/products/search?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.quizell.com/api/v1/products/search?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://api.quizell.com/api/v1/products/search",
"per_page": 10,
"prev_page_url": null,
"to": null,
"total": 0
}
}Show Product GET
Retrieves details of a single product by its ID.
API Configuration
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| product_id | Number | Yes | The ID of the product to retrieve |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import fetch from "node-fetch";
async function getProduct() {
const response = await fetch("https://api.quizell.com/api/v1/products//show", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
getProduct().catch(console.error);JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"status": true,
"message": "Operation succeeded.",
"data": {
"product": {
"id": 546508,
"title": "Test",
"price": null,
"compare_at_price": null,
"image": "http://images.quizell.com/website/default.png",
"detail_link": null,
"description": "Test
",
"created_at": "2025-08-12 09:28:47",
"updated_at": "2025-08-12 09:28:47",
"sku": null,
"bullet_description": "[]",
"status": true,
"tags": [],
"collections": [],
"vendor": null,
"images": []
}
}
}Create Product POST
Creates a new product with the provided details.
API Configuration
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| status | Boolean | Yes | Product active status |
| title | String | Yes | Product title |
| price | Number | Yes | Product price |
| description | String | No | Product description |
| image | String | No | Product image URL |
| tags | Array | No | Product tags |
| sku | String | No | Product SKU |
| quantity | Number | No | Available quantity |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import fetch from "node-fetch";
async function storeProduct() {
const productData = {
"status": true,
"external_id": 2323,
"image": "https://example.com/image.jpg",
"title": "Test",
"description": "test 33",
"price": 100,
"compare_at_price": 100,
"tags": [
"tag",
"tag2",
"tag3"
],
"bullet_description": [
"first bullet",
"bullet 1"
],
"sku": "56",
"quantity": 100,
"vendor": "test vendor",
"detail_link": ""
};
const response = await fetch("https://api.quizell.com/api/v1/products/store", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
body: JSON.stringify(productData),
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
storeProduct().catch(console.error);JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
"status": true,
"message": "Operation succeeded.",
"data": {
"product": {
"id": 546561,
"title": "Test",
"price": "100.00",
"compare_at_price": 100,
"image": "https://example.com/image.jpg",
"detail_link": null,
"description": "test 33",
"created_at": "2025-08-12 11:58:32",
"updated_at": "2025-08-12 11:58:32",
"sku": "56",
"bullet_description": [
"first bullet",
"bullet 1"
],
"status": true,
"tags": [
"tag2",
"tag3",
"tag"
],
"collections": [],
"vendor": "test vendor",
"images": []
}
}
}Batch Products POST
Creates or updates multiple products in a single batch operation.
API Configuration
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| products | Array | Yes | Array of product objects |
| - id | Number | Yes | Existing product ID for updates |
| - title | String | Yes | Product title |
| - price | Number | Yes | Product price |
| - sku | String | No | Product SKU |
| - status | Number | No | Product status (1=active, 0=inactive) |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import fetch from "node-fetch";
async function batchProducts() {
const productsData = {
"products": [
{
"image": "https://example.com/image.jpg",
"product_type": "Test product",
"sku": "56",
"quantity": 100,
"eta_order": 0,
"id": 546562,
"title": "Test",
"detail_link": null,
"price": 180,
"compare_at_price": 100,
"description": "test 33",
"status": 1,
"external_id": 2323,
"tags": [
"tag1",
"tag2",
"tag3"
],
"vendor": "test vendor",
"bullet_description": [
"first bullet",
"bullet 1"
],
"created_at": "2024-05-24T13:18:14.000000Z",
"updated_at": "2024-05-24T13:18:14.000000Z"
}
]
};
const response = await fetch("https://api.quizell.com/api/v1/products/batch", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
body: JSON.stringify(productsData),
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
batchProducts().catch(console.error);JSON
1
2
3
4
5
{
"status": true,
"message": "Products are being import.",
"data": []
}Update Product PUT
Updates an existing product with the provided details.
API Configuration
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| status | Boolean | No | Product active status |
| title | String | No | Product title |
| price | Number | No | Product price |
| description | String | No | Product description |
| image | String | No | Product image URL |
| tags | Array | No | Product tags |
| sku | String | No | Product SKU |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import fetch from "node-fetch";
async function updateProduct() {
const productData = {
"status": true,
"external_id": 2323,
"image": "https://images.quizell.com/website/default_start_page.png",
"title": "Test",
"description": "test",
"price": 100,
"compare_at_price": 100,
"tags": [
"tag1",
"tag2",
"tag3",
"tag4",
"tag7"
],
"bullet_description": [
"first bullet",
"bullet 1",
"bss1"
],
"sku": "123444242",
"quantity": 100,
"product_type": "type1",
"vendor": "test vendor",
"detail_link": ""
};
const productId = "";
const response = await fetch(`https://api.quizell.com/api/v1/products/update/${productId}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
body: JSON.stringify(productData),
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
updateProduct().catch(console.error);JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
"status": true,
"message": "Operation succeeded.",
"data": {
"product": {
"id": 546561,
"title": "Test",
"price": "100.00",
"compare_at_price": 100,
"image": "https://images.quizell.com/website/default_start_page.png",
"detail_link": null,
"description": "test",
"created_at": "2025-08-12 11:58:32",
"updated_at": "2025-08-12 12:27:14",
"sku": "123444242",
"bullet_description": [
"first bulle",
"bulet 1",
"bssl"
],
"status": true,
"tags": [
"tag2",
"tag3",
"tag1",
"tag4",
"tag7"
],
"collections": [],
"vendor": "test vendor",
"images": []
}
}
}Delete Single Product DELETE
Deletes a single product by its ID.
API Configuration
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| product_id | Integer | Yes | The ID of the product to delete |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import fetch from "node-fetch";
async function deleteProduct() {
const response = await fetch("https://api.quizell.com/api/v1/products/delete/single/", {
method: "DELETE",
headers: {
"Authorization": "Bearer ",
},
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
deleteProduct().catch(console.error);JSON
1
2
3
4
5
{
"status": true,
"message": "Operation succeeded.",
"data": "deleted successfully"
}Delete Multiple Products DELETE
Deletes multiple products by their IDs.
API Configuration
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| ids | Array | Yes | Array of product IDs to delete |
Code Examples
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import fetch from "node-fetch";
async function deleteMultipleProducts() {
const ids = [];
const response = await fetch(`https://api.quizell.com/api/v1/products/delete/multiple`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ",
},
body: JSON.stringify({ ids }),
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
console.log(data);
}
deleteMultipleProducts().catch(console.error);JSON
1
2
3
4
5
{
"status": true,
"message": "Operation succeeded.",
"data": []
}