---
title: "Get Candidate Pipelines"
method: GET
path: "/api/candidates/{candidate_id}/pipelines"
tags: ["candidates"]
---

# Get Candidate Pipelines

`GET /api/candidates/{candidate_id}/pipelines`

## Request

- Base URL: `https://api.thebetterhire.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.thebetterhire.ai/api/candidates/{candidate_id}/pipelines`
- Auth: HTTP bearer

Returns every job role this candidate is in the pipeline for, with the
candidate's per-role context (stage, fit score, interview count, latest
interview). Powers the "Roles in pipeline" card on the candidate detail
page.

Source-of-truth is the job_role_candidates junction table — that's the
only signal that means "this candidate was *intentionally* attached to
this role" (a candidate could appear in interviews on a role they were
never sourced for, e.g., if a recruiter hand-created an interview row
bypassing the candidates tab; we ignore that edge case here).

## Path parameters

- `candidate_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api.md) · [All operations](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/revisions/c8ad03e900ea?raw)
