Skip to content

ATS · Beta

Lever
API integration

Ship ATS features without building the integration. Full Lever API access via Proxy, normalized data through Unified APIs, and 100+ 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 us
Lever

Use Cases

Why integrate with Lever

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

01

Automate candidate screening when applications hit specific pipeline stages

SaaS companies offering AI screening or assessment tools can monitor Lever pipeline stages via Truto's Unified ATS API and automatically trigger evaluations when candidates reach a configured stage — eliminating manual handoffs between recruiter workflows and external tools.

02

Push external assessment results and AI scores directly into Lever

Assessment platforms, background check providers, and AI screening tools need to write results back into the candidate's Lever profile so recruiters never leave their ATS. Truto's Activities, Tags, and Attachments resources enable posting scorecards, status updates, and PDF reports to the candidate timeline.

03

Sync job postings to external distribution channels in real time

Job board aggregators and programmatic advertising platforms can read active Jobs from Lever through Truto and distribute them across thousands of channels, then write back inbound applicants as new Candidates and Applications — making external sourcing seamless for recruiters.

04

Build interview scheduling workflows using Lever's user and application data

Scheduling tools need to know which candidates are ready for interviews and who the interviewers are. By reading Applications, Job Interview Stages, and Users through Truto, scheduling SaaS products can orchestrate panel availability checks and write confirmed interview details back as Activities.

05

Inject sourced candidates into Lever without creating duplicates

Sourcing and talent intelligence platforms can use Truto's Candidates and Applications resources to push passive candidates into Lever, leveraging existing candidate data to handle deduplication and ensure clean pipeline data for recruiting teams.

What You Can Build

Ship these features with Truto + Lever

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

01

Stage-triggered assessment delivery

Automatically send coding tests or skill assessments when a Lever candidate reaches a configured Job Interview Stage, using real-time reads of Applications and stage data.

02

AI scorecard write-back to candidate profiles

Post structured AI evaluation summaries and match scores as Activities on the candidate's Lever timeline, with Tags like 'Tier-1-Match' for native filtering by recruiters.

03

Resume and attachment extraction pipeline

Download candidate resumes and portfolios via the Attachments resource to feed into parsing engines, AI screeners, or compliance review workflows.

04

One-click candidate injection from external sources

Create new Candidates, Applications, and Attachments in Lever when someone applies on a third-party job board, so the record appears as if they applied directly on the company's career page.

05

Interviewer panel sync via User Directory

Pull the full list of Lever Users — recruiters, hiring managers, and interviewers — through the Unified User Directory API to map interview panels, assign tasks, or check permissions in your product.

06

Dynamic job and stage mapping UI

Fetch a customer's Jobs and Job Interview Stages to render dropdowns in your product's configuration screen, letting end users map your workflows to their specific Lever pipeline without manual entry.

SuperAI

Lever 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_lever_users

List users in your Lever account. Returns each user's id, name, email, username, accessRole, and createdAt. Only active users are included by default.

get_single_lever_user_by_id

Get a single Lever user by id. Returns the full user object including id, name, email, accessRole, and deactivatedAt. Required: id.

create_a_lever_user

Create a user in Lever. Returns the created user object including id, name, email, accessRole, and createdAt. Required: name, email. New users get the Interviewer access role by default and no invite email is sent.

update_a_lever_user_by_id

Update a Lever user by id. Returns the updated user object including id, name, email, accessRole, and createdAt. Required: id.

lever_users_deactivate

Deactivate a Lever user by user_id. The user can no longer log in but remains in the system for historical record keeping. Returns: id, name, username, email, createdAt, deactivatedAt, accessRole, photo, externalDirectoryId, linkedContactIds, jobTitle, managerId. Required: user_id.

lever_users_reactivate

Reactivate a previously deactivated Lever user. Returns the reactivated user record including id, name, username, email, accessRole, and jobTitle. Required: user_id.

list_all_lever_opportunities

List all pipeline opportunities for contacts in your Lever account. Returns each opportunity's id, name, contact, emails, stage, origin, and createdAt (epoch milliseconds).

