Workday icon

Workday employee data API

Workday, Inc. · Business

Workday is the mobile self-service client for Workday HCM, the human-capital-management suite from Workday, Inc. Employees of Workday customer organizations sign in with their company tenant to request time off, submit timecards, track expenses, view published shifts and work through onboarding journeys, while managers use it for approvals and attendance.

As a data source the app exposes the worker's slice of the HCM graph: time-off plans (listOfPlans, absenceTypeGroup), hour totals (totalNumber, quantity), expense lines (merchantForExpenseReportLine, expenseLineExtendedAmount), shifts and punches (startTime, eventType) and directory fields (workerPhoneNumberFormatted, workerPhotos). Integrators turn that into payroll syncs, expense reconciliation, roster dashboards and onboarding feeds.

Workday is the employee self-service companion to Workday HCM from Workday, Inc.: workers at customer organizations use it to request time off, review timecards, file expenses, check shifts and complete onboarding. Behind those screens sits a per-tenant dataset — absence-plan catalogs, weekly hour totals, expense-report lines with merchant and corporate-card detail, published shift schedules and worker directory profiles with photos and phones. It feeds payroll and workforce-ops syncs, expense-to-ERP reconciliation, live roster boards and new-hire journey inboxes.

Screenshots

  • Workday screenshot 1
  • Workday screenshot 2
  • Workday screenshot 3
  • Workday screenshot 4
  • Workday screenshot 5
  • Workday screenshot 6
  • Workday screenshot 7

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Eligible absence types (time-off plans)

    GET /v1/absence/workers/{workerId}/eligible-time-off-plans opendata

    Lists the signed-in worker's eligible absence / time-off plans — the catalog behind the Request Time Off picker.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). Limit/offset paging (default limit 100).

    • totalNumberOfPlans
    • listOfPlans
    • id
    • label
    • category
    • absenceTypeGroup
    GET /v1/absence/workers/247$1/eligible-time-off-plans?limit=100&offset=0 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "totalNumberOfPlans": 2,
      "listOfPlans": [
        {"id": "TIME_OFF_PLAN-6-1", "label": "Vacation", "category": {"id": "Time_Off", "descriptor": "Time Off"}, "absenceTypeGroup": {"id": "Absence_Type_Group-1", "descriptor": "PTO"}},
        {"id": "TIME_OFF_PLAN-6-2", "label": "Sick", "category": {"id": "Leave_of_Absence", "descriptor": "Leave"}, "absenceTypeGroup": {"id": "Absence_Type_Group-2", "descriptor": "Sick"}}
      ]
    }
    • Documented from the app's Request Time Off picker flow
    • Plan catalog model carries id, label, category and absenceTypeGroup
  • Time calendar summary

    GET /v1/time-tracking/workers/{workerId}/calendar-summary opendata

    Returns per-period hour totals for a worker's time calendar — the numbers on the Edit & Approve Time summary strip.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • total
    • data
    • dateRange
    • totals
    • totalNumber
    • label
    • quantity
    GET /v1/time-tracking/workers/247$1/calendar-summary?from=2026-09-21&to=2026-09-27 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "total": 1,
      "data": [
        {
          "dateRange": "2026-09-21/2026-09-27",
          "totals": [
            {"totalNumber": 40, "label": "Regular", "quantity": "HOURS"},
            {"totalNumber": 4, "label": "Overtime", "quantity": "HOURS"}
          ]
        }
      ]
    }
    • Documented from the Edit & Approve Time summary strip
    • Period-total model: dateRange, totals, totalNumber, quantity
  • Submit / list time review events

    POST /v1/time-tracking/workers/{workerId}/review-events opendata

    Submits a worker's timecard for review and returns the resulting timeReviewEvents with position and status — the write behind Submit Timecard.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • date
    • timeReviewEvents
    • id
    • descriptor
    • positionData
    • status
    POST /v1/time-tracking/workers/247$1/review-events HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"date": "2026-09-27"}
    {
      "date": "2026-09-27",
      "timeReviewEvents": [
        {
          "id": "TIME_REVIEW_EVENT-1-10432",
          "descriptor": "Week ending 27 Sep 2026",
          "positionData": {"id": "P-881", "descriptor": "Store associate"},
          "status": {"descriptor": "Submitted", "id": "Submitted"}
        }
      ]
    }
    • Documented from the Submit Timecard action
    • Review-event model carries per-week position and status
  • Approve timecard business-process step

    POST /v1/workflows/event-steps/{eventStepId}/approve opendata

    Approves a pending timecard business-process step — the manager action paired with matching deny and sendBack routes.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). Manager / time-keeper role required.

    • id
    • descriptor
    • status
    POST /v1/workflows/event-steps/EVENT_STEP-6-991/approve HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"comment": "Approved hours for week ending 27 Sep"}
    {
      "id": "EVENT_STEP-6-991",
      "descriptor": "Approve Time",
      "status": {"descriptor": "Approved", "id": "Approved"}
    }
    • Documented from the manager time-approval inbox
    • Sibling deny and sendBack actions act on the same event-step resource
  • Staffing worker (person + phone)

    GET /v1/staffing/workers/{workerId} osint

    Reads a worker's staffing record — person id and work phone — used by manager attendance and shift screens to identify who is on the roster.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • person
    • id
    • phone
    GET /v1/staffing/workers/247$1 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "person": {
        "id": "247$1",
        "phone": "+1-415-555-0148"
      }
    }
    • Documented from the manager attendance and shift screens
    • Worker record returns person id and work phone
  • Worker photo resource

    GET /v1/directory/workers/{workerId}/photo osint

    Returns the worker's photo resource (photoId + href) shown on team, schedule and directory cards.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • id
    • descriptor
    • workerPhotos
    • photoId
    • href
    GET /v1/directory/workers/247$1/photo HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "id": "247$1",
      "descriptor": "Jordan Lee",
      "workerPhotos": {
        "photoId": "PHOTO-3-8821",
        "descriptor": "Profile photo",
        "href": "/assets/photos/PHOTO-3-8821"
      }
    }
    • Documented from the team, schedule and directory cards
    • Photo model returns photoId plus a fetch href
  • Primary work phones

    GET /v1/directory/people/{personId}/work-phones osint

    Returns a person's public primary work phone numbers used on the manager attendance roster when a shift worker needs a call-out.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). Query flags primaryOnly=true and publicOnly=true.

    • data
    • workerPhoneNumberRaw
    • workerPhoneNumberFormatted
    GET /v1/directory/people/247$1/work-phones?primaryOnly=true&publicOnly=true HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "data": [
        {
          "workerPhoneNumberRaw": "+14155550148",
          "workerPhoneNumberFormatted": "+1 415-555-0148"
        }
      ]
    }
    • Documented from the manager call-out roster
    • Returns raw and formatted public work numbers
  • Expense report lines (GraphQL)

    POST /graphql/expenses openfinance

    Pages the worker's expense-report lines — merchant, amount, corporate-card last four and status — behind the Expenses activity list.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). GraphQL operation ExpenseReportLineForExpenseActivity.

    • expenseReportLine
    • merchantForExpenseReportLine
    • expenseLineExtendedAmount
    • currency
    • value
    • expenseReportLineStatus
    • last4DigitsOfCreditCardNumber
    • expenseReportLinePaidWithCorporateCard
    • workdayID
    • expenseCreditCardTransaction
    • creditCardMerchantName
    POST /graphql/expenses HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"operationName":"ExpenseReportLineForExpenseActivity","variables":{"dataSource":"expenseReportLinesForWorker","limit":20,"offset":0},"query":"query ExpenseReportLineForExpenseActivity($dataSource: ExpenseReportLine_DataSources!, $limit: BigInt, $offset: BigInt) { expenseReportLine(dataSource: $dataSource, limit: $limit, offset: $offset) { data { merchantForExpenseReportLine expenseLineExtendedAmount { value currency } expenseReportLineStatus { descriptor workdayID { id } } last4DigitsOfCreditCardNumber workdayID { id } } total } }"}
    {
      "data": {
        "expenseReportLine": {
          "data": [
            {
              "merchantForExpenseReportLine": "United Airlines",
              "expenseLineExtendedAmount": {"value": 428.60, "currency": "USD"},
              "expenseLineExtendedAmountFormatted": "428.60 USD",
              "expenseReportLineStatus": {"descriptor": "Draft", "workdayID": {"id": "STATUS-1"}},
              "last4DigitsOfCreditCardNumber": "4412",
              "expenseReportLinePaidWithCorporateCard": true,
              "workdayID": {"id": "EXPENSE_LINE-6-2044"},
              "expenseCreditCardTransaction": {
                "creditCardMerchantName": "UNITED AIR",
                "creditCardChargeDateFormatted": "2026-09-18",
                "creditCardExtendedAmount": {"value": 428.60, "currency": "USD"}
              }
            }
          ],
          "total": 1
        }
      }
    }
    • Documented from the Expenses activity list
    • GraphQL operation ExpenseReportLineForExpenseActivity pages lines with limit/offset
  • Workforce schedule (GraphQL GetSchedule)

    POST /graphql/scheduling opendata

    Loads a scheduling organization's published week — assigned shifts, roster workers and overlayed timeOffs — for the manager My Shifts / schedule grid.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). GraphQL operation GetSchedule.

    • getScheduleEdge
    • orgId
    • status
    • fromDate
    • toDate
    • shifts
    • startTime
    • endTime
    • paidDurationHours
    • workerId
    • workers
    • timeOffs
    • absenceType
    • quantity
    • unit
    POST /graphql/scheduling HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"operationName":"GetSchedule","variables":{"orgId":"ORG-881","queryInput":{"fromDate":"2026-09-21","toDate":"2026-09-27"}},"query":"query GetSchedule($orgId: ID!, $queryInput: QueryInput!) { getScheduleEdge(orgId: $orgId, queryInput: $queryInput) { id orgId status fromDate toDate shifts { id startTime endTime workerId paidDurationHours } workers { id name } timeOffs { id startTime endTime quantity unit absenceType { id name } worker { id name } } } }"}
    {
      "data": {
        "getScheduleEdge": {
          "id": "SCHED-2026-W39",
          "orgId": "ORG-881",
          "status": "PUBLISHED",
          "fromDate": "2026-09-21",
          "toDate": "2026-09-27",
          "shifts": [
            {"id": "SHIFT-441", "startTime": "2026-09-24T09:00:00", "endTime": "2026-09-24T17:00:00", "workerId": "247$1", "paidDurationHours": 8.0, "open": false, "status": "ASSIGNED"}
          ],
          "workers": [{"id": "247$1", "name": "Jordan Lee"}],
          "timeOffs": [
            {"id": "TO-19", "startTime": "2026-09-25T00:00:00", "endTime": "2026-09-25T23:59:59", "quantity": 1, "unit": "DAYS", "displayType": "FULL_DAY", "absenceType": {"id": "TIME_OFF_PLAN-6-1", "name": "Vacation"}, "worker": {"id": "247$1", "name": "Jordan Lee"}}
          ]
        }
      }
    }
    • Documented from the manager My Shifts schedule grid
    • GraphQL operation GetSchedule returns shifts, roster workers and time-off overlays
  • Attendance groups (GraphQL GetAttendanceGroups)

    POST /graphql/scheduling opendata

    Groups today's shifts into not-checked-in, not-checked-out and checked-in buckets with matching timeClockEvent punches — the manager attendance board.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). GraphQL operation GetAttendanceGroups.

    • getAttendanceGroups
    • notCheckedIn
    • notCheckedOut
    • checkedIn
    • groupedShiftTimeClockEvent
    • timeClockEvent
    • eventType
    • timePeriod
    • shiftId
    POST /graphql/scheduling HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"operationName":"GetAttendanceGroups","variables":{"matchingShiftsTimeClockEventInput":{"asOf":"2026-09-24T12:00:00"}},"query":"query GetAttendanceGroups($matchingShiftsTimeClockEventInput: MatchingShiftsTimeClockEventInput!) { getAttendanceGroups(matchingShiftsTimeClockEventInput: $matchingShiftsTimeClockEventInput) { notCheckedIn { id name } notCheckedOut { id name } checkedIn { id name } } }"}
    {
      "data": {
        "getAttendanceGroups": {
          "notCheckedIn": [
            {"id": "GRP-1", "name": "Front of house", "groupedShiftTimeClockEvent": [{"shift": {"id": "SHIFT-441", "startTime": "2026-09-24T09:00:00", "endTime": "2026-09-24T17:00:00", "worker": {"id": "247$1", "name": "Jordan Lee"}}, "timeClockEvent": null}]}
          ],
          "notCheckedOut": [],
          "checkedIn": [
            {"id": "GRP-2", "name": "Kitchen", "groupedShiftTimeClockEvent": [{"shift": {"id": "SHIFT-442", "worker": {"id": "248$1", "name": "Sam Ortiz"}}, "timeClockEvent": {"id": "TCE-90", "eventType": "CHECK_IN", "shiftId": "SHIFT-442", "timePeriod": {"start": "2026-09-24T08:57:00", "end": null}}}]}
          ]
        }
      }
    }
    • Documented from the manager attendance board
    • GraphQL operation GetAttendanceGroups buckets shifts by punch state
  • Home cards (GraphQL GetCards)

    POST /graphql/people-experience opendata

    Returns the signed-in worker's mobile home cards (payslip, time off, tasks, journeys) that populate the Workday landing screen.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). GraphQL operation GetCards.

    • home
    • getCards
    • id
    • definition
    • layout
    • title
    • subtitle
    • eyebrow
    • task
    • taskID
    • instanceID
    POST /graphql/people-experience HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"operationName":"GetCards","variables":{"input":{"layout":"MOBILE"}},"query":"query GetCards($input: HomeGetCardsInput!) { home { getCards(input: $input) { id definition { id } layout { type ... on SimpleCardLayout { title subtitle eyebrow } } } } }"}
    {
      "data": {
        "home": {
          "getCards": [
            {
              "id": "CARD-PAYSLIP-SEP",
              "definition": {"id": "payslip"},
              "layout": {
                "type": "SimpleCardLayout",
                "title": "Payslip — 15 Sep 2026",
                "subtitle": "Net $3,412.18",
                "eyebrow": "Pay",
                "task": {"id": "TASK-PAYSLIP", "title": "View payslip", "taskID": "2997$18", "instanceID": "2998$4", "isReport": false}
              }
            }
          ]
        }
      }
    }
    • Documented from the mobile landing screen
    • GraphQL operation GetCards returns payslip, time-off and task cards
  • Onboarding journeys overview (GraphQL)

    POST /graphql/people-experience opendata

    Loads the worker's active and completed onboarding journeys with per-card progress — the Journeys section of the people-experience home.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId). GraphQL operation JourneysOverviewQuery.

    • journeys
    • activeJourneys
    • completedJourneys
    • header
    • journeyCards
    • title
    • label
    • progress
    • completed
    • total
    • status
    • task
    POST /graphql/people-experience HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    Content-Type: application/json
    
    {"operationName":"JourneysOverviewQuery","variables":{"input":{}},"query":"query JourneysOverviewQuery($input: JourneySectionCardsInput) { journeys { activeJourneys(input: $input) { id label journeyCards { id title label progress { completed total } status } } completedJourneys(input: $input) { id label } header { title description } } }"}
    {
      "data": {
        "journeys": {
          "header": {"title": "Your journeys", "description": "Finish onboarding tasks"},
          "activeJourneys": {
            "id": "SEC-ACTIVE",
            "label": "In progress",
            "journeyCards": [
              {
                "id": "JRN-ONB-1",
                "title": "New hire onboarding",
                "label": "Due 4 Oct",
                "progress": {"completed": 3, "total": 8},
                "status": "IN_PROGRESS",
                "task": {"id": "TASK-J1", "title": "Complete I-9", "taskID": "2997$22", "instanceID": "2998$9"}
              }
            ]
          },
          "completedJourneys": {"id": "SEC-DONE", "label": "Completed", "journeyCards": []}
        }
      }
    }
    • Documented from the Journeys section of the home feed
    • GraphQL operation JourneysOverviewQuery returns active and completed journey cards
  • Career-hub connection suggestions

    GET /v1/career-hub/me/connection-suggestions osint

    Returns suggested colleague connections for the signed-in worker — name, job title and shared facets used by the onboarding / career-hub People to Meet cards.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • total
    • data
    • worker
    • id
    • descriptor
    • workExperience
    • jobTitle
    • thingsInCommon
    • message
    • person
    GET /v1/career-hub/me/connection-suggestions HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "total": 2,
      "data": [
        {
          "worker": {
            "id": "247$88",
            "descriptor": "Alex Chen",
            "workExperience": [{"jobTitle": "People Partner"}],
            "thingsInCommon": [{"message": "Same location — San Francisco"}],
            "person": {"photo": [{"id": "PHOTO-3-101"}]}
          }
        }
      ]
    }
    • Documented from the People to Meet cards
    • Suggestion model carries job title and shared facets
  • Onboarding journey cards

    GET /v1/journeys opendata

    Lists assigned onboarding journeys with required-step progress and due dates — the REST catalog behind the Journeys list.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • total
    • data
    • id
    • descriptor
    • name
    • status
    • formattedDistributionDate
    • formattedEndDate
    • requiredTotalSteps
    • requiredStepsComplete
    GET /v1/journeys HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "total": 1,
      "data": [
        {
          "id": "JOURNEY-6-441",
          "descriptor": "New hire onboarding",
          "name": "New hire onboarding",
          "status": {"id": "IN_PROGRESS", "descriptor": "In progress"},
          "formattedDistributionDate": "1 Sep 2026",
          "formattedEndDate": "15 Oct 2026",
          "requiredTotalSteps": 8,
          "requiredStepsComplete": 3
        }
      ]
    }
    • Documented from the Journeys list
    • Journey card model carries required-step progress and due dates
  • Required learning cards

    GET /v1/learning/sliders/{sliderId}/cards opendata

    Returns required-learning slider cards — course title, duration, due date and overdue flag — shown on the onboarding Plan / Learning strip.

    Auth: OAuth2 Bearer access_token from the PKCE sign-in, plus the tenant session cookie (jsessionId).

    • total
    • data
    • assignment
    • dueDate
    • overdue
    • formattedDueDate
    • content
    • id
    • title
    • lessonCount
    • contentDeepLink
    • duration
    GET /v1/learning/sliders/SLIDER-REQ/cards HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Cookie: JSESSIONID=1A2B3C4D
    {
      "total": 1,
      "data": [
        {
          "assignment": {"dueDate": "2026-10-04", "overdue": false, "formattedDueDate": "4 Oct 2026"},
          "assignmentCycle": {"dueDate": "2026-12-31", "overdue": false, "formattedDueDate": "31 Dec 2026"},
          "content": {
            "id": "COURSE-19",
            "title": "Workplace safety",
            "lessonCount": "4",
            "contentDeepLink": "wd-learning://course/COURSE-19",
            "duration": "45m"
          },
          "record": {"id": "REC-19"}
        }
      ]
    }
    • Documented from the onboarding Learning strip
    • Card model joins assignment due dates with course content

