Customer APIs · 8 endpoints

Customer APIs

Manage customer records and quiz leads — create, update, and fetch profiles, plus custom fields for anything extra you capture, so your CRM and marketing tools always stay in sync.

Base URL: https://api.quizell.com/api/v1

List Customers GET

Retrieves a list of customers with search and pagination options.

API Configuration
Query Parameters
Query Parameters Documentation
ParameterTypeRequiredDescription
searchStringNoSearch term to filter customers by name, email, etc.
pageIntegerNoPage number for pagination (default: 1)
per_pageIntegerNoNumber of items per page (default: 10, max: 100)

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
import fetch from "node-fetch";

async function getCustomers() {
  const params = new URLSearchParams({
    search: "",
    page: "1",
    per_page: "10"
  });
  
  const response = await fetch(`https://api.quizell.com/api/v1/customers/list?${params}`, {
    method: "GET",
    headers: {
      "Authorization": "Bearer ",
    },
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

getCustomers().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
36
37
38
39
40
41
42
43
44
45
46
47
{
  "status": true,
  "message": "Operation succeeded.",
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 860500,
        "quiz_id": "20838",
        "full_name": "test",
        "email": "[email protected]",
        "phone_number": "+91 89765 46532",
        "quiz": {
          "id": 20838,
          "title": "Untitled Quiz"
        }
      }
    ],
    "first_page_url": "https://api.quizell.com/api/v1/customers/list?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "https://api.quizell.com/api/v1/customers/list?page=1",
    "links": [
      {
        "url": null,
        "label": "« Previous",
        "active": false
      },
      {
        "url": "https://api.quizell.com/api/v1/customers/list?page=1",
        "label": "1",
        "active": true
      },
      {
        "url": null,
        "label": "Next »",
        "active": false
      }
    ],
    "next_page_url": null,
    "path": "https://api.quizell.com/api/v1/customers/list",
    "per_page": 10,
    "prev_page_url": null,
    "to": 1,
    "total": 1
  }
}

Create Customer POST

Stores a new customer with the provided details including custom fields.

API Configuration
Request Body Parameters

customer_data object

FieldTypeRequiredDescription
quiz_idIntegerYesQuiz identifier
emailStringYesCustomer email address
full_nameStringNoCustomer's full name
phone_numberStringNoCustomer phone number
dateStringNoDate information
result_historyStringNoResult history data
terms_conditionsBooleanNoTerms and conditions acceptance
address1StringNoPrimary address line
address2StringNoSecondary address line
cityStringNoCity
countryStringNoCountry
stateStringNoState/Province
zip_codeStringNoZIP/Postal code
websiteStringNoWebsite URL
organisationStringNoOrganization name

customer_custom_data object

FieldTypeRequiredDescription
spouseStringNoSpouse name (example custom field)
[any field]StringNoAny custom field can be added here

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 storeCustomer() {
  const customerData = {
  "customer_data": {
    "quiz_id": 20838,
    "email": "[email protected]",
    "full_name": "test",
    "phone_number": "test",
    "date": "test",
    "result_history": "test",
    "terms_conditions": false,
    "address1": "test",
    "address2": "test",
    "city": "test",
    "country": "test",
    "state": "test",
    "zip_code": "test",
    "website": "https://quizell.com/terms",
    "organisation": "test"
  },
  "customer_custom_data": {
    "spouse": "test"
  }
};
  
  const response = await fetch(`https://api.quizell.com/api/v1/customers/store`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer ",
    },
    body: JSON.stringify(customerData),
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

storeCustomer().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": {
    "quiz_id": 20838,
    "email": "[email protected]",
    "full_name": "test",
    "phone_number": "test",
    "date": "test",
    "terms_conditions": false,
    "address1": "test",
    "address2": "test",
    "city": "test",
    "country": "test",
    "state": "test",
    "zip_code": "test",
    "website": "https://quizell.com/terms",
    "organisation": "test",
    "updated_at": "20-08-2025 10:46",
    "created_at": "20-08-2025 10:46",
    "id": 880850,
    "custom_fields_data": []
  }
}

Update Customer PUT

Updates an existing customer with the provided details including custom fields.

API Configuration
Request Body Parameters

customer_data object

