Get an upload
curl --request GET \
--url https://api.evalezy.com/v1/uploads/{uploadId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.evalezy.com/v1/uploads/{uploadId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.evalezy.com/v1/uploads/{uploadId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "e7d35b19-04c2-4a8f-93e6-b1f2c8a4d057",
"filename": "STU-10A-0142-science.pdf",
"content_type": "application/pdf",
"size_bytes": 4718592,
"status": "ready",
"pages": 12,
"reject_reason": null,
"submission_id": null,
"expires_at": "2026-10-14T06:58:41Z",
"created_at": "2026-10-14T05:58:41Z"
}{
"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": "not_found",
"message": "The resource was not found.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 2 s.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}Uploads
Get an upload
Returns an upload. The first read after your PUT checks the file (size, type, page count): the status becomes ready with pages, or rejected with a reject_reason. A file still not uploaded stays pending until its URL expires.
Scope: evaluation:read
GET
/
uploads
/
{uploadId}
Get an upload
curl --request GET \
--url https://api.evalezy.com/v1/uploads/{uploadId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.evalezy.com/v1/uploads/{uploadId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.evalezy.com/v1/uploads/{uploadId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "e7d35b19-04c2-4a8f-93e6-b1f2c8a4d057",
"filename": "STU-10A-0142-science.pdf",
"content_type": "application/pdf",
"size_bytes": 4718592,
"status": "ready",
"pages": 12,
"reject_reason": null,
"submission_id": null,
"expires_at": "2026-10-14T06:58:41Z",
"created_at": "2026-10-14T05:58:41Z"
}{
"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": "not_found",
"message": "The resource was not found.",
"request_id": "req_4f9c2a7e1b3d4c8a9e6f0b2d5a7c1e3f"
}
}{
"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.
Path Parameters
Upload id (UUID) from POST /uploads.
Response
OK
Example:
"application/pdf"
Available options:
pending, ready, rejected Page count once ready.
file_too_large, not_a_pdf, too_many_pages, missing_object or unparseable.
The submission that used this upload.
When the upload URL stops working.