Data categories

  • time-off plans
  • timecards
  • expenses
  • schedules
  • time-clock attendance
  • worker profiles
  • home tasks
  • onboarding journeys
  • required learning

Where teams use this data

  • Workforce time-off and timecard sync

    A workforce-ops bot can pull eligible absence plans (listOfPlans.id/label) and weekly calendar totals (dateRange, totals.quantity) then watch timeReviewEvents.status so a downstream payroll file only closes after Submitted/Approved steps.

  • Expense-to-ERP reconciliation

    Finance can page expenseReportLine rows — merchantForExpenseReportLine, expenseLineExtendedAmount.value/currency, last4DigitsOfCreditCardNumber and creditCardMerchantName — and match corporate-card charges to the GL without opening the mobile Expenses screen.

  • Live roster and punch board

    A store-manager dashboard can combine GetSchedule (shifts.startTime/endTime, workerId, timeOffs.absenceType) with GetAttendanceGroups (notCheckedIn / checkedIn timeClockEvent.eventType) and overlay worker photos (workerPhotos.href) plus workerPhoneNumberFormatted from person/v4 workPhones.

  • New-hire journey and learning inbox

    An employee-experience feed can read JourneysOverviewQuery journeyCards.progress plus REST JourneyCard.requiredStepsComplete, then surface RequiredLearningCard content.title/dueDate next to GetCards layout.title so onboarding tasks and payslip actions land in one inbox.

