ATS · Beta
Lever
API integration
Ship ATS features without building the integration. Full Lever API access via Proxy, normalized data through Unified APIs, and 50+ 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 Lever
Common scenarios for SaaS companies building Lever integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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: offer_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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 850+ 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 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.
Unified ATS API
Activities
The activity on a candidate performed by a user.
Applications
The applications represent an application for a job.
Attachments
The attachments represent an attachment for a candidate.
Candidates
The candidates represent a candidate.
Job Form Fields
The form fields used to apply to a job.
Job Interview Stages
The job interview stages represent a job interview stage.
Jobs
The jobs represent a job.
Tags
The tags represent a tag for a candidate.
Users
The users represent a user.
How It Works
From zero to integrated
Go live with Lever in under an hour. No boilerplate, no maintenance burden.
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.
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 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.
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.
From the Blog
Lever integration guides
Deep dives, architecture guides, and practical tutorials for building Lever integrations.
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.