Create or update candidates
curl --request POST \
--url https://api.evalezy.com/v1/candidates \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"candidates": [
{
"external_id": "STU-10A-0142",
"name": "Aarav Sharma",
"roll_number": "14",
"section_or_class": "10-A"
},
{
"external_id": "STU-10A-0143",
"name": "Diya Patel",
"roll_number": "15",
"section_or_class": "10-A"
}
]
}
'import requests
url = "https://api.evalezy.com/v1/candidates"
payload = { "candidates": [
{
"external_id": "STU-10A-0142",
"name": "Aarav Sharma",
"roll_number": "14",
"section_or_class": "10-A"
},
{
"external_id": "STU-10A-0143",
"name": "Diya Patel",
"roll_number": "15",
"section_or_class": "10-A"
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidates: [
{
external_id: 'STU-10A-0142',
name: 'Aarav Sharma',
roll_number: '14',
section_or_class: '10-A'
},
{
external_id: 'STU-10A-0143',
name: 'Diya Patel',
roll_number: '15',
section_or_class: '10-A'
}
]
})
};
fetch('https://api.evalezy.com/v1/candidates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key lacks the evaluation:write scope.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"required_scope": "evaluation:write"
}
}
}{
"error": {
"code": "validation_failed",
"message": "questions[0].max_marks is required.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"errors": [
{
"field": "questions[0].max_marks",
"code": "required",
"message": "max_marks is required."
}
]
}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 2 s.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}Candidates
Create or update candidates
Creates or updates up to 2,000 candidates by your external_id. Returns {"candidates": [{"id", "external_id", "created"}]}.
Scope: evaluation:write
POST
/
candidates
Create or update candidates
curl --request POST \
--url https://api.evalezy.com/v1/candidates \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"candidates": [
{
"external_id": "STU-10A-0142",
"name": "Aarav Sharma",
"roll_number": "14",
"section_or_class": "10-A"
},
{
"external_id": "STU-10A-0143",
"name": "Diya Patel",
"roll_number": "15",
"section_or_class": "10-A"
}
]
}
'import requests
url = "https://api.evalezy.com/v1/candidates"
payload = { "candidates": [
{
"external_id": "STU-10A-0142",
"name": "Aarav Sharma",
"roll_number": "14",
"section_or_class": "10-A"
},
{
"external_id": "STU-10A-0143",
"name": "Diya Patel",
"roll_number": "15",
"section_or_class": "10-A"
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidates: [
{
external_id: 'STU-10A-0142',
name: 'Aarav Sharma',
roll_number: '14',
section_or_class: '10-A'
},
{
external_id: 'STU-10A-0143',
name: 'Diya Patel',
roll_number: '15',
section_or_class: '10-A'
}
]
})
};
fetch('https://api.evalezy.com/v1/candidates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{}{
"error": {
"code": "invalid_api_key",
"message": "The API key is not valid.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key lacks the evaluation:write scope.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"required_scope": "evaluation:write"
}
}
}{
"error": {
"code": "validation_failed",
"message": "questions[0].max_marks is required.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f",
"details": {
"errors": [
{
"field": "questions[0].max_marks",
"code": "required",
"message": "max_marks is required."
}
]
}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 2 s.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}Authorizations
Your institute's API key, vak_eval_ followed by 48 hex characters. An institute admin creates keys in the dashboard under Settings -> Integrations -> API keys.
Headers
Optional. Any unique string of 1-255 printable ASCII characters (a UUID works). Retrying with the same key within 48 hours replays the first response with Idempotent-Replayed: true.
Maximum string length:
255Example:
"exam-cbse-sci-10a-2026-10-14"
Response
OK
The response is of type object.