---
title: "List job roles"
method: GET
path: "/api/public/v1/job-roles"
tags: ["Public API v1 — Job Roles", "Public API v1 — Job Roles"]
---

# List job roles

`GET /api/public/v1/job-roles`

## 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/public/v1/job-roles`
- Auth: HTTP bearer

Active job roles in your organization, newest first. `competency_count` of 0 means the role has no rubric and cannot run an AI-led interview.

## Query parameters

- `title` string, nullable: Case-insensitive substring match.
- `limit` integer: Number of results per page.
- `offset` integer: Offset for pagination.

## Response `200`

Successful Response

- BackendRoutersPublicJobRolesJobRoleListResponse
  - `job_roles` JobRoleSummary[], required
    - `id` string, required
    - `title` string, required
    - `experience_level` string, nullable
    - `company_name` string, nullable
    - `competency_count` integer, required
    - `created_at` string, required
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## 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)