get_single_lever_opportunity_by_id

Get a single Lever opportunity by id. Returns the full opportunity object including id, name, contact, emails, stage, tags, applications, and createdAt (epoch milliseconds). Required: id.

lever_opportunities_move

Move a Lever opportunity to a different pipeline stage (change its current stage). Returns a data object containing the noteId of the stage-change note. Required: opportunity_id, stage.

create_a_lever_opportunity

Create a Lever opportunity (and its contact, deduplicated by email) and optionally apply it to a posting. Returns the created opportunity. Required: perform_as.

lever_opportunities_archive

Archive a Lever opportunity with an archive reason, or unarchive it by sending reason null. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id.

lever_opportunities_add_links

Add links on the contact of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, links.

lever_opportunities_remove_links

Remove links from the contact of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, links.

lever_opportunities_add_tags

Add tags on the opportunity of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, tags.

lever_opportunities_remove_tags

Remove tags from the opportunity of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, tags.

lever_opportunities_add_sources

Add sources on the opportunity of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, sources.

lever_opportunities_remove_sources

Remove sources from the opportunity of a Lever opportunity. Returns the updated opportunity. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, sources.

list_all_lever_stages

List all pipeline stages in your Lever account. Returns: id, text.

get_single_lever_stage_by_id

Retrieve a single pipeline stage in Lever by id. Returns: id, text. Required: id.

list_all_lever_postings

List all job postings in your Lever account. Returns: id, createdAt, updatedAt, noteId. Filterable by tag.

get_single_lever_posting_by_id

Get a single job posting by id. Returns: id, createdAt, updatedAt, noteId. Required: id.

create_a_lever_posting

Create a job posting in your Lever account. Returns the created posting including id, text, state, categories, content, salaryRange, and urls. Requires text plus categories team, department, and location; state defaults to draft. API-created postings skip the approvals chain and cannot be confidential.

update_a_lever_posting_by_id

Update a Lever posting by id. Returns the updated posting object including its id, text, state, categories, content, and salaryRange. Required: id.

lever_postings_application_questions

Get the application questions and form fields for a Lever posting. Returns: id, type, text, description, required, prompt, options. Required: posting_id.

lever_postings_apply

Apply a candidate to a specific job posting in Lever on their behalf. Returns: noteId. Required: posting_id. Only postings in published or internal state accept applications; application fields must match the posting's application form, and file fields must reference the uri from a prior file upload.

list_all_lever_resumes

List all resumes attached to a Lever opportunity, including uploaded file details and the parsed resume content. Returns: id, createdAt, file, parsedData, expiresAt, filename, uri, size. Required: opportunity_id.

get_single_lever_resume_by_id

Retrieve a single resume for a Lever opportunity by id. Returns the resume's id, createdAt timestamp, file metadata (name, ext, downloadUrl, uploadedAt, status, size), and parsedData with the candidate's positions and schools. Required: opportunity_id and id.

list_all_lever_archive_reasons

List all archive reasons in your Lever account. Returns each reason's id, text, status, and type. Optionally filter by type (hired or non-hired).

get_single_lever_archive_reason_by_id

Get a single archive reason in Lever by id. Returns: id, text, status, type. Required: id.

list_all_lever_offers

List offers for a Lever opportunity. Returns each offer's id, status, creator, createdAt, fields, and the sentDocument/signedDocument download links when present. Required: opportunity_id.

list_all_lever_applications

List applications for a specific Lever opportunity. Returns: id, createdAt, links, noteId. Required: opportunity_id. Deprecated upstream but still maintained; Lever recommends using List all opportunities with contact_id and expand=applications instead.

get_single_lever_application_by_id

Get a single application by id for a Lever opportunity. Returns: id, createdAt, links, noteId. Required: opportunity_id, id.

list_all_lever_notes

List all notes on a candidate profile for a Lever opportunity. Returns note objects with: id, text, fields (typed note entries with value, score, stage, user), secret, and createdAt. Required: opportunity_id.

get_single_lever_note_by_id

Retrieve a single note on a Lever opportunity. Returns the note object with id, text, comment fields (value, score, stage, user), secret, completedAt, and createdAt. Required: opportunity_id and id.