FieldTypeRequiredDescription
quiz_idIntegerYesQuiz identifier
emailStringYesCustomer email address
full_nameStringNoCustomer's full name
phone_numberStringNoCustomer phone number
dateStringNoDate information
result_historyStringNoResult history data
terms_conditionsBooleanNoTerms and conditions acceptance
address1StringNoPrimary address line
address2StringNoSecondary address line
cityStringNoCity
countryStringNoCountry
stateStringNoState/Province
zip_codeStringNoZIP/Postal code
websiteStringNoWebsite URL
organisationStringNoOrganization name

customer_custom_data object

FieldTypeRequiredDescription
spouseStringNoSpouse name (example custom field)
[any field]StringNoAny custom field can be added here

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 updateCustomer() {
  const customerData = {
  "customer_data": {
    "quiz_id": 20838,
    "email": "[email protected]",
    "full_name": "test",
    "phone_number": "test",
    "date": "test",
    "result_history": "test",
    "terms_conditions": false,
    "address1": "test",
    "address2": "test",
    "city": "test",
    "country": "test",
    "state": "test",
    "zip_code": "test",
    "website": "https://quizell.com/terms",
    "organisation": "test"
  },
  "customer_custom_data": {
    "spouse": "test"
  }
};
  
  const response = await fetch("https://api.quizell.com/api/v1/customers/update/", {
    method: "PUT",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer ",
    },
    body: JSON.stringify(customerData),
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

updateCustomer().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
{
  "status": true,
  "message": "Operation succeeded.",
  "data": {
    "id": 880854,
    "quiz_id": 20838,
    "full_name": "test",
    "email": "[email protected]",
    "phone_number": "test",
    "created_at": "20-08-2025 10:47",
    "updated_at": "20-08-2025 10:56",
    "date": "test",
    "terms_conditions": false,
    "website": "https://quizell.com/terms",
    "organisation": "test",
    "address1": "test",
    "address2": "test",
    "city": "test",
    "country": "test",
    "state": "test",
    "zip_code": "test",
    "result_key": null,
    "quiz_repeate_time": 1,
    "quiz_analytic_id": null,
    "score": null,
    "is_score_converted": true,
    "subscribe": false,
    "feedback": null,
    "language_id": null,
    "custom_fields_data": []
  }
}

Customer Detail GET

Retrieves detailed information about a specific customer by their lead ID.

API Configuration
Path Parameters
ParameterTypeRequiredDescription
lead_idIntegerYesThe ID of the customer/lead to retrieve details for
Response Fields

customer object

FieldTypeDescription
idIntegerUnique identifier for the customer
quiz_idIntegerID of the quiz associated with the customer
emailStringCustomer's email address
full_nameStringCustomer's full name
phone_numberStringCustomer's phone number
dateStringDate associated with the customer
result_historyStringHistory of quiz results
terms_conditionsBooleanWhether terms & conditions were accepted
address1StringPrimary address line
address2StringSecondary address line
cityStringCity
countryStringCountry
stateStringState/Province
zip_codeStringZIP/Postal code
websiteStringWebsite URL
organisationStringOrganization name
created_atStringCreation timestamp
updated_atStringLast update timestamp

Additional response fields

FieldTypeDescription
custom_fieldsObjectCustom field data associated with the customer
quiz_resultsArrayArray of quiz results and responses

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 getCustomerDetail() {  
  const response = await fetch("https://api.quizell.com/api/v1/customers/detail/", {
    method: "GET",
    headers: {
      "Authorization": "Bearer ",
    },
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

getCustomerDetail().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
36
37
38
39
40
41
42
43
44
{
    "status": true,
    "message": "Customer details retrieved successfully.",
    "data": {
        "customer": {
            "id": 48,
            "quiz_id": 8533,
            "email": "[email protected]",
            "full_name": "John Doe",
            "phone_number": "+1234567890",
            "date": "2023-08-15",
            "result_history": "Completed quiz with score 85%",
            "terms_conditions": true,
            "address1": "123 Main Street",
            "address2": "Apt 4B",
            "city": "New York",
            "country": "USA",
            "state": "NY",
            "zip_code": "10001",
            "website": "https://example.com",
            "organisation": "Example Corp",
            "created_at": "2023-08-15T10:30:00Z",
            "updated_at": "2023-08-20T14:22:00Z"
        },
        "custom_fields": {
            "spouse": "Jane Doe",
            "preferences": "Email newsletters"
        },
        "quiz_results": [
            {
                "quiz_id": 8533,
                "quiz_title": "Product Preference Quiz",
                "score": 85,
                "completed_at": "2023-08-15T10:30:00Z",
                "responses": [
                    {
                        "question": "What's your favorite color?",
                        "answer": "Blue"
                    }
                ]
            }
        ]
    }
}

Delete Customer DELETE

Deletes a single customer by its lead ID.

API Configuration
Path Parameters
ParameterTypeRequiredDescription
lead_idIntegerYesThe ID of the customer 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 deleteCustomer() {  
  const response = await fetch("https://api.quizell.com/api/v1/customers/delete/", {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer ",
    },
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

deleteCustomer().catch(console.error);
1
2
3
4
5
{
  "status": true,
  "message": "Customer deleted successfully.",
  "data": null
}

Customer Custom Fields List GET

Retrieves a list of custom fields associated with customer profiles.

API Configuration
Response Fields Documentation
FieldTypeDescription
idIntegerUnique identifier for the custom field
quiz_idIntegerID of the quiz this custom field belongs to
field_nameStringName/label of the custom field
field_typeStringType of field (text, select, checkbox, etc.)
field_optionsStringComma-separated options for select fields (nullable)
is_requiredIntegerWhether the field is required (1) or optional (0)
sort_orderIntegerOrder in which the field appears
created_atStringTimestamp when the field was created
updated_atStringTimestamp when the field was last updated

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 getCustomerCustomFields() {
  const response = await fetch(`https://api.quizell.com/api/v1/customers/custom_fields/list`, {
    method: "GET",
    headers: {
      "Authorization": "Bearer ",
    },
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

getCustomerCustomFields().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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
  "status": true,
  "message": "Operation succeeded.",
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 2897,
        "field_name": "tt",
        "field_label": null,
        "field_type": "textarea",
        "treat_as": "input"
      },
      {
        "id": 1808,
        "field_name": "description",
        "field_label": null,
        "field_type": "textarea",
        "treat_as": "input"
      }
    ],
    "first_page_url": "https://api.quizell.com/api/v1/customers/custom_fields/list?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "https://api.quizell.com/api/v1/customers/custom_fields/list?page=1",
    "links": [
      {
        "url": null,
        "label": "« Previous",
        "page": null,
        "active": false
      },
      {
        "url": "https://api.quizell.com/api/v1/customers/custom_fields/list?page=1",
        "label": "1",
        "page": 1,
        "active": true
      },
      {
        "url": null,
        "label": "Next »",
        "page": null,
        "active": false
      }
    ],
    "next_page_url": null,
    "path": "https://api.quizell.com/api/v1/customers/custom_fields/list",
    "per_page": 20,
    "prev_page_url": null,
    "to": 2,
    "total": 2
  }
}

Create Customer Custom Field POST

Creates a new custom field for customer profiles.

API Configuration
Parameters Documentation
ParameterTypeRequiredDescription
field_nameStringYesName/label of the custom field
field_typeStringYesType of field (text, textarea, select, checkbox, radio)

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
import fetch from "node-fetch";

async function createCustomerCustomField() {
  const payload = {
    field_name: "test",
    field_type: "textarea",
  };

  const response = await fetch(`https://api.quizell.com/api/v1/customers/custom_fields/store`, {
    method: "POST",
    headers: {
      "Authorization": "Bearer ",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

createCustomerCustomField().catch(console.error);
1
2
3
4
5
6
7
8
9
{
  "status": "success",
  "message": "Operation succeeded.",
  "data": {
    "field_type": "textarea",
    "field_name": "test",
    "id": 1110
  }
}

Delete Customer Custom Field DELETE

Deletes a custom field from customer profiles.

API Configuration
Path Variables
Parameters Documentation
ParameterTypeRequiredDescription
field_idIntegerYesID of the custom field 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 deleteCustomerCustomField() {
  const response = await fetch(`https://api.quizell.com/api/v1/customers/custom_fields/delete/3`, {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer ",
    },
  });

  if (!response.ok) {
    throw new Error(`Error: ${response.status}`);
  }

  const data = await response.json();
  console.log(data);
}

deleteCustomerCustomField().catch(console.error);
1
2
3
4
5
{
  "status": true,
  "message": "Operation succeeded.",
  "data": []
}