Help Center

Eklavvya API

Two REST APIs power the Eklavvya platform. The Core API manages candidates, exams, scheduling and results. The AI API handles face verification, automated proctoring and code grading. Both speak JSON over HTTPS.

Core API

Candidate & exam lifecycle, scheduling, results. JWT-secured.

AI API

Face verification, proctoring image analysis, code & SQL evaluation. API-key secured.

Overview

All endpoints return JSON in the shape:

{
  "Data": { ... },
  "Message": "Success",
  "StatusCode": 200
}

Base URLs

Core API

PROD https://api-v2.eklavvya.com
STAGE https://api-v2-staging.eklavvya.com

Health probe: GET /home/TestAPI, environment probe: GET /home/TestEnv.

AI API

PROD https://ai-api.eklavvya.com
STAGE https://staging-ai-api.eklavvya.com

Health probe: GET /health returns { status, service, environment, timestamp }.

Authentication

Core API — JWT Bearer

Send a Bearer token in the Authorization header on every request. Tokens are issued by the login endpoint and carry InstituteID and Roles claims (HMAC-SHA256).

POST /Account/Login HTTP/1.1
Host: api-v2.eklavvya.com
Content-Type: application/json

{ "UserName": "you@org.com", "Password": "•••" }

Use the returned token on subsequent calls:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

AI API — X-Api-Key

Every request must include your 32-char hex API key:

X-Api-Key: 0a1b2c3d4e5f60718293a4b5c6d7e8f9
Content-Type: application/json
Tip: Keys come in two tiers — standard (AI evaluation) and admin (admin operations gated by AdminOnly policy). Request keys from your account manager.

Candidates

POST /Candidate/CreateNewCandidate Create a candidate
POST /Candidate/GetCandidatesList List (paginated)
POST /Candidate/UpdateCandidate Edit details
POST /Candidate/AssignToBatch Add to a batch
POST /Candidate/GetCandidateExams List exams for a candidate

Example — Create candidate

{
  "FirstName": "Rajesh",
  "MiddleName": "Kumar",
  "LastName": "Singh",
  "RollNo": "EMP001",
  "EmailID": "rajesh.singh@company.com",
  "MobileNo": "9876543210",
  "BatchID": "12345",
  "BatchName": "Q1-2026-Cohort"
}

Exams & Schedules

POST /Exam/CreateExamNew Create exam
POST /Exam/GetAllExamByID Exam details
POST /Exam/UpdateExamDetails Edit configuration
POST /ExamSchedule/CreateExamSchedule Schedule the exam

Example — Create exam

{
  "ExamName": "Quarterly Assessment Q1",
  "ExamDescription": "Full-length mock exam",
  "TotalMarks": 100,
  "PassingPercentage": 40,
  "DurationInMinutes": 180,
  "IsProctoringEnabled": true,
  "IsNegativeMarkingApplied": true,
  "NegativeMarkPercentage": 0.25
}

Example — Schedule an exam

{
  "ExamID": 456,
  "ExamName": "Quarterly Assessment Q1",
  "ScheduleDateTime": "2026-06-15 10:00:00",
  "ExpireDateTime":   "2026-06-15 13:30:00",
  "TimeZone": "Asia/Kolkata",
  "MaxAttempts": 1,
  "ShowResultsAfterExam": true
}

Results

POST /Result/GetCandidateResult Lookup by roll-no or email
POST /Result/CompleteExamResult Full question-wise breakdown

AI Proctoring & Face Verification

The AI API analyses base64-encoded images for face presence, identity match and suspicious behaviour. Use it inline during an exam, or batch-process captured frames after.

POST /AIProctoringImages/AnalyzeBase64Images Detect & analyse face
POST /AIProctoringImages/VerifyFaceAPI 1:1 face match
POST /AIProctoringImages/CompareFaceWithPhotoAsync Compare with profile photo
POST /AutoProctoringController/AnalyzeFolder Batch a folder of frames
POST /TextDetection/ExtractText OCR (image or PDF)

Example — Face comparison

{
  "referenceImage": "iVBORw0KGgoAAAANS...",
  "candidateImage": "iVBORw0KGgoAAAANS...",
  "promptName": "comparephotowithfaceprompt"
}

Code & SQL Evaluation

Run candidate submissions through an LLM-graded pipeline that scores syntax, logic and best practice — and surfaces structured feedback.

POST /Coding/CheckCodeWithGeminiCall Submit code for evaluation
POST /Coding/CheckCodeWithGeminiCallResult Retrieve feedback

Example — Submit code

{
  "Question": "Write a function to find the longest palindrome",
  "Description": "Optimised O(n) solution required",
  "Language": "Python",
  "UserCode": "def longest_palindrome(s):\n    ...",
  "TestCases": ["'aba'", "'racecar'", "'ac'"],
  "PromptName": "AICodingSQLAssessment"
}

Errors & Rate Limits

Heads up: Public webhooks are not yet available. Pull results with /Result/CompleteExamResult after candidates submit. Webhook support is on the roadmap.

Explore live with Swagger

Both APIs publish OpenAPI specs behind a login gate:

Request access via WhatsApp or email help@eklavvya.com.