create_a_lever_note

Create a note on a Lever opportunity. Returns the created note: id, text, fields (comment entries with value, user, score, stage), secret, and createdAt. Required: opportunity_id.

delete_a_lever_note_by_id

Delete a note from a Lever opportunity. Only notes created via the API can be deleted. Returns an empty 204 response on success. Required: opportunity_id and id.

update_a_lever_note_by_id

Update a note on a Lever opportunity; only notes created via the API can be updated. Returns the updated note. Required: id, opportunity_id.

list_all_lever_interviews

List all interviews for a lever opportunity. Returns: id, panel, subject, note, interviewers, timezone, createdAt, date, duration, location, feedbackTemplate, feedbackForms, feedbackReminder, user, stage, canceledAt, postings, conferences. Required: opportunity_id.

get_single_lever_interview_by_id

Get a single interview on a lever opportunity by id. Returns: id, panel, subject, note, interviewers, timezone, createdAt, date, duration, location, feedbackTemplate, feedbackForms, feedbackReminder, user, stage, canceledAt, postings, conferences. Required: id and opportunity_id.

create_a_lever_interview

Create a new interview for a lever opportunity on an existing panel. Returns the created interview including id, panel, subject, date, duration, interviewers, and stage. Required: opportunity_id, panel. New interviews can only be created on panels where externallyManaged == true.

update_a_lever_interview_by_id

Update an interview on a lever opportunity by id. Returns the updated interview including id, panel, subject, date, duration, interviewers, and stage. Required: id and opportunity_id.

delete_a_lever_interview_by_id

Delete an interview from a lever opportunity by id. Returns an empty 204 response on success. Required: id and opportunity_id.

list_all_lever_feedback

List all feedback forms for a Lever opportunity. Returns feedback records including id, type, text, instructions, fields (with submitted values and options), interview, panel, user, and created/updated timestamps. Includes interview, assignment, and share feedback types. Required: opportunity_id.

get_single_lever_feedback_by_id

Retrieve a single feedback form from a Lever opportunity by id. Returns the feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id, id.

create_a_lever_feedback

Create a feedback form for a Lever opportunity. Returns the created feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id and a fields array of field id/value pairs.

update_a_lever_feedback_by_id

Update a feedback form on a Lever opportunity. Returns the updated feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id, id, and a fields array of field id/value pairs.

delete_a_lever_feedback_by_id

Delete a feedback form from a Lever opportunity by id. Returns an empty 204 response on success. Required: opportunity_id, id.

create_a_lever_upload

Upload a file to Lever for temporary storage (e.g. a resume or a file answer for a posting application); include the returned uri in the apply-to-posting request, where the file is copied over to the application. Returns: id, uri, filename, size, expiresAt.

list_all_lever_files

List all files uploaded to a Lever opportunity, such as cover letters, portfolios, and images. Returns: id, downloadUrl, ext, name, uploadedAt, status, size. Required: opportunity_id.

get_single_lever_file_by_id

Retrieve the metadata for a single file uploaded to a Lever opportunity. Returns: id, downloadUrl, ext, name, uploadedAt, status, size. Required: opportunity_id and id (the file UID).

lever_files_download

Download the content of a file uploaded to a Lever opportunity. Returns the raw binary file content with the file's native content type (no JSON body). Required: opportunity_id, file_type, and file_id. Returns 422 if the file could not be processed by Lever.

create_a_lever_file

Upload a file (multipart/form-data) to a Lever opportunity. Returns the uploaded file: id, name, ext, downloadUrl, uploadedAt, status and size. Use perform_as to act on behalf of a Lever user. Required: opportunity_id, perform_as, file.

delete_a_lever_file_by_id

Delete a file from a Lever opportunity. Returns an empty 204 response on success. Use perform_as to act on behalf of a Lever user. Required: id, opportunity_id, perform_as.

list_all_lever_tags

List all tags in your Lever account. Returns each tag with its text and usage count. No required parameters.

list_all_lever_sources

