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
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | String | No | Search term to filter customers by name, email, etc. |
| page | Integer | No | Page number for pagination (default: 1) |
| per_page | Integer | No | Number of items per page (default: 10, max: 100) |
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
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);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
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
| Field | Type | Required | Description |
|---|---|---|---|
| quiz_id | Integer | Yes | Quiz identifier |
| String | Yes | Customer email address | |
| full_name | String | No | Customer's full name |
| phone_number | String | No | Customer phone number |
| date | String | No | Date information |
| result_history | String | No | Result history data |
| terms_conditions | Boolean | No | Terms and conditions acceptance |
| address1 | String | No | Primary address line |
| address2 | String | No | Secondary address line |
| city | String | No | City |
| country | String | No | Country |
| state | String | No | State/Province |
| zip_code | String | No | ZIP/Postal code |
| website | String | No | Website URL |
| organisation | String | No | Organization name |
customer_custom_data object
| Field | Type | Required | Description |
|---|---|---|---|
| spouse | String | No | Spouse name (example custom field) |
| [any field] | String | No | Any custom field can be added here |
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 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);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": {
"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
| Field | Type | Required | Description |
|---|---|---|---|
| quiz_id | Integer | Yes | Quiz identifier |
| String | Yes | Customer email address | |
| full_name | String | No | Customer's full name |
| phone_number | String | No | Customer phone number |
| date | String | No | Date information |
| result_history | String | No | Result history data |
| terms_conditions | Boolean | No | Terms and conditions acceptance |
| address1 | String | No | Primary address line |
| address2 | String | No | Secondary address line |
| city | String | No | City |
| country | String | No | Country |
| state | String | No | State/Province |
| zip_code | String | No | ZIP/Postal code |
| website | String | No | Website URL |
| organisation | String | No | Organization name |
customer_custom_data object
| Field | Type | Required | Description |
|---|---|---|---|
| spouse | String | No | Spouse name (example custom field) |
| [any field] | String | No | Any custom field can be added here |
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 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);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
{
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| lead_id | Integer | Yes | The ID of the customer/lead to retrieve details for |
Response Fields
customer object
| Field | Type | Description |
|---|---|---|
| id | Integer | Unique identifier for the customer |
| quiz_id | Integer | ID of the quiz associated with the customer |
| String | Customer's email address | |
| full_name | String | Customer's full name |
| phone_number | String | Customer's phone number |
| date | String | Date associated with the customer |
| result_history | String | History of quiz results |
| terms_conditions | Boolean | Whether terms & conditions were accepted |
| address1 | String | Primary address line |
| address2 | String | Secondary address line |
| city | String | City |
| country | String | Country |
| state | String | State/Province |
| zip_code | String | ZIP/Postal code |
| website | String | Website URL |
| organisation | String | Organization name |
| created_at | String | Creation timestamp |
| updated_at | String | Last update timestamp |
Additional response fields
| Field | Type | Description |
|---|---|---|
| custom_fields | Object | Custom field data associated with the customer |
| quiz_results | Array | Array of quiz results and responses |
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 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);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
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| lead_id | Integer | Yes | The ID of the customer 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 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);JSON
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
| Field | Type | Description |
|---|---|---|
| id | Integer | Unique identifier for the custom field |
| quiz_id | Integer | ID of the quiz this custom field belongs to |
| field_name | String | Name/label of the custom field |
| field_type | String | Type of field (text, select, checkbox, etc.) |
| field_options | String | Comma-separated options for select fields (nullable) |
| is_required | Integer | Whether the field is required (1) or optional (0) |
| sort_order | Integer | Order in which the field appears |
| created_at | String | Timestamp when the field was created |
| updated_at | String | Timestamp when the field was last updated |
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 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);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
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| field_name | String | Yes | Name/label of the custom field |
| field_type | String | Yes | Type of field (text, textarea, select, checkbox, radio) |
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
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);JSON
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| field_id | Integer | Yes | ID of the custom field 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 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);JSON
1
2
3
4
5
{
"status": true,
"message": "Operation succeeded.",
"data": []
}