Darwinbox data API: leave, attendance, CTC
Darwinbox is Darwinbox Digital Solutions Pvt. Ltd.'s official Android HR client for employees at companies that run their people stack on a Darwinbox tenant. After the worker picks a company subdomain they sign in with username and password (or OTP, QR, SAML or an authenticator), then punch attendance, apply leave, read a CTC dashboard, download payslips and Form 16, claim benefits and expenses, and open helpdesk tickets. The developer sits at Plot No.17, Opposite Best Western Jubilee Ridge Hotel, Madhapur Road, Kavuri Hills, Hyderabad, Telangana 500033, India; the Play listing is rated 4.6 from about 97,000 reviews with 1 million-plus downloads. It is a full-suite HCM app rather than a single-function punch clock, sitting next to Workday, ADP Mobile Solutions, Paylocity and Dayforce as the India-built HRIS employees open on the commute.
Leave rows carry leaveName with currentAvailableBalance, yearlyAllotment and taken. The month attendance cartouche is presentDays against lateBy, overtime and shiftName. Compensation sits as totalCTC plus salaryStructureName; payslip files key on label, generatedOn and pdfURL. The signed-in card is employee_code with ManagerNm and dateOfJoining.
Workforce bots file the same leave_id the Hyderabad tenant already shows; timekeeping jobs punch lat/lng next to the ERP roster; payroll archives store pdfURL beside totalCTC — openData Studio turns that HCM loop into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Sign in for tenant token
POST
/v1/darwinbox/sessionosintExchanges username plus hashed password for the tenant token that gates later HR calls.
Auth: Unauthenticated. Body is username, hashed password, UDID and enc=1. The returned token is sent as a query token= on later tenant calls.
- username
- password
- UDID
- enc
- token
- userId
- tenantId
- isManager
POST /v1/darwinbox/session HTTP/1.1 Content-Type: application/json { "username": "anita.rao", "password": "sha256hash,sha256hash", "UDID": "device-9f3a", "enc": 1 }{ "token": "tkn-88c1", "userId": "u-44102", "tenantId": "acme.example.in", "isManager": false }Request OTP
POST
/v1/darwinbox/otposintSends a login OTP to the worker's mobile_number on the named tenant.
Auth: Unauthenticated. Body is tenant, mobile_number and ext.
- tenant
- mobile_number
- ext
- status
- message
POST /v1/darwinbox/otp HTTP/1.1 Content-Type: application/json { "tenant": "acme", "mobile_number": "9908088103", "ext": "+91" }{ "status": true, "message": "sent" }Signed-in employee profile
GET
/v1/darwinbox/meosintReturns the signed-in AppUser: employee_code, department, designation and ManagerNm.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- mongo_id
- employee_code
- firstname
- lastname
- department
- designation
- ManagerNm
- dateOfJoining
- office_location_name
GET /v1/darwinbox/me?token=tkn-88c1 HTTP/1.1 Accept: application/json{ "user_id": "u-44102", "mongo_id": "64f1a2b3", "employee_code": "EMP-1024", "firstname": "Anita", "lastname": "Rao", "email": "[email protected]", "department": "Finance", "designation": "Analyst", "ManagerNm": "Vikram Shah", "dateOfJoining": "2021-04-12", "office_location_name": "Hyderabad" }Leave balances
GET
/v1/darwinbox/leaveopendataPages leave-type rows with currentAvailableBalance, yearlyAllotment and taken.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- items
- leaveId
- leaveName
- currentAvailableBalance
- yearlyAllotment
- taken
- accruedSoFarThisYear
- isCompOff
- isUnpaid
GET /v1/darwinbox/leave?user_id=u-44102&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "items": [{ "leaveId": "L-12", "leaveName": "Privilege Leave", "currentAvailableBalance": "8.5", "yearlyAllotment": "18", "taken": "9.5", "accruedSoFarThisYear": "13.5", "isCompOff": false, "isUnpaid": false }] }Apply leave
POST
/v1/darwinbox/leave/applyopendataSubmits a leave request for leave_id between from_date and to_date.
Auth: Query token from POST /v1/darwinbox/session.
- leave_id
- user_id
- from_date
- to_date
- status
- message
POST /v1/darwinbox/leave/apply?token=tkn-88c1 HTTP/1.1 Content-Type: application/json { "leave_id": "L-12", "user_id": "u-44102", "from_date": "2026-10-14", "to_date": "2026-10-16" }{ "status": true, "message": "submitted" }Attendance summary
GET
/v1/darwinbox/attendanceopendataReturns the month attendance cartouche: presentDays, lateBy, overtime and shiftName.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- presentDays
- absentDays
- leaveDays
- lateBy
- overtime
- totalWorkDuration
- shiftName
- policyName
- clockInAllow
- userMongoId
GET /v1/darwinbox/attendance?user_id=u-44102&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "presentDays": "18", "absentDays": "1", "leaveDays": "2", "lateBy": "00:24", "overtime": "04:10", "totalWorkDuration": "148:00", "shiftName": "General", "policyName": "HO-HYD", "clockInAllow": 1, "userMongoId": "64f1a2b3" }Clock in
POST
/v1/darwinbox/attendance/punchopendataWrites a clock-in punch for the signed-in user, optionally with lat/lng.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- lat
- lng
- status
- message
POST /v1/darwinbox/attendance/punch?token=tkn-88c1 HTTP/1.1 Content-Type: application/json { "user_id": "u-44102", "lat": 17.4483, "lng": 78.3915 }{ "status": true, "message": "punched" }Compensation dashboard
GET
/v1/darwinbox/payopenfinanceReturns the compensation dashboard: totalCTC, salaryStructureName and financialYear.
Auth: Query token from POST /v1/darwinbox/session.
- year
- currency
- financialYear
- totalCTC
- salaryStructureName
- effectiveFrom
- isFlexiOpen
- displayPackage
GET /v1/darwinbox/pay?year=2026&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "currency": "INR", "financialYear": "2026-27", "totalCTC": "1800000", "salaryStructureName": "HO Analyst", "effectiveFrom": "2026-04-01", "isFlexiOpen": true, "displayPackage": true }List payslips
GET
/v1/darwinbox/payslipsopenfinancePages payslip rows keyed by label with generatedOn and pdfName.
Auth: Query token from POST /v1/darwinbox/session.
- year
- items
- label
- generatedOn
- pdfName
- isDownload
GET /v1/darwinbox/payslips?year=2026&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "items": [{ "label": "Sep 2026", "generatedOn": "2026-10-01", "pdfName": "payslip-2026-09.pdf", "isDownload": true }] }Download a payslip
GET
/v1/darwinbox/payslips/{month}openfinanceReturns the pdfURL for a single month's payslip.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- month
- pdfURL
- pdfName
GET /v1/darwinbox/payslips/2026-09?user_id=u-44102&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "pdfURL": "https://files.example/payslip-2026-09.pdf", "pdfName": "payslip-2026-09.pdf" }List benefits
GET
/v1/darwinbox/benefitsopenfinancePages benefit rows with label, value and totalAccrued.
Auth: Query token from POST /v1/darwinbox/session.
- items
- id
- label
- value
- totalAccrued
- declarationByUser
GET /v1/darwinbox/benefits?token=tkn-88c1 HTTP/1.1 Accept: application/json{ "items": [{ "id": "B-4", "label": "LTA", "value": "12500", "totalAccrued": "37500", "declarationByUser": true }] }Holiday calendar
GET
/v1/darwinbox/holidaysopendataReturns the tenant holiday calendar for year.
Auth: Query token from POST /v1/darwinbox/session.
- user_id
- year
- items
- date
- name
GET /v1/darwinbox/holidays?user_id=u-44102&year=2026&token=tkn-88c1 HTTP/1.1 Accept: application/json{ "year": "2026", "items": [{ "date": "2026-10-02", "name": "Gandhi Jayanti" }] }Tenant settings
GET
/v1/darwinbox/tenantopendataResolves tenant branding and MFA flags for the company subdomain.
Auth: Unauthenticated. Resolves a company subdomain before login.
- host
- tenantName
- logoUrl
- authenticatorEnabled
- mobileMfaEnabled
GET /v1/darwinbox/tenant?host=acme.example.in HTTP/1.1 Accept: application/json{ "tenantName": "acme.example.in", "logoUrl": "https://cdn.example/acme.png", "authenticatorEnabled": true, "mobileMfaEnabled": false }
Data categories
- employee profile
- leave balances
- attendance
- compensation
- payslips
- benefits
- holidays
- auth-sessions
Where teams use this data
Leave-balance overlay for a workforce bot
A helper polls GET /v1/darwinbox/leave (currentAvailableBalance, yearlyAllotment) then POST /v1/darwinbox/leave/apply so a manager bot can file Privilege Leave without opening the app.
Attendance into an ERP punch log
A timekeeping job reads GET /v1/darwinbox/attendance (presentDays, lateBy, overtime, shiftName) and POST /v1/darwinbox/attendance/punch so each clock-in lands next to the ERP roster.
CTC and payslip archive
A payroll archive joins GET /v1/darwinbox/pay (totalCTC, salaryStructureName) with GET /v1/darwinbox/payslips (label, generatedOn) and GET /v1/darwinbox/payslips/{month} (pdfURL).
Benefits plus holiday calendar
A people-ops dashboard lists GET /v1/darwinbox/benefits (label, totalAccrued) beside GET /v1/darwinbox/holidays so LTA claims sit next to the tenant calendar.
Frequently asked questions
How does Darwinbox authenticate API calls?
POST /v1/darwinbox/session exchanges username plus hashed password, UDID and enc=1 for token, userId and tenantId. POST /v1/darwinbox/otp sends a mobile OTP first. Later calls pass that token as a query parameter.
Which endpoints expose leave, attendance and pay?
GET /v1/darwinbox/leave returns currentAvailableBalance and yearlyAllotment. POST /v1/darwinbox/leave/apply files a request. GET /v1/darwinbox/attendance returns presentDays, lateBy and shiftName. GET /v1/darwinbox/pay returns totalCTC. GET /v1/darwinbox/payslips lists label and generatedOn.
What employee-profile fields are returned?
GET /v1/darwinbox/me returns user_id, mongo_id, employee_code, firstname, lastname, email, department, designation, ManagerNm, dateOfJoining and office_location_name.
Does the API cover benefits and holidays?
Yes. GET /v1/darwinbox/benefits returns label, value and totalAccrued. GET /v1/darwinbox/holidays returns the tenant calendar for a year. GET /v1/darwinbox/tenant resolves branding and MFA flags before login.
Apps similar to Darwinbox
- Workday — Workday is a US-built HCM suite (time, absence, payroll); Darwinbox is the India-built equivalent employees open for leave, punches and CTC.
- ADP Mobile Solutions — ADP Mobile Solutions is the US payroll-and-time client; Darwinbox covers the same punch, leave and payslip loop for Darwinbox tenants.
- Paylocity — Paylocity is a US mid-market HCM app with punches and pay; Darwinbox is the Hyderabad-run suite Indian enterprises issue to staff.
- Dayforce — Dayforce (Ceridian) is a workforce-management client for pay runs and schedules; Darwinbox instead centres on tenant leave, CTC and Form 16.
- BambooHR — BambooHR is a lighter US HRIS for smaller teams; Darwinbox is the full-suite tenant Indian enterprises pick for attendance through payroll.
- Keka HR — Keka is another India-built HRMS (leave, attendance, payroll) that overlaps Darwinbox's Hyderabad-market employee app.
- Zoho People — Zoho People is Zoho's HR module; Darwinbox is a dedicated HCM tenant with punches, CTC dashboards and Form 16 downloads.
Topics
- darwinbox api
- hris data api
- currentAvailableBalance leave
- darwinbox attendance punch
- totalCTC payslip
- hyderabad hcm api
- darwinbox employee_code
- india hris api
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use