Darwinbox icon

Darwinbox data API: leave, attendance, CTC

Darwinbox Digital Solutions Pvt. Ltd. · Business 4.6 ★

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

  • Darwinbox screenshot 1
  • Darwinbox screenshot 2
  • Darwinbox screenshot 3
  • Darwinbox screenshot 4
  • Darwinbox screenshot 5
  • Darwinbox screenshot 6
  • Darwinbox screenshot 7
  • Darwinbox screenshot 8

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/session osint

    Exchanges 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/otp osint

    Sends 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/me osint

    Returns 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
    • email
    • 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/leave opendata

    Pages 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/apply opendata

    Submits 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/attendance opendata

    Returns 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/punch opendata

    Writes 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/pay openfinance

    Returns 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/payslips openfinance

    Pages 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} openfinance

    Returns 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/benefits openfinance

    Pages 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/holidays opendata

    Returns 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/tenant opendata

    Resolves 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

Get a quote