Skip to content

HRIS

Lucca
API integration

Ship HRIS features without building the integration. Full Lucca API access via Proxy, normalized data through Unified APIs, and 30+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
Lucca

Use Cases

Why integrate with Lucca

Common scenarios for SaaS companies building Lucca integrations for their customers.

01

Automate employee provisioning and deprovisioning

SaaS companies offering identity, access, or IT asset management can sync Lucca's employee lifecycle data — including hire dates, department assignments, and termination status — to automatically provision or revoke accounts, licenses, and equipment without manual HR handoffs.

02

Mirror complex organizational structures

Products that need to enforce policies, route approvals, or segment dashboards by org structure can pull Lucca's legal entities, business establishments, and department hierarchies to accurately represent multi-entity, multi-location companies common in European mid-market.

03

Trigger real-time workflows on HR events

Instead of polling for changes, SaaS apps can programmatically create and manage Lucca webhook endpoints through Truto to react instantly when employees are created, roles change, or probation periods end — powering onboarding automations, review cycle setup, and compliance alerts.

04

Sync job and career data for workforce planning

Resource planning, performance management, and compensation platforms can leverage Lucca's granular distinction between employments, job positions, probationary periods, and manager hierarchies to build accurate career timelines and reporting chains.

05

Enforce role-based policies using HR metadata

Travel, expense, or benefits platforms can pull occupation categories, job qualifications, and legal entity details from Lucca to dynamically apply the correct policy tier based on an employee's role, seniority, and jurisdiction.

What You Can Build

Ship these features with Truto + Lucca

Concrete product features your team can ship faster by leveraging Truto’s Lucca integration instead of building from scratch.

01

One-click org chart sync

Automatically build and maintain your product's organizational hierarchy by syncing Lucca departments, legal entities, and business establishments through Truto's Unified HRIS API for Companies, Groups, and Locations.

02

Real-time employee lifecycle webhooks

Programmatically register, update, and monitor Lucca webhook endpoints and delivery attempts directly from your app to trigger onboarding, offboarding, or role-change workflows the moment they happen.

03

Manager hierarchy mapping for approval chains

Pull job positions with manager relationships from Lucca to automatically configure multi-level approval workflows in your product without customers manually setting up reporting lines.

04

Probation period tracking and review triggers

Sync probationary period start and end dates from Lucca to automatically schedule check-ins, generate review templates, or flag compliance deadlines inside your platform.

05

Employee profile enrichment with portraits

Fetch employee profile photos via Lucca's portrait API to populate user avatars across your product, giving customers a more personalized and familiar experience without manual uploads.

06

Dynamic policy assignment by job qualification and entity

Combine Lucca's occupation categories, job qualifications, and legal entity data to automatically assign the correct expense limits, travel tiers, or benefit plans based on each employee's role and jurisdiction.

SuperAI

Lucca 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_lucca_employees

List employees in Lucca. Returns id, type, url, remoteId, portrait, givenName, familyName, employeeNumber, status, email, birthDay, phoneNumber, applicableEmployment, applicableJobPosition, createdAt, lastUpdatedAt, and links fields in the response.

get_single_lucca_employee_by_id

Get detailed information about a specific employee in Lucca using id. Returns fields such as id, type, url, remoteId, portrait, givenName, familyName, employeeNumber, status, email, birthDay, phoneNumber, applicableEmployment, applicableJobPosition, createdAt, lastUpdatedAt, links, and embedded with employment and job-position information.

list_all_lucca_legal_entities

List legal-entities in Lucca. Returns a paginated array of legal-entity objects with fields: id, type, url, legalName, remoteId, isArchived, countryCode, currencyCode, taxIdentificationNumber, industryCode, createdAt, lastUpdatedAt, lastArchivedAt, and links (including businessEstablishments) in the response.

get_single_lucca_legal_entity_by_id

Get a specific legal-entity in Lucca by id. Returns id, type, url, legalName, remoteId, isArchived, countryCode, currencyCode, taxIdentificationNumber, industryCode, createdAt, lastUpdatedAt, lastArchivedAt, links, and embedded fields.

list_all_lucca_business_establishments

List business-establishments in Lucca. Returns id, type, url, name, remoteId, legalEntity, taxIdentificationNumber, address, timezoneId, holidaysCalendar, isArchived, lastArchivedAt, createdAt, lastUpdatedAt fields for each business-establishment.

get_single_lucca_business_establishment_by_id

Retrieve a business-establishment in Lucca by id. Returns id, type, url, name, remoteId, legalEntity, taxIdentificationNumber, address, timezoneId, holidaysCalendar, isArchived, lastArchivedAt, createdAt, lastUpdatedAt, links, and embedded fields in the response.

list_all_lucca_departments