List all candidate sources in your Lever account, each entry representing a source applied to candidates. Returns: text, count.g. "Referral"), count (number of candidates tagged with this source).

list_all_lever_feedback_templates

List all active feedback templates for a Lever account, including the default 'no-feedback' template present on every account. Returns: id, text, instructions, group, stage, fields, createdAt, updatedAt.

get_single_lever_feedback_template_by_id

Retrieve a single Lever feedback template by id. Returns id, text, group, instructions, fields, createdAt and updatedAt. Required: id.

create_a_lever_feedback_template

Create a Lever feedback template. Returns the created template with its id. Required: text, fields.

update_a_lever_feedback_template_by_id

Replace a Lever feedback template by id; only templates created via the API can be updated. Returns the updated template. Required: id, text, fields.

delete_a_lever_feedback_template_by_id

Delete a Lever feedback template by id; only templates created via the API can be deleted. Returns an empty 204 response on success. Required: id.

list_all_lever_form_templates

List all active profile form templates for a Lever account. Returns each template's id, text, instructions, group, secretByDefault, fields, createdAt, and updatedAt. Use include to limit the response to just id, text, and/or group.

get_single_lever_form_template_by_id

Retrieve a single Lever profile form template by id. Returns id, text, group, instructions, fields, createdAt and updatedAt. Required: id.

create_a_lever_form_template

Create a Lever profile form template. Returns the created template with its id. Required: text, fields.

update_a_lever_form_template_by_id

Replace a Lever profile form template by id; only templates created via the API can be updated. Returns the updated template. Required: id, text, fields.

delete_a_lever_form_template_by_id

Delete a Lever profile form template by id; only templates created via the API can be deleted. Returns an empty 204 response on success. Required: id.

list_all_lever_requisitions

List all requisitions in your Lever account. Returns requisition records including id, requisitionCode, name, status, headcountHired, headcountTotal, compensationBand, approval, and customFields. No required parameters.

get_single_lever_requisition_by_id

Retrieve a single Lever requisition by id. Returns id, requisitionCode, name, status, headcountHired, headcountTotal, compensationBand, hiringManager, owner, approval, customFields and postings. Required: id.

create_a_lever_requisition

Create a Lever requisition, typically pushed from an HRIS. Custom fields are validated against the account requisition fields. Returns the created requisition with its Lever id. Requires API management of requisitions to be enabled in Lever requisition settings. Required: headcountTotal, name, requisitionCode.

update_a_lever_requisition_by_id

Replace a Lever requisition by id. Send the entire resource: omitted fields are deleted or reset to defaults, and status cannot move back to draft once open, closed or onHold. Returns the updated requisition. Requires API management of requisitions to be enabled in Lever requisition settings. Required: id, headcountTotal, name, requisitionCode.

delete_a_lever_requisition_by_id

Delete a Lever requisition by id. Returns an empty 204 response on success. Requires API management of requisitions to be enabled in Lever requisition settings. Required: id.

list_all_lever_requisition_fields

List the requisition field schema configured in your Lever account, which is used to validate customFields on requisitions. Returns: id, type, applicationId.

get_single_lever_requisition_field_by_id

Retrieve a single requisition custom field definition by id (the field key, e.g. cost_center). Returns id, text, type, isRequired, subfields and options. Required: id.

create_a_lever_requisition_field

Create a requisition custom field definition (text, number, date, object or dropdown). Returns the created field. Required: id, text, type.

update_a_lever_requisition_field_by_id

Replace a requisition custom field definition by id. Send the whole object: anything omitted (subfields, options) is permanently deleted. Returns the updated field. Required: id, text, type.

delete_a_lever_requisition_field_by_id

Delete a requisition custom field definition by id. Returns an empty 204 response on success. Required: id.

list_all_lever_deleted_opportunities

List all deleted opportunities in your Lever account. Returns each record's id and deletedAt timestamp. Optional filters: deleted_at_start and deleted_at_end.

list_all_lever_opportunity_panels

List interview panels for a Lever opportunity, each containing the series of interviews scheduled for a candidate in a stage. Returns panels with id, applications, interviews, stage, start/end times, timezone, and note. Required: opportunity_id.

