> ## Documentation Index
> Fetch the complete documentation index at: https://kardow.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Categories

> List and create job categories, and assign them when posting jobs

Categories group jobs on your board. You can list them, create them, and assign a category when creating a job, all by name (no need to track UUIDs).

<Info>
  Authenticate with your API key in the `x-api-key` header.
</Info>

## List categories

```http theme={null}
GET https://api.kardow.com/categories
```

```bash cURL theme={null}
curl --url "https://api.kardow.com/categories" \
  --header "x-api-key: your-api-key-here"
```

```json theme={null}
{
  "data": [
    { "id": "1f2e...", "name": "Engineering", "slug": "engineering" },
    { "id": "9a7c...", "name": "Design", "slug": "design" }
  ]
}
```

## Create a category

Creating is idempotent: if a category with that name already exists, its id is returned instead of a duplicate.

```http theme={null}
POST https://api.kardow.com/categories
```

<ParamField body="name" type="string" required>Category name, e.g. `Engineering`.</ParamField>

```bash cURL theme={null}
curl --request POST \
  --url "https://api.kardow.com/categories" \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{ "name": "Engineering" }'
```

## Assigning a category to a job

When creating a job with [Create Job](/docs/api-reference/jobs/post-job), pass either:

* `category` — a category **name**. It is matched to an existing category (case-insensitive) or created if new.
* `category_id` — an existing category UUID (takes precedence over `category`).

```bash cURL theme={null}
curl --request POST \
  --url "https://api.kardow.com/jobs" \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{
    "title": "Senior Engineer",
    "description": "...",
    "company_name": "Acme",
    "category": "Engineering"
  }'
```