List departments in Lucca. Returns items with fields: id (department identifier), type (resource type), url (department URL), name, remoteId, isArchived, description, parent, level (department depth), manager, sortOrder, and links. Response also includes totalCount and pagination links.

get_single_lucca_department_by_id

Get a department in Lucca by id. Returns id, type, url, name, description, remoteId, isArchived, parent, level, manager, sortOrder, links, and embedded fields in the response.

list_all_lucca_employee_personal_records

List employee-personal-records in Lucca. Returns id, type, url, associated employee, title, legalGender, birthDate, insuranceNumber, nationalitiesCountryCodes, bankAccount, phoneNumber, email, and links for each record in the response.

get_single_lucca_employee_personal_record_by_id

Retrieve an employee-personal-record in Lucca by id. Returns fields such as id, type, url, employee, title, legalGender, birthDate, insuranceNumber, nationalitiesCountryCodes, bankAccount, phoneNumber, email, links, and embedded (which includes related employee details).

list_all_lucca_employments

List employments in Lucca. Returns items with id, employee, legalEntity, start and end dates, template, createdAt, lastUpdatedAt, document, and resource links in the response.

get_single_lucca_employment_by_id

Get details about a specific employment in Lucca using id. Returns id, type, url, remoteId, employee, legalEntity, start, end, document, template, createdAt, lastUpdatedAt, links, and embedded fields in the response.

list_all_lucca_job_positions

List job-positions in Lucca. Returns job-positions with fields including id, employment, startsOn, endsOn, businessEstablishment, department, jobTitle, jobQualification, manager, occupationCategory, workingTimeArrangement, notes, changedAttributes, createdAt, and lastUpdatedAt.

get_single_lucca_job_position_by_id

Get a job-position in Lucca by id. Returns job-position details including id, type, url, employment, employee, startsOn, endsOn, businessEstablishment, jobTitle, jobQualification, manager, occupationCategory, workingTimeArrangement, department, document, notes, changedAttributes, createdAt, lastUpdatedAt, links, and embedded resources.

list_all_lucca_probationary_periods

List probationary-periods in Lucca. Returns id, type, url, employment, startsOn, endsOn, initialEndsOn, extendedEndsOn, createdAt, lastUpdatedAt, and links fields for each probationary-period.

get_single_lucca_probationary_period_by_id

Get a probationary-period in Lucca by id. Returns id, type, url, employment reference, startsOn, endsOn, initialEndsOn, extendedEndsOn, createdAt, lastUpdatedAt, links, and embedded fields in the response.

list_all_lucca_occupation_categories

List occupation-categories in Lucca. Returns each occupation-category's id, type, url, title, businessEstablishments, and t9n fields in the response.

get_single_lucca_occupation_category_by_id

Get a specific occupation-category in Lucca by id. Returns fields: id (identifier), type (always 'occupation-category'), url (resource URL), title (unique name), businessEstablishments (applicable business-establishments or null), t9n (translations), links, and embedded.

list_all_lucca_professions

List professions in Lucca. Returns id, type, url, title, isArchived, t9n, and links fields for each profession.

get_single_lucca_profession_by_id

Get details about a specific profession in Lucca by id. Returns id, type, url, title, isArchived, t9n (translations), links, and embedded fields in the response.

list_all_lucca_job_qualifications

List job-qualifications in Lucca. Returns a paginated array of job-qualification objects including id, type, url, title, profession, rank, t9n, createdAt, lastUpdatedAt, and links fields in the response.

get_single_lucca_job_qualification_by_id

Get a job-qualification in Lucca by id. Returns id, type, url, title (unique), profession (profession id, type, url), rank, createdAt, lastUpdatedAt, and links in the response.

list_all_lucca_employment_templates

List employment-templates in Lucca. Returns id, type, url, title, legalEntities, term, and source for each employment-template in the response.

get_single_lucca_employment_template_by_id

Get an employment-template in Lucca by id. Returns id, type, url, title, legalEntities (array of legal-entity references), term, source, t9n (translations), createdAt, lastUpdatedAt, links (extensionDefinitions), and embedded fields.

list_all_lucca_webhook_endpoints

List webhook-endpoints in Lucca. Returns id, type, url, webhookUrl, topics, status fields for each webhook-endpoint in the response. Requires no parameters.

get_single_lucca_webhook_endpoint_by_id

Get a webhook-endpoint in Lucca by id. Returns fields including id, type, url, apiVersion, webhookUrl, topics, status, contentType, createdAt, lastUpdatedAt, and links in the response.

create_a_lucca_webhook_endpoint

Create a webhook-endpoint in Lucca. Returns id, type, url, apiVersion, webhookUrl, topics, status, contentType, secret, createdAt, lastUpdatedAt, and links in the response. All returned fields are required for the created resource.