get_single_lever_opportunity_panel_by_id

Retrieve a single interview panel on a Lever opportunity. Returns id, applications, start, end, timezone, stage, note, externallyManaged and interviews. Required: id, opportunity_id.

create_a_lever_opportunity_panel

Create an externally managed interview panel, with its interviews, on a Lever opportunity. Returns the created panel. Required: opportunity_id, perform_as, timezone, interviews.

update_a_lever_opportunity_panel_by_id

Replace an externally managed interview panel on a Lever opportunity. Send the entire object: missing fields are deleted; existing interviews keep their id, new ones have none. Returns the updated panel. Required: id, opportunity_id, perform_as, timezone, interviews.

delete_a_lever_opportunity_panel_by_id

Delete an externally managed interview panel from a Lever opportunity. Returns an empty 204 response on success. Required: id, opportunity_id, perform_as.

list_all_lever_opportunity_referrals

List all referrals for a Lever opportunity. Returns referral records including id, type, text, instructions, submitted form fields, and createdAt/completedAt timestamps. Required: opportunity_id.

get_single_lever_opportunity_referral_by_id

Retrieve a single referral on a Lever opportunity. Returns id, type, text, instructions, baseTemplateId, fields, referrer, user, stage, createdAt and completedAt. Required: id, opportunity_id.

list_all_lever_opportunity_forms

List profile forms attached to a Lever opportunity. Returns each form's id, text, instructions, fields (with values), stage, user, and completedAt/createdAt timestamps. Required: opportunity_id.

get_single_lever_opportunity_form_by_id

Retrieve a single profile form on a Lever opportunity. Returns id, type, text, instructions, baseTemplateId, fields, user, stage, createdAt and completedAt. Required: id, opportunity_id.

create_a_lever_opportunity_form

Create a completed profile form on a Lever opportunity from a profile form template. Returns the created form. Required: opportunity_id, baseTemplateId, fields.

list_all_lever_eeo_pii

List EEO responses with personally identifiable information from Lever applications. Returns: gender, race, veteran, disability, disabilitySignatureDate, appliedAt, eeoSurveyRespondedAt, applicationArchivedAt, applicationArchivedBy, currentStage, contact, opportunityId, posting, hiringManager, origin, source, hiredDate, requisitionCodes. Disability data is collected only for US contractors.

list_all_lever_audit_events

List audit events recorded in your Lever account, sorted newest first, for security monitoring and investigations. Returns: id, createdAt, type, user, target, meta, data. Audit Events add-on required.

get_single_lever_contact_by_id

Retrieve a single Lever contact (the person behind one or more opportunities) by id. Returns id, name, headline, location, emails, phones and isAnonymized. Required: id.

update_a_lever_contact_by_id

Update a Lever contact by id. location accepts a free-text string, or an object of components (country required, ISO 3166-1 alpha-2); omitted object components are cleared. Returns the updated contact. Required: id.

list_all_lever_disposition_stages

List the account's complete pipeline stage configuration and archive reasons in one call. Returns an object with stages (id, text, pipeline, rank, hasInterview) and archiveReasons (id, text, type, status). No required parameters.

list_all_lever_webhooks

List all webhooks created via the Lever API. Returns id, url, event, configuration (conditions), createdAt and updatedAt. No required parameters.

create_a_lever_webhook

Create a Lever webhook for one event. A Super Admin must also enable the webhook group in Lever settings before data is sent. Returns the webhook with id, event, url and configuration.signatureToken. Required: url, event.

lever_webhooks_bulk_update

Update one or more webhooks that were created via the API, in one request. Returns the updated webhooks (id, url, event, configuration, createdAt, updatedAt). Required: data.

delete_a_lever_webhook_by_id

Delete a webhook that was created via the API, by id. Returns an empty 204 response on success. Required: id.

create_a_lever_requisition_field_option

Append options to a dropdown requisition field without replacing the whole field. Returns the created option(s) with id and text. Required: requisition_field_id, values.

lever_requisition_field_options_bulk_update

