How to connect Lever to Kendor
Create a Lever API key, paste it under Integrations, check the stage-change webhook, and choose the stages that send a screen or book a live coding interview.
You connect Lever with one API key. Create the key in Lever, paste it into Integrations → Lever in Kendor, make sure the stage-change webhook is on, then choose which stages send a screen or book a live coding interview. From then on, moving a candidate into one of those stages invites them, and Kendor leaves a note on the opportunity at each step.
Before you start
- Your organization is on the Pro or Enterprise plan, which includes the Lever integration.
- You're an Owner in Kendor. Editors and Viewers see the Lever card as Only owners can manage Lever.
- You're a Super Admin in Lever, so you can create API keys and turn webhooks on. Your Lever account needs Lever's API and webhook features.
Create an API key in Lever
- In Lever, open Settings → Integrations and API → API Credentials.
- Choose Generate New Key and name it Kendor.
- Give it these permissions:
| Permission | What Kendor uses it for |
|---|---|
| Postings: read | Lists your published postings when you set up stage rules. |
| Stages: read | Lists your pipeline stages, and reads a stage's name when a candidate moves. |
| Opportunities: read | Reads the candidate's email and posting when they move into a stage. |
| Notes: create | Writes Kendor's notes on the opportunity. |
| Webhooks: create | Lets Kendor add the stage-change webhook for you. Optional. |
To send screens from confidential postings, also allow access to confidential data. Lever only offers that while you create the key.
- Copy the key before you choose Done. Lever shows it only once.
Paste the key into Kendor
- Open Integrations in the sidebar, under Organization.
- On the Lever card in Applicant tracking, choose Connect.
- Paste the API key and choose Connect.
Kendor checks the key, finds which Lever region your account is in (US or EU), and checks that it can list postings and stages. If Lever refuses the key, the reason appears under the form, for example Lever rejected the API key. The key is stored encrypted; afterwards Kendor shows only its last four characters.
The webhook
Lever tells Kendor when a candidate changes stage through a Candidate Stage Change webhook, signed with a token only Lever and Kendor know.
- If the key may create webhooks, Kendor adds the webhook for you and keeps Lever's signing token. The Webhook row under Setup says so.
- If it may not, add it by hand. In Lever, open Settings → Integrations and API → Webhooks, add the Webhook URL from Kendor under Candidate Stage Change, and generate a signing token. Paste the token into Signing token in Kendor and choose Save token.
Either way, a Super Admin must turn the Candidate Stage Change group on in Lever's Webhooks settings. Lever sends nothing until then. The Candidate Stage Change turned on row turns green once the first invite has come through.
Kendor rejects any webhook whose signature doesn't match, and Lever's test button gets a polite answer without inviting anyone.
Choose the stages that send a screen or a live coding interview
Under Stages that send a screen or a live coding interview:
- In Job, pick a posting, or leave it on any job.
- In Stage, choose a stage. In Lever every posting shares the same pipeline stages, so each posting offers the full list.
- In Kendor screen or interview, choose one of your live screens, or a live coding interview, listed as Live coding · …. For a live coding interview, set the hours the candidate can book; see Book a live coding interview.
- Choose Add rule.
Pick any job to match a stage by its name on every posting instead, including candidates with no posting. A rule for one posting wins over an any job rule for the same stage.
When a candidate enters a screen's stage, Kendor reads the opportunity from Lever and emails the screen to the first email address on it. Lever may send the same change more than once; Kendor invites the candidate only once per stage.
If Kendor can't send the invite, for example the candidate has no email address in Lever, it leaves a note on the opportunity that starts Kendor: no invite sent and gives the reason.
Book a live coding interview
A rule that points at a live coding interview books the candidate in instead of sending a screen. A live coding interview needs its code added and can't be archived. Under Hours the candidate can book, set:
- Days: the weekdays to offer. At least one.
- From and To: the hours on each of those days.
- Time zone: the zone those hours are in. It starts as your browser's.
- Days ahead: how far ahead to offer times, from 1 to 30 days.
The rule starts as weekdays, 09:00 to 17:00, 14 days ahead. Its line reads, for example, Mon, Tue, Wed, Thu, Fri · 09:00–17:00 Europe/Berlin · next 14 days.
When a candidate enters the stage:
- Kendor reads the opportunity from Lever, as for a screen, and turns the hours into times from today for the days ahead you set.
- It creates a session of the live coding interview that the candidate books themselves. The interview's panel runs it, or whoever created the interview if it has no panel.
- The candidate gets an email to pick a time, signed as your organization. The booking page only offers times that don't clash with the panel's other Kendor sessions; Kendor doesn't read anyone's calendar.
- Kendor leaves a note on the opportunity. When the candidate books, another note gives the time in UTC.
The session then appears under Calendar like any other. Its page shows From Lever with the posting and stage, and what Lever last heard. If the candidate books nothing before the last offered time has passed, the invite expires and Kendor leaves a note saying so.
If Kendor can't make the session, it leaves a note on the opportunity instead and nothing is recorded for the stage, so moving the candidate into it again tries again:
| Note | Fix |
|---|---|
Kendor: no live coding session made, because the stage rule's hours offer no time in the next … days. |
Widen the rule's days or hours, or offer more days ahead. |
Kendor: no live coding session made. … |
The reason follows, for example the live coding interview was archived or has no code. Fix it in Kendor. |
What Kendor writes back
Kendor writes back as notes on the opportunity, never into Lever's fields. Each note is visible to everyone who can see the candidate.
Screens
| When | Note |
|---|---|
| Invited | Kendor: invited to Backend screen. The candidate got an email with their link. |
| Submitted | Kendor: Backend screen: submitted in 48 min, ready to review. with a review link |
| Graded | Kendor: Backend screen: Passed, score 84/100, took 48 min. with a review link |
| Decided | Kendor: Backend screen: Advanced by the reviewer. |
An invite that's cancelled, or that runs out before the candidate starts, gets a note saying so.
Live coding interviews
| When | Note |
|---|---|
| Invited | Kendor: invited to the live coding interview Pairing. The candidate got an email to book a time. |
| Booked | Kendor: live coding interview Pairing booked for 2026-10-14 09:00 UTC. |
| Held | Kendor: live coding interview Pairing held (58 min), ready to review. with a review link |
| Decided | Kendor: live coding interview Pairing: Advanced by the panel. with a review link |
A session that's cancelled, that the candidate declines or doesn't join, or that nobody booked before the offered hours ran out gets a note saying so. Moving a booking to a new time adds a note with the new time.
A candidate screened from Lever earlier
A candidate can also reach a live coding session without a rule, for example when you invite them from their profile. If Lever sent that candidate to a screen before, matched by email, the session's notes go onto that same opportunity: one when the session is held, with its length and the review link, and one when the panel decides.
Where to see what Lever heard
In Kendor, the candidate list marks the candidate with Lever; hover it for the posting and stage they came from and what Kendor last told Lever. The candidate's profile and the session's page show the same as From Lever.
Each note is written once. If Lever refuses a note, Recent invites from Lever shows it as Not written yet; retrying, and Kendor retries for a day.
Replace or disconnect
- Replace key swaps in a new API key. The webhook stays as it is.
- Disconnect removes the key and your stage rules, and Kendor stops writing to Lever. A webhook Kendor added is removed too; if you added it by hand, delete it in Lever. Invites already sent and sessions already made stay valid.