HRIS · Beta
UKG Dimensions
API integration
Ship HRIS features without building the integration. Full UKG Dimensions API access via Proxy, normalized data through Unified APIs, and 70+ MCP-ready tools for AI agents — all extensible to your exact use case.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with UKG Dimensions
Common scenarios for SaaS companies building UKG Dimensions integrations for their customers.
Ingest punches from POS and time clocks
Point-of-sale platforms, physical clocks, and field apps can push clock-in/out events into UKG Dimensions in near real-time via bulk punch import, so hours flow directly into the system of record without manual entry.
Pull finalized timecards for payroll processing
Payroll and EWA platforms can retrieve fully-calculated timecards, pay code edits, and timecard metrics scoped by pay period or Hyperfind, inheriting UKG's union rules, overtime, and premium calculations without reimplementing them.
Provision and deprovision users from employee changes
IAM, IT, and onboarding tools can detect new hires, role changes, and terminations through change indicator markers and person data to automate account creation, license assignment, and offboarding.
Sync schedules and shifts across workforce tools
Field service, shift bidding, and task management platforms can read schedules and shifts to enforce schedule adherence, assign work only to on-shift employees, and keep external calendars aligned.
Automate time-off and leave workflows
Employee experience and HR portals can create time-off requests, move them through approval states, and read leave cases and accrual balances to give workers a unified absence experience outside UKG.
What You Can Build
Ship these features with Truto + UKG Dimensions
Concrete product features your team can ship faster by leveraging Truto’s UKG Dimensions integration instead of building from scratch.
Bulk punch import pipeline
Push batches of clock-in/out events into UKG Dimensions with job, cost center, and labor category overrides using the bulk punch import endpoint.
Pay period timecard export
Pull complete timecards, pay codes, and timecard metrics for a Symbolic Period such as Current_Payperiod, scoped by Hyperfind, for payroll or analytics.
Change-marker based employee sync
Poll change indicator markers and subscriptions to incrementally sync person records, employment terms, supervisors, and external IDs instead of running full nightly dumps.
Org structure mapping layer
Ingest cost centers, locations, location sets, jobs, employee groups, and labor categories to map UKG's organizational hierarchy into your product's internal structures.
End-to-end time-off management
Create time-off requests, update their status (approve, refuse, cancel), and surface accrual balances and leave cases inside your own UI.
Pay code edit writeback for EWA and adjustments
Bulk import pay code edits to post deductions, bonuses, or reconciliation entries back into UKG from an earned wage access, tips, or incentive platform.
SuperAI
UKG Dimensions AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_ukg_dimensions_current_user_info
Get the person this connection signs in as (the API user). Returns one record with employeeId, personNumber, userName, firstName, lastName, middleInitial, timeZone and userLocale. Set include_contact_information=true to add emailContacts, telephoneContacts and postalAddresses. Truto uses this call to validate the connection. Access Control Point: CURRENT_USER_INFORMATION_READ.
list_all_ukg_dimensions_persons
List every person as a lightweight record: personId, personNumber, firstName, lastName, employmentStatus and userAccountStatus. Optional filters go in the body where object (employmentStatus, userAccountStatus, snapshotDate, dateRange, returnPersonIdOnly); the default where: {} returns everyone. Truto pages this for you: pass limit and next_cursor, not index or count. Pages hold up to 1,000 people (UKG allows at most 10,000 per call). For full records use persons.get, or person_extensions.list for up to 100 people at a time. Access Control Point: LIGHT_WEIGHT_EMPLOYEE_RECORDS_READ.
get_single_ukg_dimensions_person_by_id
Get one person's full record by person ID (UKG's internal person key, also called the employee ID; not the person number). Returns personIdentity, personInformation (names, email addresses, phone numbers, postal addresses, employment and user account status history, custom data), jobAssignment (primary labor accounts, job assignment details, base wage rates), user (userAccount), gdapAssignments and positions.
update_a_ukg_dimensions_person_by_id
Update a person by person ID (PUT /v1/commons/persons/{id}). Send the person record: personInformation is required, plus any of personIdentity, jobAssignment, user, gdapAssignments and positions. Returns the updated record. UKG returns 409 on an optimistic-locking conflict.
create_a_ukg_dimensions_person
Create a person (employee and/or user). Send the person record: personInformation is required, plus any of personIdentity, jobAssignment, user, gdapAssignments and positions. Returns the created record. UKG answers 200 (not 201) for a successful create.
ukg_dimensions_persons_bulk_upsert
Create or update several people in one call: the body is a JSON array of person records, each with personInformation. The maximum batch size is 100; UKG notes batches of about 70 often perform better. Returns an array of the saved records. A 207 response means partial success and lists the records that failed.
delete_a_ukg_dimensions_person_by_id
Permanently delete a person record by ID (the UKG person ID, which UKG also calls employee ID; not a person number). This is a hard delete of the person and of the timekeeping, punch, accrual, schedule and request data that belongs to them; UKG documents no archive and no cascade behaviour, and answers 204 with no body. UKG allows it for inactive and terminated employees outside of the current pay period (release note WFD-154391) and rejects other people with 400. The reversible way to offboard in UKG is an effective-dated Terminated employment status.
list_all_ukg_dimensions_person_extensions
Get full person records for specific people, grouped into extensions (employeeExtension, timekeepingExtension, schedulingExtension, accrualExtension, deviceExtension, or allExtension). Identify people in where.employees with key (personid, personnumber, jobassignmentid, username, useraccountid, badgenumber or useremailaddress) and values, and pick the extension with where.extensionType. At most 100 employees per request (People multi_* service limit). Not paginated.
list_all_ukg_dimensions_base_persons
Get the base summary (personId, personNumber, fullName, displayName, name) for specific people. Identify them in where.employees with key (personid, personnumber, jobassignmentid, username, useraccountid, badgenumber or useremailaddress) and values. At most 100 employees per request (People multi_* service limit). Not paginated.
list_all_ukg_dimensions_person_external_ids
Get the AOID and COID external identifiers (UKG Pro HCM / ADP IDs) of specific employees. Identify them in where.employees with key (personid, personnumber, jobassignmentid, username, useraccountid, badgenumber or useremailaddress) and values. Returns personIdentity, aoid and coid per employee. Not paginated.
list_all_ukg_dimensions_person_supervisors
Get the supervisor ('reports to') assignments of specific employees. Identify them in where.employees with key and values. Returns personidentity, supervisorName and supervisorPersonNumber per employee. At most 100 records per request. Not paginated. Access Control Point: PE_REPORTS_TO_FIELD.
list_all_ukg_dimensions_person_employment_terms
Get the employment term assignments of specific employees. Identify them in where.employees with key and values. Returns personIdentity, assignmentSpan and assignments per employee. Not paginated.
list_all_ukg_dimensions_cost_centers
List every cost center (id, name, description, inactive, ivrNum, persistentId, version) in one response. Not paginated. Access Control Point: COST_CENTERS.
ukg_dimensions_cost_centers_search
Search cost centers with filters and sorting: where.filterCriteria (name, description, ivrNum, inactive, supportPartialStringMatch) and sortBy. Not auto-paginated: send index (0-based page number) and count in the body and request the next index until fewer than count records come back. UKG documents no upper limit for count.
get_single_ukg_dimensions_cost_center_by_id
Retrieve one cost center (id, name, description, inactive flag) by its ID. Access Control Point COST_CENTERS.
list_all_ukg_dimensions_employee_groups
List employee groups (id and name only, unless all_details=true). Pass qualifier to get one group by name. Truto pages this for you: pass limit and next_cursor, not index or count. Pages hold up to 100 groups (the UKG default page size). Access Control Point: EMPLOYEE_GROUP.
list_all_ukg_dimensions_symbolic_periods
List every symbolic period (id and qualifier), such as Current_Payperiod or Previous_Payperiod. Use them as symbolic period references in timecard, schedule and data requests. Not paginated.
list_all_ukg_dimensions_pay_periods
Get one pay period timespan. With no parameters it returns the current pay period of the API user. Otherwise pass pay_period_id, pay_rule_id or employee_id (optionally with date), plus period_type (Previous, Current or Next). Returns one record with spanStartDate, spanEndDate, spanStartDateTime and spanEndDateTime.
list_all_ukg_dimensions_locations
List the organizational map locations below a location during a date span (POST /v2/commons/locations/multi_read). Send where.descendantsOfDuring with context (ORG or FORECAST), locationRef, startDate and endDate, plus optional multiReadOptions (includeOrgPathDetails, excludeExpiredNodes, modifiedSince). Truto pages this for you: pass limit and next_cursor, not index or count. Pages hold up to 100 locations.
get_single_ukg_dimensions_location_by_id
Get one organizational map location (node) by nodeId. The context (ORG or FORECAST) and date query parameters are required.
ukg_dimensions_locations_search
Find organizational map locations (POST /v1/commons/locations/multi_read). Put one criterion in where: descendantsOf, childrenOf, ancestorsOf, parentOf (or their ...During forms), locationSet, locationsSpan or query (search by name). multiReadOptions can add includeOrgPathDetails, modifiedSince or excludeExpiredNodes. Returns every match in one response; not paginated.
list_all_ukg_dimensions_jobs
Get generic jobs by date or reference (POST /v1/commons/jobs/multi_read). Put one criterion in where: forDate (all jobs effective on a date), allJobsBySpan (a date span) or span (specific job references). multiReadOptions.modifiedSince returns only jobs changed since then. At most 5,000 jobs per request (Business Structure service limit). Not paginated.
get_single_ukg_dimensions_job_by_id
Get one effective generic job by job ID. The date query parameter (YYYY-MM-DD) is required.
list_all_ukg_dimensions_location_sets
List location sets (organizational map groups). Filter with qualifier, date and context (ORG or FORECAST); all_details=true returns full records. Truto pages this for you: pass limit and next_cursor, not index or count. Pages hold up to 100 location sets (the UKG default).
ukg_dimensions_location_sets_search
Find location sets by identifier or by a name query (POST /v2/commons/location_sets/multi_read). Send where with context, date, and either locationSets or query; types accepts ids 1 (all organizational groups), 2 (manager groups) or 3 (transfer groups). Not auto-paginated: send index (0-based page number) and count in the body and request the next index until fewer than count records come back. Access Control Point: OJS_EDITOR (VIEW).
list_all_ukg_dimensions_labor_categories
List labor categories. Pass name to get one category, or modified_since (an ISO local date-time such as 2026-01-31T00:00:00.000) to get only categories changed since then. Not paginated. Access Control Point: LABOR_CATEGORY.
get_single_ukg_dimensions_labor_category_by_id
Retrieve one labor category (id, name, abbreviation, sort order, inactive flag) by its ID. Access Control Point LABOR_CATEGORY.
list_all_ukg_dimensions_labor_entries
List every labor category entry of one labor category. The categoryId query parameter is required. Not paginated. Access Control Point: LABOR_CATEGORY.
ukg_dimensions_labor_entries_search
Search labor category entries with filters and sorting: where.laborCategory, where.filterCriteria (name, description, ivrNum, inactive, supportPartialStringMatch) and sortBy. Not auto-paginated: send index (0-based page number) and count in the body and request the next index until fewer than count records come back.
get_single_ukg_dimensions_labor_entry_by_id
Retrieve one labor category entry (id, name, description, inactive flag, labor category) by its ID. Access Control Point LABOR_CATEGORY.
list_all_ukg_dimensions_hyperfinds
List the Hyperfind queries (saved people searches) visible to the API user. usage_type filters to Regular, Home or All; all_details=true adds constraints. Use a Hyperfind id to scope timecard, schedule and data requests. Not paginated.
get_single_ukg_dimensions_hyperfind_by_id
Get one Hyperfind query by ID. all_details=true adds constraints.
ukg_dimensions_hyperfinds_execute
Run a Hyperfind query for a date range and get the people it selects. Send hyperfind (id or qualifier) and dateRange (startDate and endDate, or symbolicPeriod). Returns count and result (refs and basePersons). threshold caps the number of employees returned (default 3,500, up to 50,000). With enablePagination=true, send the returned nextReadToken as pageToken to get the next page. Limits: at most 365 days, 10,000 employees and 10,000 locations per request.
list_all_ukg_dimensions_data
Run an Information Access (aggregated data) query: select Data Dictionary keys, from a view with an employeeSet (hyperfind or employees, plus dateRange) or locationSet, optional where filters, groupBy and sortBy. Returns the whole response as one item: metadata (element totals, the cache key, and errors when a data provider hit its own limit) and data (a tree whose children are the rows). To page, send index and count with options.requestTag and keep the body otherwise identical. Limits: at most 500 employees, 365 days, employees x days 10,000 and 300 locations.
list_all_ukg_dimensions_data_elements
List every Data Dictionary element definition (key, label, categories, dataProvider, active, deprecated, properties). Use the keys in data.list queries. Not paginated.
ukg_dimensions_data_elements_search
Get Data Dictionary element definitions for specific keys. The body is a JSON array of data element keys (strings). UKG does not publish a response schema for this operation.
list_all_ukg_dimensions_pay_codes
List the pay codes available to the API user as a manager, or one pay code by id or qualifier. Not paginated. Access Control Point: PAY_CODE_NAME_LIST.
get_single_ukg_dimensions_pay_code_by_id
Get one pay code by ID. Only pay codes available to the API user are returned. Access Control Point: PAYCODE.
ukg_dimensions_pay_codes_search
Get pay codes by reference: send where.payCodes with ids, qualifiers or refs. References that do not match a visible pay code come back as errors (207 partial success). Access Control Point: PAYCODE.
list_all_ukg_dimensions_accrual_codes
List the accrual codes the API user can see, or one by id or qualifier. Returns id, name, shortName, typeId, typeName, hoursPerDayInSeconds, allowEdit and positionAware. Not paginated. Access Control Point: ACCRUALS_CONFIGURATION.
get_single_ukg_dimensions_accrual_code_by_id
Get one accrual code by ID.
list_all_ukg_dimensions_accrual_profiles
List accrual profiles (GET /v3/timekeeping/setup/accrual_profiles), or one by id or qualifier. all_details=true returns full profiles (otherwise only ID and name); include_accrual_policies=true adds policies. Truto pages this for you: pass limit and next_cursor, not index or count. Pages hold up to 100 profiles (the UKG default). UKG publishes no response model for this v3 operation. Access Control Point: ACCRUALS_CONFIGURATION.
list_all_ukg_dimensions_work_rules
List the work rules available to the API user as a manager, or one by id or qualifier. Not paginated. Access Control Point: PAY_RULES.
list_all_ukg_dimensions_pay_rules
List every timekeeping pay rule, or one by id or qualifier; all_details=false returns only IDs and names. Not paginated. Access Control Point: PAY_RULES.
list_all_ukg_dimensions_timecards
Get one employee's timecard as a manager. Pass employee_id or person_number, plus start_date and end_date or symbolic_period_id, and select the parts to return (such as PUNCHES, WORKED_SHIFTS, PAYCODE_EDITS, TOTALS, EXCEPTIONS); without select every part is returned. Returns one timecard record. For many employees use timecards.search.
ukg_dimensions_timecards_search
Get timecards for many employees (POST /v1/timekeeping/timecard/multi_read). Send select (at most 10 entities recommended), where.employees or where.hyperFind, and where.dateRange (dates or symbolicPeriod). partial_success=true returns 207 with per-employee results instead of failing. Limits: at most 500 employees, 365 days, and employees x days 28,000; UKG recommends at most 200 employees per pay period. Not paginated.
list_all_ukg_dimensions_timecard_metrics
Get timecard metrics for many employees: select totals and summaries such as ACTUAL_TOTALS, SCHEDULED_TOTALS, PROJECTED_TOTALS, ACCRUAL_SUMMARY or ACCRUAL_TRANSACTIONS, with where.employeeSet (employees or hyperFindRef, plus dateRange). Returns one record per employee. Limit: employees x days at most 280,000; UKG recommends at most 200 employees per pay period. partial_success=true returns 207 instead of failing. Not paginated.
list_all_ukg_dimensions_timecard_approvals
List timecard approvals for one employee (person_num or employee_id) over start_date and end_date, or a symbolic period. Returns employee, approvingManager, approvalDate and isEmployeeApproved per approval. Not paginated.
list_all_ukg_dimensions_punches
Get punches in near real time for a datetime window (POST /v1/timekeeping/punches/apply_read). Send where.dateRange (startDateTime and endDateTime) and optionally where.employees. Returns one record per employee: employee plus that employee's punches. Truto pages this for you: pass limit and next_cursor, not index or count. limit counts employees per page: at most 25 by default (a tenant system setting can allow 1 to 50).
ukg_dimensions_punches_bulk_import
Import punches for many employees (such as from time clocks). Send punches (each with employee, punchDtm and optional typeOverride, orgJob, commentsNotes), plus optional options and accrualValidationRequired. Returns the saved punches; a 207 response lists the failures.
ukg_dimensions_pay_code_edits_bulk_import
Import pay code edits (hours, days or money) in bulk. Send payCodeEdits, each with employee, paycode, applyDate and an amount (durationInHours, durationInDays or moneyAmount). Returns one result per edit (payCodeEditForRest or tkError); a 207 response lists the failures.
list_all_ukg_dimensions_schedules
Get the schedule of one employee, Hyperfind or location as a manager. Pass one criterion (employee_id, person_number, hyperfind_id, hyperfind_name, location_id or location_path), a date range (start_date and end_date) or symbolic period, and select (SHIFTS, PAYCODEEDITS, LEAVEEDITS, AVAILABILITIES, HOLIDAYS, and others). Returns one schedule record with shifts, payCodeEdits, leaveEdits and the other selected lists.
ukg_dimensions_schedules_search
Get schedules for many employees or locations (POST /v1/scheduling/schedule/multi_read). Send select and one where criterion: employees, hyperFind or locations, each with a dateRange. Returns one schedule object with shifts, payCodeEdits, leaveEdits and the other selected lists. Limit: employees x days at most 56,000. Not paginated.
list_all_ukg_dimensions_shifts
Get specific shifts by ID: send where.shiftIds (at most 500 IDs). To list shifts in a date range, use schedules.search with select SHIFTS. Returns full shift records (employee, startDateTime, endDateTime, segments). Access Control Point: SCHEDULE_ACCESS.
get_single_ukg_dimensions_shift_by_id
Get one scheduled shift by ID.
list_all_ukg_dimensions_schedule_changes
Get schedule changes for employees within an edit window (UTC). Send where.employees with employees, startDateTime and endDateTime (the edit window) and entityFilterSpan (the shift dates), plus select (SHIFTS, PAYCODEEDITS, LEAVEEDITS, DAYLOCKS, SCHEDULETAGS). Changes are compressed to the state before and after the window. Returns one snapshot per employee. At most 40 days per request. Not paginated.
list_all_ukg_dimensions_time_off_requests
Find time off requests as a manager. Put one criterion in where: employees (employeeRefs, startDate, endDate), hyperfind, ids (timeOffRequestIds) or states. Returns full requests (employee, periods, requestSubType, currentStatus). Not paginated.
get_single_ukg_dimensions_time_off_request_by_id
Get one time off request by ID. include_overridden_shifts=true adds the overridden shifts.
create_a_ukg_dimensions_time_off_request
Create a time off request for an employee as a manager. Send timeOffRequest (employee, periods and requestSubType are required), plus optional skipAccrualValidation and overrideAccrualWarnings. Returns the created request.
ukg_dimensions_time_off_requests_update_status
Move a time off request to another state as a manager (for example approve, refuse or cancel it). Body: changeState.where.timeOffRequestId and changeState.do.toStatus (a status from the request's nextValidStatuses). Returns the updated time off request.
list_all_ukg_dimensions_timeoff_accruals
Get one employee's accrual balances as a manager: pass employee_id or person_number, and optionally date and a request subtype (subtype_id or subtype_name). Returns one record per pay code with its balances.
list_all_ukg_dimensions_timeoff_request_subtypes
List the time off request subtypes available for an employee (employee_id or person_number). Not paginated.
list_all_ukg_dimensions_leave_cases
Find leave cases by leaveCases (IDs, at most 1,000) or by employees within a dateRange, optionally filtered by caseStatus. Limit: employees x days at most 84,000. Not paginated.
get_single_ukg_dimensions_leave_case_by_id
Get one leave case by ID.
list_all_ukg_dimensions_leave_edits
Get leave edits with their paid and tracking amounts for employees (required) within a dateRange. Limits: at most 1,000 leave edits, and employees x days at most 84,000. Not paginated.
list_all_ukg_dimensions_leave_profiles
List every leave profile, or one by name. Not paginated.
list_all_ukg_dimensions_leave_case_statuses
List the leave case statuses the tenant supports (id, qualifier, name). Access Control Point: LEAVE_CASES_FOR_MGR.
list_all_ukg_dimensions_leave_categories
Get leave categories by reference: send ids, qualifiers or refs. Not paginated.
list_all_ukg_dimensions_leave_reasons
Get leave reasons by reference: send ids, qualifiers or refs. Not paginated.
list_all_ukg_dimensions_tenant_info
Get tenant information for the API user's tenant; authenticationType tells classic authentication apart from UKG Authentication. Access Control Point: REST_API_SETUP.
list_all_ukg_dimensions_change_indicators
List the change marker types available for subscription (markerTypeId, markerName, category, cadence, retention, active). Not paginated.
list_all_ukg_dimensions_change_indicator_markers
Get change marker events (what changed, and when) for subscribed marker types. Send markers (ids or qualifiers of one cadence), startTime and endTime (the range must be a multiple of the cadence), and optional options.cadence or options.pageSize. Returns events (markerTypeId, objectId, applyDate). Truto pages this for you by following UKG's page token: pass next_cursor to continue, and do not set a page index in options.
list_all_ukg_dimensions_change_indicator_subscriptions
List change marker subscriptions: each marker type with its attributes and a subscriptions list (cadence, retention, startTime, endTime). version=all returns every version; latest is the default. Not paginated.
list_all_ukg_dimensions_public_hyperfinds
List the public Hyperfind queries visible to the API user. all_details=true adds constraints. Not paginated.
list_all_ukg_dimensions_timeoff_symbolic_values
List the amounts (symbolic values such as a full or half day) an employee may request for a time off request subtype, per pay code. Query employee_id or person_number, and subtype_id or subtype_name.
Why Truto
Why use Truto’s MCP server for UKG Dimensions
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for UKG Dimensions
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified HRIS API
Employee Compensations
Represent the compensation configuration for an Employee
Employees
Represents an employee in HRIS
Employments
Employments represent a job position at a company.
Group Types
Group types represent the types of group.
Groups
Groups represent the groups for an Employee
Job Roles
Represent the job roles in a company
Locations
Locations represent the locations in HRIS
Timeoff Balances
Represent the time off balances for an Employee
Timeoff Policies
Represent the time off policies in a company
Timeoff Requests
Represent the time off requests for an Employee
Timeoff Types
Represent the time off types in a company
Timesheet Entries
Represents a block of time an employee worked or reported, such as a shift, a punch or a timesheet line, attributed to a single work date
How It Works
From zero to integrated
Go live with UKG Dimensions in under an hour. No boilerplate, no maintenance burden.
Link your customer’s UKG Dimensions account
Use Truto’s frontend SDK to connect your customer’s UKG Dimensions account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call UKG Dimensions
Truto’s Proxy API is a 1-to-1 mapping of the UKG Dimensions API. You call us, we call UKG Dimensions, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate UKG Dimensions’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about UKG Dimensions on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication to UKG Dimensions work through Truto?
Truto handles the UKG Dimensions auth flow and token lifecycle for you. Your end users connect their tenant once through Truto's connect flow, and Truto manages credential storage, refresh, and tenant-specific base URLs so your app only deals with normalized API calls.
Can we get real-time change events, or do we have to poll?
UKG Dimensions does not expose traditional webhooks. Instead, it uses change indicators and change indicator markers that you poll on a cadence to detect what changed since the last sync. Truto exposes these as list endpoints so you can build efficient incremental syncs without full-table scans.
How do we handle UKG's query size limits on timecards and schedules?
UKG enforces limits like roughly 28,000 employee-days per timecard query. The recommended pattern is to scope requests using Hyperfinds (via the Hyperfinds execute endpoint) or Symbolic Periods such as Current_Payperiod, and batch across employee groups. Truto's pagination and request helpers make it straightforward to chunk these calls.
Does Truto support writing data back into UKG, not just reading?
Yes. You can create and update persons, bulk upsert employee records, bulk import punches and pay code edits, create time-off requests, and update their status. These cover the main writeback patterns needed for POS, EWA, payroll, and HR portal integrations.
Can we use the Unified HRIS API instead of UKG-specific endpoints?
Yes. Truto's Unified HRIS API normalizes employees, employments, locations, groups, job roles, timesheet entries, time-off requests, balances, policies, and compensations across HRIS providers. You can use the unified models for cross-provider features and drop down to UKG-native endpoints for Hyperfinds, change indicators, pay code edits, and other UKG-specific workflows.
How do we work with UKG's complex org structure (cost centers, labor categories, jobs)?
Truto exposes list and search endpoints for cost centers, locations, location sets, jobs, employee groups, labor categories, and labor entries. You can fetch the full organizational hierarchy once, cache it, and then reference the IDs when writing punches or pay code edits that require job and cost center overrides.
UKG Dimensions
Get UKG Dimensions integrated into your app
Our team understands what it takes to make a UKG Dimensions integration successful. A short, crisp 30 minute call with folks who understand the problem.