Frequently asked questions

What data does the Workday mobile API expose?

Time-off plan catalogs (totalNumberOfPlans, listOfPlans), timecard calendar totals and review events, expense-report lines with merchant and corporate-card last four, published shifts and timeOffs, attendance punch groups, onboarding journeys and required-learning cards, and worker id/phone/photo resources — all scoped to the signed-in tenant.

How does the Workday app authenticate?

The employee signs in with an OAuth2 PKCE flow that returns an access_token plus a tenant session cookie. Later REST and GraphQL calls send both the Bearer token and the session cookie against the organization's own Workday tenant.

Are these Workday endpoints a public developer API?

No. They are the first-party tenant interfaces the official Workday app uses after an employee signs in with their organization. There is no public developer key for these mobile routes.

Apps similar to Workday

  • SAP SuccessFactors — SAP SuccessFactors is an enterprise HCM suite covering core HR, payroll, talent management and workforce planning, and is the closest direct enterprise alternative to Workday.
  • Oracle HCM Cloud — Oracle HCM Cloud is an enterprise HCM platform with AI-driven talent management, global payroll and employee self-service portals, aimed especially at organizations already using Oracle ERP.
  • UKG Pro — UKG Pro, formed from the Ultimate Software and Kronos merger, is an HCM suite aimed at organizations with large hourly or frontline workforces that need scheduling, time tracking and labor analytics.
  • Dayforce — Dayforce, formerly Ceridian, is an HCM platform built on a single database whose real-time payroll calculation suits healthcare, retail and other shift-based industries.
  • ADP Mobile Solutions — ADP Mobile Solutions is the employee self-service companion to ADP's payroll-first HCM products, giving workers mobile access to pay, time and HR tasks backed by ADP's compliance coverage.
  • Paylocity — Paylocity is a mid-market HCM platform whose self-service portal lets employees manage personal info, benefits and time-off requests, with added engagement features like peer recognition.
  • Paycom — Paycom is a single-database HCM platform whose employee self-service tooling, including its Beti feature, lets employees manage and verify their own payroll.
  • BambooHR — BambooHR is an HRIS aimed at smaller organizations that gives employees simple self-service for time-off requests and personal data.

Topics

  • workday api
  • workday time off api
  • workday expenses api
  • workday schedule api
  • workday timecard
  • workday worker profile
  • workday onboarding journeys
  • hcm data api
  • workday graphql 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