# Lookup lists

> Short lists of the job types, technicians, tags, lead sources and market segments a job refers to by id.

- Canonical URL: https://couplrfsm.com/developers/api-reference/lookup-lists
- Markdown: https://couplrfsm.com/developers/api-reference/lookup-lists.md
- API version: v1 (base URL https://couplrfsm.com/api/v1)
- OpenAPI specification: https://couplrfsm.com/developers/openapi.yaml
- All documentation pages: https://couplrfsm.com/llms.txt

> **Flip:** A job points at other things by id: its type, its technicians, its tags, where the lead came from. These short lists turn a name you know into the id I need. They are small, so I send each one whole, with no paging.

Base URL: `https://couplrfsm.com/api/v1`. Conventions shared by every endpoint (examples, ids, dates, money) are on the [API reference](https://couplrfsm.com/developers/api-reference) page. Errors, pagination and idempotency are in [Errors, limits and retries](https://couplrfsm.com/developers/errors-and-limits).

## List job types

`GET /api/v1/job-types` · requires the `jobs:read` ability

The company's job types, by name. Not paginated.

**Example request**

```bash
curl "https://couplrfsm.com/api/v1/job-types" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Example response** (`200`)

```json
{
    "data": [
        {
            "id": 1,
            "name": "Repair"
        }
    ]
}
```

**Errors**

| Status | When |
| --- | --- |
| `401` | No key (`api_key_missing`), the key is unknown or revoked (`api_key_invalid`), the key had an end date that has passed (`api_key_expired`), or the key belongs to a private trial sandbox whose access window has ended (`sandbox_expired`). |
| `403` | The key lacks the ability this endpoint needs (`ability_missing`), no admin user is left to act for the key (`no_acting_admin`), or the company's account is not yet verified. |
| `429` | Too many requests (`rate_limited`). Wait `Retry-After` seconds. |

## List technicians

`GET /api/v1/technicians` · requires the `jobs:read` ability

Technicians a job can be assigned to. Use an id as `assigned_tech_id`, in `assigned_tech_ids` or as `lead_tech_id`. Not paginated.

**Example request**

```bash
curl "https://couplrfsm.com/api/v1/technicians" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Example response** (`200`)

```json
{
    "data": [
        {
            "id": 1,
            "name": "Repair"
        }
    ]
}
```

**Errors**

| Status | When |
| --- | --- |
| `401` | No key (`api_key_missing`), the key is unknown or revoked (`api_key_invalid`), the key had an end date that has passed (`api_key_expired`), or the key belongs to a private trial sandbox whose access window has ended (`sandbox_expired`). |
| `403` | The key lacks the ability this endpoint needs (`ability_missing`), no admin user is left to act for the key (`no_acting_admin`), or the company's account is not yet verified. |
| `429` | Too many requests (`rate_limited`). Wait `Retry-After` seconds. |

## List tags

`GET /api/v1/tags` · requires the `jobs:read` ability

Tags that can be put on a job with `tag_ids`. Not paginated.

**Example request**

```bash
curl "https://couplrfsm.com/api/v1/tags" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Example response** (`200`)

```json
{
    "data": [
        {
            "id": 1,
            "name": "Repair"
        }
    ]
}
```

**Errors**

| Status | When |
| --- | --- |
| `401` | No key (`api_key_missing`), the key is unknown or revoked (`api_key_invalid`), the key had an end date that has passed (`api_key_expired`), or the key belongs to a private trial sandbox whose access window has ended (`sandbox_expired`). |
| `403` | The key lacks the ability this endpoint needs (`ability_missing`), no admin user is left to act for the key (`no_acting_admin`), or the company's account is not yet verified. |
| `429` | Too many requests (`rate_limited`). Wait `Retry-After` seconds. |

## List lead sources

`GET /api/v1/lead-sources` · requires the `jobs:read` ability

Where customers come from. Use an id as `lead_source_id`. Not paginated.

**Example request**

```bash
curl "https://couplrfsm.com/api/v1/lead-sources" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Example response** (`200`)

```json
{
    "data": [
        {
            "id": 1,
            "name": "Repair"
        }
    ]
}
```

**Errors**

| Status | When |
| --- | --- |
| `401` | No key (`api_key_missing`), the key is unknown or revoked (`api_key_invalid`), the key had an end date that has passed (`api_key_expired`), or the key belongs to a private trial sandbox whose access window has ended (`sandbox_expired`). |
| `403` | The key lacks the ability this endpoint needs (`ability_missing`), no admin user is left to act for the key (`no_acting_admin`), or the company's account is not yet verified. |
| `429` | Too many requests (`rate_limited`). Wait `Retry-After` seconds. |

## List market segments

`GET /api/v1/market-segments` · requires the `jobs:read` ability

The company's market segments. Use an id as `market_segment_id`. Not paginated.

**Example request**

```bash
curl "https://couplrfsm.com/api/v1/market-segments" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Example response** (`200`)

```json
{
    "data": [
        {
            "id": 1,
            "name": "Repair"
        }
    ]
}
```

**Errors**

| Status | When |
| --- | --- |
| `401` | No key (`api_key_missing`), the key is unknown or revoked (`api_key_invalid`), the key had an end date that has passed (`api_key_expired`), or the key belongs to a private trial sandbox whose access window has ended (`sandbox_expired`). |
| `403` | The key lacks the ability this endpoint needs (`ability_missing`), no admin user is left to act for the key (`no_acting_admin`), or the company's account is not yet verified. |
| `429` | Too many requests (`rate_limited`). Wait `Retry-After` seconds. |