update_a_lucca_webhook_endpoint_by_id

Update a webhook-endpoint in Lucca. Requires id. Returns id, type, url, apiVersion, webhookUrl, topics, status, contentType, createdAt, lastUpdatedAt, and links fields in the response.

delete_a_lucca_webhook_endpoint_by_id

Delete a webhook-endpoint in Lucca. Requires id. No content is returned in the response upon successful deletion.

list_all_lucca_webhook_deliveries

List webhook-deliveries in Lucca. Returns an array of webhook-delivery objects with fields: id (unique identifier), type, url, nextAttemptAt (next attempt timestamp), attemptsCount, status, event (event reference), webhookEndpoint (endpoint reference), and links (attempt URLs).

get_single_lucca_webhook_delivery_by_id

Get details about a specific webhook-delivery in Lucca. Requires id. Returns id, type, url, nextAttemptAt (next planned attempt UTC), attemptsCount (number of attempts), status (delivered/undelivered/failed), event reference, webhookEndpoint reference, links, and embedded event.

lucca_webhook_deliveries_ping

Send a ping event to a webhook-endpoint in Lucca. Requires webhook_endpoint_id. Returns id, type, url, nextAttemptAt (timestamp of next attempt), attemptsCount, status (delivered/undelivered/failed), event (reference), webhookEndpoint (reference), links (e.g., attempts URL), and embedded event in the response.

list_all_lucca_webhook_delivery_attempts

List webhook-delivery-attempts in Lucca. Returns id (attempt identifier), type (resource type), url (resource URL), signature, webhookDelivery (delivery reference), isSuccessful (status), responseStatusCode, errorResponseBody, createdAt, links, and embedded objects in the response.

get_single_lucca_webhook_delivery_attempt_by_id

Get a webhook-delivery-attempt in Lucca by id. Returns id, type, url, signature, webhookDelivery, isSuccessful, responseStatusCode, errorResponseBody, createdAt, links, and embedded containing webhook-delivery and event data.

get_single_lucca_portrait_by_id

Retrieve a portrait in Lucca by id. Returns id, type, url, employee, fileName, contentType, createdAt, links, and embedded fields in JSON. To download the image file, set Accept: image/* header.

Why Truto

Why use Truto’s MCP server for Lucca

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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 Lucca

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

Companies

Companies represent the companies in HRIS

View Docs

Employees

Represents an employee in HRIS

View Docs

Employments

Employments represent a job position at a company.

View Docs

Groups

Groups represent the groups for an Employee

View Docs

Job Roles

Represent the job roles in a company

View Docs

Locations

Locations represent the locations in HRIS

View Docs

How It Works

From zero to integrated

Go live with Lucca in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Lucca account

Use Truto’s frontend SDK to connect your customer’s Lucca account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

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.

03

Call our API, we call Lucca

Truto’s Proxy API is a 1-to-1 mapping of the Lucca API. You call us, we call Lucca, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Lucca’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Lucca on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication methods does the Lucca integration support through Truto?

Truto handles the authentication flow with Lucca on your behalf. Your end users connect their Lucca accounts through Truto's embedded linking experience, and Truto manages token storage, refresh, and session management so you never deal with auth directly.

Which Lucca data models map to Truto's Unified HRIS API?

Lucca's Legal Entities map to the Unified Companies API, Employees and Employee Personal Records map to the Unified Employees API, Employments map to the Unified Employments API, Departments map to the Unified Groups API, Job Positions and Job Qualifications map to the Unified Job Roles API, and Business Establishments map to the Unified Locations API.

Can I receive real-time updates from Lucca instead of polling?

Yes. Lucca exposes a full webhook infrastructure. Through Truto, you can create, update, delete, and list webhook endpoints, as well as inspect webhook deliveries and individual delivery attempts. You can also use the ping endpoint to test connectivity.

Does the integration support write operations?

For core HR data like employees and departments, the current integration supports read operations (list and get by ID). Write operations are available for webhook management — you can create, update, and delete webhook endpoints programmatically.

How does Truto handle pagination and rate limits for Lucca?

Truto abstracts away Lucca's API-specific pagination logic and rate limiting. When you call a list endpoint through Truto, pagination is handled automatically so you receive complete datasets without managing cursors or page tokens yourself.

Can I access Lucca's granular job data like probationary periods and occupation categories?

Yes. Beyond standard employee and employment data, the integration exposes probationary periods, occupation categories, professions, job qualifications, and employment templates — giving you fine-grained career and compliance data that many HRIS integrations don't surface.

Lucca

Get Lucca integrated into your app

Our team understands what it takes to make a Lucca integration successful. A short, crisp 30 minute call with folks who understand the problem.

Talk to us