---
title: Raken API Integration on Truto
slug: raken
category: Time Tracking
canonical: "https://truto.one/integrations/detail/raken/"
---

# Raken API Integration on Truto



**Category:** Time Tracking  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 52 tools for Raken that AI agents can call directly.

- **create_a_raken_oauth_revoke** — Revoke a Raken authorization from its access token or refresh token. Both tokens stop working and the user must authorize again. Returns HTTP 200 with no documented response body, whether or not the token existed. Required: token.
- **list_all_raken_projects** — List Raken projects, optionally filtered by name or number (query), status (statuses) or last-updated window (changedSince/changedUntil, range capped to 31 days). Returns: uuid, name, number, startDate, endDate, status, address, externalId.
- **create_a_raken_project** — Create a Raken project. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: name, startDate.
- **get_single_raken_project_by_id** — Get one Raken project by UUID. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: id.
- **update_a_raken_project_by_id** — Update a Raken project by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: id.
- **list_all_raken_project_child_projects** — List a project's child projects, created on collaborators' own Raken accounts. Calling this on a child project returns an empty list. Returns: uuid, name, startDate, endDate, status, company, createdBy, updatedBy. Required: project_uuid.
- **list_all_raken_project_notes** — List notes recorded on a project between fromDate and toDate (range capped to 31 days). Returns: uuid, description, category, date, attachments, createdBy, updatedBy, createdAt. Required: project_uuid, fromDate, toDate.
- **list_all_raken_project_production_insights** — List production insights for a project, one item per cost code division. Optionally narrow by date range, cost code UUID or division. Returns: division, budgetedHours, actualHours, completeHoursPercent, remainingHours, completeQuantityPercent, projectedTotalHours, projectedHoursGainOrLoss. Required: project_uuid.
- **list_all_raken_materials** — List materials, optionally only those available to one project (projectUuid). Returns: uuid, name, materialUnit, projects.
- **create_a_raken_material** — Create a material. With projectUuid it is available only to that project; without it, every project on the account can use it. Returns: uuid, name, materialUnit, projects. Required: name, materialUnitUuid.
- **update_a_raken_material_by_id** — Update a material by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, materialUnit, projects. Required: id.
- **list_all_raken_material_logs** — List material logs for a project by date range (fromDate/toDate) or last-updated window (changedSince/changedUntil, range capped to 31 days). Returns: uuid, date, updatedAt, material, quantity, costCode, attachments. Required: projectUuid.
- **list_all_raken_material_units** — List material units, the units materials are measured in. Returns: uuid, name.
- **create_a_raken_material_unit** — Create a material unit. Returns: uuid, name. Required: name.
- **list_all_raken_equipment_logs** — List equipment logs grouped by deployment, filterable by project, equipment, status, date range or query. Date ranges are capped to 31 days. Returns: uuid, startDate, endDate, equipment, projectUuid, daysOnsite, daysNotInUse, createdBy.
- **list_all_raken_equipments** — List equipment, filterable by condition, deployed project and a free-text query. Returns: uuid, name, rate, frequency, equipmentId, owned, make, model.
- **list_all_raken_work_logs** — List work logs for a project by date range or last-updated window (capped to 31 days). Only COMPLETED work logs unless statuses is set; time cards are nested under their work log. Returns: uuid, date, status, totalHours, description, projectUuid, workLogType, subcontractor. Required: projectUuid.
- **list_all_raken_pay_types** — List pay types, such as Regular Time and Over Time. Returns: uuid, name, code.
- **list_all_raken_time_cards** — List time cards by project, worker or date range (capped to 31 days). deletedFrom with deletedTo returns only deleted cards. A card's work description lives on its work log (workLogUuid). Returns: uuid, workLogUuid, date, totalHours, project, worker, approved, signed.
- **list_all_raken_classifications** — List classifications, filterable by status and last-updated window (changedSince needs changedUntil). Returns: uuid, name, status, createdAt, updatedAt.
- **create_a_raken_classification** — Create a classification. Returns: uuid, name, status, createdAt, updatedAt. Required: name.
- **list_all_raken_budgets** — List budgets for a project: budgeted hours and materials per cost code. Returns: costCode, budgetedHours, budgetedMaterials. Required: projectUuid.
- **list_all_raken_checklist_types** — List checklist types, filterable by class and status. The maximum limit is 100. Returns: uuid, createdAt, status, class, name, createdBy, updatedAt.
- **list_all_raken_user_infos** — Get the profile of the Raken user who authorized this connection (the user behind the access token). Returns: sub, firstName, lastName, email, role, companyUuid.
- **list_all_raken_shifts** — List shifts, optionally filtered by project and status. Returns: uuid, code, name, status.
- **create_a_raken_shift** — Create a shift. The code is at most 5 characters and the name at most 30. Returns: uuid, code, name, status. Required: code, name.
- **update_a_raken_shift_by_id** — Update a shift by UUID. PATCH semantics: a null value removes a field. Returns: uuid, code, name, status. Required: id.
- **list_all_raken_toolbox_talks** — List toolbox talks, filterable by status (ACTIVE only by default). Returns: uuid, name, status, contentUrl.
- **list_all_raken_toolbox_talks_pasts** — List past toolbox talks, filterable by project, talk, attending members and creation date range (capped to 31 days). Returns: uuid, project, scheduleDate, status, talk, type, attendees, signaturePhotos.
- **list_all_raken_daily_reports** — List daily reports for a project by date range, status (COMPLETED only by default) or last-updated window (capped to 31 days). Returns: uuid, status, projectUuid, reportDate, createdBy, updatedBy, signedBy, signedAt. Required: projectUuid.
- **list_all_raken_observations** — List observations. One of projectUuids or the deprecated projectUuid is required. Filter by status, category, type, priority, created range (capped to 31 days) or last-updated window. Returns: uuid, assignees, attachments, category, createdAt, createdBy, description, location.
- **get_single_raken_observation_by_id** — Get one observation by UUID. Returns: uuid, assignees, attachments, category, createdAt, createdBy, description, location. Required: id.
- **list_all_raken_certification_types** — List certification types, searchable by name and description (query) and filterable by created or updated ranges (capped to 31 days). Returns: uuid, name, description, createdBy, updatedBy, createdAt, updatedAt.
- **list_all_raken_member_projects** — List the projects a member is assigned to (ACTIVE projects only unless statuses is set). Returns: uuid, name, teamType. Required: member_uuid.
- **create_a_raken_member** — Create a member: a worker (ROLE_WORKER) or a team member who can log in. Email is required only for team members, who receive an invite. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: firstName, lastName, role, projectUuids.
- **get_single_raken_member_by_id** — Get one member by UUID, including time settings, project UUIDs and certifications. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: id.
- **list_all_raken_members** — List members, filterable by query, status (ACTIVE only by default), project, classification, role or last-updated window. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title.
- **update_a_raken_member_by_id** — Update a member by UUID. PATCH semantics: a null value removes a field. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: id.
- **list_all_raken_checklists** — List checklists, filterable by project, status (COMPLETED by default), creator, template, type, created range or checklist date range. The maximum limit is 100. Returns: uuid, name, projectUuid, templateUuid, pdfUrl, createdAt, updatedAt, status.
- **get_single_raken_checklist_by_id** — Get one checklist by UUID, including its sections, questions and responses. Returns: uuid, name, projectUuid, templateUuid, pdfUrl, createdAt, updatedAt, status. Required: id.
- **list_all_raken_checklists_templates** — List checklist templates, filterable by status (ACTIVE by default) and checklist type. The maximum limit is 100. Returns: uuid, name, createdAt, updatedAt, status, checklistType.
- **create_a_raken_certification** — Create a certification of a given certification type. Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType. Required: name, certificationTypeUuid.
- **list_all_raken_certifications** — List certifications, filterable by certification type and by created or updated ranges (capped to 31 days). Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType.
- **update_a_raken_certification_by_id** — Update a certification by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType. Required: id, name, certificationTypeUuid, certificationTypeName.
- **create_a_raken_cost_code** — Create a cost code for a project. Returns: uuid, code, division, description, createdAt, updatedAt. Required: code, division, projectUuid.
- **list_all_raken_cost_codes** — List cost codes, optionally for one project (projectUuid) or a last-updated window (capped to 31 days). Returns: uuid, code, division, description, createdAt, updatedAt.
- **update_a_raken_cost_code_by_id** — Update a cost code's division or description by UUID. PATCH semantics: a null value removes a field. Returns: uuid, code, division, description, createdAt, updatedAt. Required: id.
- **create_a_raken_group** — Create a group. Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name. Required: name, class.
- **list_all_raken_groups** — List groups, searchable by name and class and filterable by class name, created or updated ranges (capped to 31 days). Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name, projectUuids.
- **update_a_raken_group_by_id** — Update a group by UUID. PATCH semantics: a null value removes a field. Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name, projectUuids. Required: id, name, class.
- **list_all_raken_project_members** — List the members assigned to a project, filterable by status (ACTIVE only by default), classification and role. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: project_uuid.
- **create_a_raken_members_project_assignment** — Batch add, remove or replace project assignments for up to 100 members (projectAssignmentType). Pick projects by projectUuids or projectState. Best effort: problems are ignored, so a 200 does not prove every change applied. Returns HTTP 200 with no documented response body. Required: memberUuids, projectAssignmentType.