Rename existing options of a dropdown requisition field by option id. Returns the full requisition field with all options. Required: requisition_field_id, values.

lever_requisition_field_options_bulk_delete

Delete options from a dropdown requisition field by option id. Returns an empty 204 response on success. Required: requisition_field_id, values.

list_all_lever_opportunity_file_actions

List file add/remove and resume-import actions on a Lever opportunity, newest first. Returns id, opportunityId, type, occurredAt, createdAt, user and meta. Required: opportunity_id.

list_all_lever_deleted_postings

List Lever postings that were deleted, optionally within a deletedAt range. Returns id and deletedAt. Required: deleted_at_start, deleted_at_end.

list_all_lever_deleted_applications

List Lever applications that were deleted, optionally within a deletedAt range. Returns id, deletedAt, opportunityId and postingId. Required: deleted_at_start, deleted_at_end.

list_all_lever_posting_users

List the Lever users who have access to a posting and their roles on it. Returns posting, users and roles. Required: posting_id.

get_single_lever_diversity_survey_by_id

Retrieve the diversity survey shown for a posting (id is the posting id), optionally for a candidate country. Returns id, text, instructions, candidateLocations, postingLocations and fields. Required: id.

list_all_lever_eeo_responses

List anonymous EEO (Equal Employment Opportunity) survey responses, without candidate PII. Returns appliedAt, currentStage, gender, race, veteran, disability and archive details. No required parameters.

Why Truto

Why use Truto’s MCP server for Lever

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 1000+ 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 Lever

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Users

The User object represents a User.

View Docs

Unified ATS API

Activities

The activity on a candidate performed by a user.

View Docs

Applications

The applications represent an application for a job.

View Docs

Attachments

The attachments represent an attachment for a candidate.

View Docs

Candidates

The candidates represent a candidate.

View Docs

Job Form Fields

The form fields used to apply to a job.

View Docs

Job Interview Stages

The job interview stages represent a job interview stage.

View Docs

Jobs

The jobs represent a job.

View Docs

Tags

The tags represent a tag for a candidate.

View Docs

Users

The users represent a user.

View Docs

How It Works

From zero to integrated

Start with Lever in a free sandbox, usually ready within one business day. No boilerplate, no maintenance burden.

01

Link your customer’s Lever account

Use Truto’s frontend SDK to connect your customer’s Lever 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 Lever

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

04

Unified response format

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

FAQs

Common questions about Lever on Truto

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

What authentication method does the Lever integration use through Truto?

Lever uses OAuth 2.0 for authentication. Truto manages the full OAuth flow including token refresh — notably, Lever's access tokens expire every hour, and Truto handles this automatically so your integration doesn't break mid-sync.

How does Truto handle Lever's rate limits?

Lever enforces strict API rate limits. Truto manages rate limiting, retry logic, and backoff strategies transparently, so your application doesn't need to implement custom throttling code when reading or writing Lever data.

What Unified APIs cover Lever, and which resources are available?

Lever is supported under two Unified APIs: the Unified ATS API (Activities, Applications, Attachments, Candidates, Job Form Fields, Job Interview Stages, Jobs, Tags, Users) and the Unified User Directory API (Users). These cover the most common read and write patterns for ATS integrations.

How does Truto handle Lever's unique Opportunity vs. Contact data model?

Lever uses a non-standard data model where 'Opportunities' represent job-specific applications and 'Contacts' represent people. Truto's Unified ATS API normalizes this into standard Candidates and Applications resources, so you don't need to learn or manage Lever's proprietary entity relationships.

Can I write data back to Lever through Truto, or is it read-only?

Truto supports both read and write operations on Lever resources. Common write patterns include creating Candidates and Applications, posting Activities (internal notes with scores or summaries), adding Tags, and uploading Attachments like PDF reports or offer letters.

Does Truto handle pagination when pulling large datasets from Lever?

Yes. Truto abstracts Lever's pagination logic entirely. When you query resources like Candidates or Applications, Truto handles cursor-based pagination behind the scenes and returns consistent, complete result sets through the Unified API.

Lever

Get Lever integrated into your app

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