# Takedowns

URL: /workflows/processes/takedowns · Id: `process:takedowns`

> Takedowns removes material named in a valid notice, tells the poster, restores it on a counter-notice, and tracks repeat infringers.

Takedowns removes material named in a valid notice, tells the poster, restores it on a counter-notice, and tracks repeat infringers.

## Outcome
| Part | This Process |
| --- | --- |
| Outcome | Material named in a valid notice comes down within a day, its poster is told, and a valid counter-notice restores it. |
| Reads | [Thread](/business/nouns/thread), [Page](/business/nouns/page) |
| Leaves | [Page](/business/nouns/page), [Message](/business/nouns/message) |
| On time | Within 1 day (calendar time); the clock never stops. Late Actions go to the [Legal Lead](/agents/legal/legal-lead). |
| Runs in | Each Startup |

## Accountable
[Contracts Manager](/agents/legal/contracts-manager), [Legal Team](/agents/legal).

Responsible: [Contracts Manager](/agents/legal/contracts-manager).

Consulted: [Legal Lead](/agents/legal/legal-lead).

Informed: [Risk Analyst](/agents/operations/risk-analyst).

## Workflows
| Workflow | Runs | Team |
| --- | --- | --- |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | on `Thread.created` where `intake = 'takedowns'` | [Legal Team](/agents/legal) |

## Who does each step

| Workflow | Step | Role | Calls | Approval |
| --- | --- | --- | --- | --- |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | 1. Check the notice names the work, the material and a sworn statement. | [Contracts Manager](/agents/legal/contracts-manager) |  |  |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | 2. Remove the material within a day of a valid notice. | [Contracts Manager](/agents/legal/contracts-manager) | [Page.update](/business/nouns/page/update) | None |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | 3. Tell the poster, with the notice attached and how to counter it. | [Contracts Manager](/agents/legal/contracts-manager) | [Message.create](/business/nouns/message/create) | None |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | 4. Restore the material after a valid counter-notice and the legal waiting period. | [Contracts Manager](/agents/legal/contracts-manager) | [Page.update](/business/nouns/page/update) | None |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) | 5. Count the poster’s strikes and suspend a repeat infringer. | [Risk Analyst](/agents/operations/risk-analyst) | [Customer.update](/business/nouns/customer/update) | None |

## Events
| Direction | When | What happens |
| --- | --- | --- |
| In | On `Thread.created` where `intake = 'takedowns'` | Starts [Handle a takedown](/workflows/processes/takedowns/handle-takedown) |
| Out | `Page.updated` | Raised by step 2 of [Handle a takedown](/workflows/processes/takedowns/handle-takedown) |
| Out | `Message.created` | Raised by step 3 of [Handle a takedown](/workflows/processes/takedowns/handle-takedown) |
| Out | `Customer.updated` | Raised by step 5 of [Handle a takedown](/workflows/processes/takedowns/handle-takedown) |

## Plays
No Play names this Process.

## Controls
No Control names this Process or a Workflow of it.

## Settings
None.

## Failure
A failed step retries; when retries run out, the Action goes to the [Legal Lead](/agents/legal/legal-lead).

| Step | On failure |
| --- | --- |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) 1. Check the notice names the work, the material and a sworn statement. | `invalid`: The notice is missing a required part, so the sender hears what to add and nothing comes down. |
| [Handle a takedown](/workflows/processes/takedowns/handle-takedown) 2. Remove the material within a day of a valid notice. | Times out after 1 day. Goes to the [Legal Lead](/agents/legal/legal-lead). |

## Loop
No loop: the path is never randomized, because it serves [Public content](/systems/legal-and-corporate/floor/public-content).

## Code

**Ask**

```text
Turn on takedowns
```

**API**

```bash
curl -X POST https://api.sb/leaseline.app/processes/process_1/enable \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Process.enable({ process: 'process_1' })
```

**CLI**

```bash
npx startup-builder do Process.enable --json '{"process":"process_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Process.enable({ process: 'process_1' })"
  }
}
```

## Enable
On by default for every Product Template. [Process.pause](/business/nouns/process/pause) stops new Actions; Actions in progress finish.

## Example
A photographer reports that a directory listing uses their photo. The [Contracts Manager](/agents/legal/contracts-manager) removes the image the same day and tells the poster. A valid counter-notice restores it ten business days later unless the photographer files suit.