## How it works

1. **Link your customer's Raken account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Raken.** The Proxy API is a 1-to-1 mapping of the Raken API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync field time cards into payroll systems** — Payroll and workforce management platforms can pull approved time cards, work logs, pay types, and cost codes from Raken to automate weekly payroll runs and certified payroll reporting without manual data entry.
- **Automate project provisioning from ERPs and accounting systems** — ERP and accounting platforms can push new projects, cost codes, members, and crew assignments into Raken the moment a contract is signed, so field teams arrive on site with everything pre-configured in their mobile app.
- **Power real-time safety and risk dashboards** — Safety, compliance, and insurance SaaS tools can monitor observations, checklists, toolbox talks, and worker certifications from Raken to flag hazards, track OSHA compliance, and verify that workers have valid credentials for their assignments.
- **Feed job profitability and FP&A dashboards** — Financial analytics platforms can sync production insights, material logs, and equipment logs from Raken to deliver executives real-time budget vs. actual hour tracking and predictive profitability views per project.
- **Archive daily reports for audit and litigation defense** — Document management and compliance platforms can pull daily reports, checklists, and completed toolbox talks on a schedule to maintain an immutable off-site record of job site conditions.

## What you can build

- **Approved time card ingestion with cost code mapping** — Poll Raken time cards and work logs, map them to pay types and cost codes, and route labor hours into your payroll or job costing engine.
- **One-click project provisioning** — When a project is created in your system, automatically create the Raken project, seed its cost codes, and assign the crew via members project assignment.
- **Safety incident webhook pipeline** — Watch Raken observations and checklists and automatically open incident tickets or alerts in your platform when high-priority hazards or failed inspections are logged.
- **Certification expiry monitoring** — Sync worker certifications and certification types from Raken to proactively flag expired or missing credentials before assigning workers to specialized tasks.
- **Production insights profitability dashboard** — Pull budgeted vs. actual hours and projected gain/loss at the cost code level to render live project margin dashboards for operations and finance teams.
- **Material and equipment usage reporting** — Aggregate material logs, equipment logs, and daily reports from Raken into analytics or back-office tools to track consumption and utilization per project.

