# Work intake

**Work intake is the set of doors a request can arrive through to become a cycle.** There are five, and a request from any other source is **refused**. "What can create work in this project" always has an exact answer.

Two of the doors connect systems outside hlix and can be closed. The other three are always open, because using one is already a deliberate act within the project.

## Prerequisites

- A project in your Workspace.
- `manage` access on the project to change its intake settings; `owner` or `admin` for the Workspace defaults.

## The five doors

| API value | What it is | Can it be closed? |
| --- | --- | --- |
| `chat` | Someone typed into the project's conversation | No |
| `kanban` | Someone moved a card on the project's board | No |
| `api` | A direct API call with a Workspace credential | No |
| `linear` | A delegation from a Linear issue | Yes |
| `github` | A GitHub issue | Yes |

<Aside type="caution" title="The board's API value is `kanban`">
The board is called the board in the dashboard, and its identifier in the API is `kanban`. Send `kanban` when you mean the board; `board` is not an accepted value.
</Aside>

Every door is open by default, and every request admitted through any of them goes through [triage](/concepts/triage/) before it becomes work.

## Why three doors have no switch

`chat`, `kanban` and `api` are **native**: the request starts inside hlix and is scoped by the act of making it. Someone typed into *this* project's chat, moved a card on *its* board, or called the API with a credential for *this* Workspace.

`linear` and `github` are **external**: another system sends requests to this project, that system can be noisy, and noise becomes spend. You can switch either one off.

The native doors cannot be closed: `{"intake": {"chat": false}}` answers `400`.

## Close a door for one project

```bash
curl -sS -X PATCH "$HLIX_BASE_URL/v1/api/projects/$PROJECT_ID" \
  -H "x-api-key: $HLIX_API_KEY" \
  -H "X-Organization-Id: $HLIX_WORKSPACE_ID" \
  -H 'content-type: application/json' \
  -d '{"intake":{"linear":false}}'
```

Expected result: `200` and the updated project, with `intake.linear` now `false`.

The `intake` object is **merged** onto what is already stored, so sending one key leaves the other unchanged. Omitting `intake` leaves the settings as they are.

The dashboard shows the same switches under **Project → Settings → Work intake**, one per closable door, with a line naming the three that are always open.

## Project and Workspace settings

Each external door is decided by the first of these that has a setting:

1. **The project's own setting** — what you set above.
2. **The Workspace default** — an admin's default for every project.
3. **The catalog's default** — open.

A project setting overrides the Workspace default.

## What a refusal looks like

A blocked request does not become a cycle, and the reason names the setting that closed the door:

```text
Linear intake is turned off for this project
Linear intake is turned off for this workspace
```

Check the setting the message names: a door closed by the Workspace default stays closed even when the project screen shows no change.

An unknown source gets a different refusal:

```text
unknown intake source 'slack' — it is not in the intake source catalog
```

## If work is not arriving, or is arriving when it should not

- **A Linear issue was assigned and nothing happened.** Check both settings: the project's `intake.linear` and the Workspace default. The refusal reason in the project's activity names which one.
- **A GitHub issue did not become a cycle.** Same check on `intake.github`. Also confirm the repository is attached to this project — an issue only reaches a project through a repository it owns.
- **`{"error":"…"}` with `400` on the `PATCH`.** You sent a native door (`chat`, `kanban`, `api`) or a name that is not a door. Unknown keys are refused.
- **You sent `board` and got a `400`.** The API value is `kanban`.
- **You closed one door and the other closed too.** `intake` merges, so check that you did not send both keys.
- **Work is arriving from a source you never enabled.** All five doors are open by default; close the ones you do not want.
- **A `403` on the `PATCH`.** Changing intake needs `manage` access on the project.
- **The door is open and a request still did not become work.** It was admitted and then triaged. See [Triage](/concepts/triage/) for what happens after the door.

## Where to go next

| If you want to… | Read |
| --- | --- |
| See what happens after a request is admitted | [Triage](/concepts/triage/) |
| Connect the Linear workspace | [Linear](/integrations/linear/) |
| Connect the GitHub account | [GitHub](/integrations/github/) |
| Gate what a cycle may do once created | [Delivery policy](/configure/delivery-policy/) |

## Next steps

[Triage](/concepts/triage/)
  [Delivery policy](/configure/delivery-policy/)
  [Linear](/integrations/linear/)
  [GitHub](/integrations/github/)