# Get a role's pipeline template

A role's ordered pipeline steps (the template). Scope: pipeline:read.

Returns the role's pipeline **template** — the ordered list of steps a candidate moves through. **Scope:** `pipeline:read`. The parent role must be visible to the key (else `404`). The list is not paginated (small, ordered by step order).

## Path parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `id` | string | The role id. |

## Example request

```bash
curl https://app.talent-ray.com/api/v1/roles/role_eng_be/steps \
  -H "Authorization: Bearer tr_YOUR_KEY"
```

## Response

`200 OK`

```json
{
  "data": [
    {
      "id": "step_cv",
      "roleId": "role_eng_be",
      "name": "CV Screening",
      "description": null,
      "order": 1,
      "stepType": "cv_screening",
      "validationType": "auto",
      "passingScore": 70,
      "isRequired": true,
      "allowSkip": false,
      "createdAt": "2026-05-01T09:00:00Z",
      "updatedAt": "2026-05-01T09:00:00Z"
    }
  ]
}
```

`stepType` is one of `cv_screening`, `ai_assessment`, `interview`, `application_form`, `document_upload`, `offer`, `reference_check`, `contract`, `custom`. `validationType` is `auto`, `manual`, or `score_threshold`.

## Status codes

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `401` | No valid API key. |
| `403` | `insufficient_scope` — the key lacks `pipeline:read`. |
| `404` | Role not found, or not visible to the key. |
| `429` | Rate limit exceeded. |