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
NameTypeRequiredDescription
titleStringNoProduct title to search for.
skuStringNoProduct SKU to search for.
per_pageNumberNoNumber of results per page. Default is 10.
pageNumberNoPage number to retrieve.
sortStringNoSort order, e.g. asc or desc.
statusNumberNoProduct status: 1 for active, 0 for inactive.

Code Examples

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);
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
NameTypeRequiredDescription
product_idNumberYesThe ID of the product to retrieve

Code Examples

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);
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
FieldTypeRequiredDescription
statusBooleanYesProduct active status
titleStringYesProduct title
priceNumberYesProduct price
descriptionStringNoProduct description
imageStringNoProduct image URL
tagsArrayNoProduct tags
skuStringNoProduct SKU
quantityNumberNoAvailable quantity

Code Examples

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);
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
FieldTypeRequiredDescription
productsArrayYesArray of product objects
- idNumberYesExisting product ID for updates
- titleStringYesProduct title
- priceNumberYesProduct price
- skuStringNoProduct SKU
- statusNumberNoProduct status (1=active, 0=inactive)

Code Examples

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);
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
FieldTypeRequiredDescription
statusBooleanNoProduct active status
titleStringNoProduct title
priceNumberNoProduct price
descriptionStringNoProduct description
imageStringNoProduct image URL
tagsArrayNoProduct tags
skuStringNoProduct SKU

Code Examples

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);
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
ParameterTypeRequiredDescription
product_idIntegerYesThe ID of the product to delete

Code Examples

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);
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
FieldTypeRequiredDescription
idsArrayYesArray of product IDs to delete

Code Examples

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);
1
2
3
4
5
{
  "status": true,
  "message": "Operation succeeded.",
  "data": []
}