## FAQs

### How does authentication work for the Raken integration?

Truto handles the Raken OAuth flow end-to-end, including token refresh and the OAuth revoke endpoint. Your end users connect their Raken account through a hosted or embedded flow, and your app receives a secure connection reference to call Raken on their behalf.

### How do we keep data in sync without re-fetching everything?

Raken's API uses last-updated windows (changedSince / changedUntil) capped at 31 days for entities like projects, work logs, material logs, and classifications. Truto supports frequent scheduled polling against these parameters so you can run hourly or daily delta syncs and maintain state efficiently.

### Can we write data back to Raken, not just read from it?

Yes. The integration supports create and update operations on projects, members, materials, material units, shifts, classifications, cost codes, groups, certifications, and member-to-project assignments, so you can fully automate project onboarding from your system into Raken.

### How do we pull time card data mapped to cost codes and pay types?

Raken nests time cards under work logs. You can list work logs, time cards, pay types, and cost codes separately through Truto and join them in your system to produce payroll-ready records tied to the right project, worker, and labor category.

### What safety data can we access?

You can list observations (with single observation lookup), checklists and checklist templates, checklist types, past toolbox talks with completion records, upcoming toolbox talks, certifications, and certification types to power real-time safety monitoring and compliance archives.

### Are there caveats when bulk-assigning members to projects?

Yes. Raken's bulk member assignment endpoint is best-effort: individual failures are silently ignored by the API, so your integration should validate assignments afterward by listing project members to confirm the crew was fully provisioned.

## Related reading

- [Connect Raken to Claude: Manage Safety Compliance and Site Resources](https://truto.one/blog/connect-raken-to-claude-manage-safety-compliance-and-site-resources/) — Learn how to connect Raken to Claude via a managed MCP server. This step-by-step guide covers dynamic tool generation, API quirks, and building safety audit workflows.
- [Connect Raken to ChatGPT: Analyze Field Reports and Project Status](https://truto.one/blog/connect-raken-to-chatgpt-analyze-field-reports-and-project-status/) — Learn how to connect Raken to ChatGPT using Truto's managed MCP server. Automate construction field reports, site safety observations, and project labor tracking with AI agents.
- [Connect Raken to AI Agents: Sync Workforce Hours and Material Logs](https://truto.one/blog/connect-raken-to-ai-agents-sync-workforce-hours-and-material-logs/) — Connect Raken to AI Agents using Truto's tools endpoint to autonomously sync workforce hours, track material logs, and manage field operations.
