Run Litmus as a native assessment step in Ashby, with candidates invited automatically and scores posting back to the profile, and import your Ashby jobs and candidates into Litmus off the same key.
Ashby
Litmus is a published Ashby integration partner. One connection, one Ashby API key, two capabilities:
- Assessment partner. Litmus runs as a native assessment activity on an
interview stage. Candidates who reach that stage are invited automatically,
complete the assessment in Litmus, and their status, score and a report link
post back onto the Ashby profile. Needs
candidatesWrite. - Import. Litmus reads your Ashby jobs and candidates so you can build Litmus
postings from roles you already run in Ashby. Needs
jobsReadandcandidatesRead.
Generating the Ashby key from the Litmus tile grants all three, so the setup below turns both on together. If you want import without Litmus writing anything back to Ashby, see Read-only import.
Connecting is a one-time, two-key exchange: a Litmus key that Ashby uses to call us, and an Ashby key that we store to call back. Both directions use HTTP Basic auth.
Connect
In Litmus, open Settings → Integrations → Ashby. The panel walks these four steps with a screenshot for each.
- Generate key, and copy it. You only see it once.
- In Ashby → Admin → Integrations, search Litmus, then click + Enable Litmus.
- On the Litmus tile, paste your key into Litmus API Key. Then use Ashby API Key to generate one and copy it.
- Back in Litmus, paste your Ashby API key and click Save.
That last save is the end of setup; there is no separate "go live" step. Storing the Ashby key enables the integration in the same transaction, because that store already requires an active Litmus key, so both halves of the handshake exist by definition at that moment.
Litmus stores the key as the assessment-partner write-back credential and, if it carries read access, enables import with the same key.
Generate the Ashby key from the Litmus tile so it has read and write access. A write-only key still runs the assessment partner, but import will not turn on; recreate the key from the tile to enable it.
Use Litmus as an assessment partner
All of this happens in Ashby, after the connection is live.
- Open any Ashby job → Interview Plan and choose the stage you want a Litmus assessment on.
- Add Activity → + Add Activity. Scroll to the Integrations section and choose Litmus.
- From Assessment Type, select the Litmus assessment to link to this stage.
- Decide how invitations go out:
- Auto-start. Interview Plan → stage → Modify → Edit. On the Assessment Configuration page, open the Automation tab and enable Automate on Stage Entry. Candidates are invited on stage change.
- Manual. Candidate Pipeline → select the candidate → Start Assessment.
- When the candidate finishes and Litmus has generated their report, their Ashby profile populates with the score, Litmus verdict, time finished and report URL.
- Click View in Litmus for the full submission and scored report. You need to be signed in to your Litmus company profile to open it.
Each interview stage with a Litmus activity is its own assessment, so a multi-stage job produces separate results that never overwrite one another. Withdrawing a candidate in Ashby withdraws them in Litmus, leaving a completed assessment intact; withdrawing in Litmus syncs back to Ashby. Ashby stays your system of record for the pipeline and the hiring decision.
Import jobs and candidates
With read access on the key, the same connection imports your Ashby jobs and candidates:
- Into a pipeline. Open a Posting → Pipelines → the ⋮ menu → Import from ATS.
- Into a new posting. When creating a posting, add ATS job as context and pick the Ashby job. It prefills the title, team and location, and pulls the job description in as context.
Read-only import
If you want Litmus to read your Ashby jobs and candidates but never write back, create a read-only key instead. The Ashby panel offers this under Only importing candidates? Use a read-only key instead.
- In Ashby, go to Admin → Integrations → API keys and click Create API key. Give it any name; Integration Partner is optional, so leave it blank.
- Under API Scopes, tick Read for Jobs and Candidates. Nothing else, and no write access.
- Copy the key on the final step, which Ashby shows only once, and paste it into Litmus.
Those two scopes are exactly what import calls and no more: jobsRead covers
job.list, jobPosting.list and jobPosting.info; candidatesRead covers
application.list. A read-only key cannot run the assessment partner, since that
needs candidatesWrite.
Pause vs disconnect
The Ashby panel has both, and they are different:
- Paused leaves both keys in place and stops the integration. Ashby can no longer start Litmus assessments and results stop posting back. Setting it back to Active resumes, and re-queues any write-backs that were owed while it was paused.
- Disconnect tears the connection down: it revokes the Litmus API key, clears the stored Ashby key, turns the integration off, and stops the job and candidate import. Ashby cannot start Litmus assessments until you reconnect.
A different ATS you connected separately, such as Greenhouse or Lever, is left untouched by either. Regenerating the Litmus API key breaks the connection the same way a disconnect does, until you paste the new key into Ashby.
Endpoints
A fixed set of calls is authorized. Ashby authenticates its calls to Litmus with
your Litmus API key; Litmus authenticates its calls to Ashby with your Ashby API
key. All are POST over HTTP Basic.
Ashby → Litmus
Litmus implements these under /api/partner/ashby/.
| Endpoint | Purpose |
|---|---|
assessment.list | Return this org's assessments for the recruiter to choose from. |
assessment.start | Create the candidate, send the invite, return the assessment id. |
assessment.cancel | Withdraw the candidate when they are removed in Ashby. |
customFields.fetch | Declare custom fields for mapping (none today). |
Litmus → Ashby
Litmus calls these on api.ashbyhq.com, using the scopes on your Ashby key.
| Endpoint | Scope | Purpose |
|---|---|---|
assessment.update | candidatesWrite | Post status, score, and report link back; also echoes a withdrawal made in Litmus. |
job.list, jobPosting.list, jobPosting.info | jobsRead | Import your Ashby jobs. |
application.list | candidatesRead | Import the candidates on a job. |
