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

# factory_handles

# `synth_ai.research.factory_handles`

Factory- and Effort-scoped handles for `client.research.factories`.

## Classes

### `ResearchEffortHandle` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L26" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Handle bound to one Effort id.

**Methods:**

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L33" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self) -> Effort
```

Fetch the Effort. Backend route: `GET /smr/efforts/&#123;effort_id&#125;`.

#### `pause` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L37" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
pause(self) -> Effort
```

Pause the Effort. Backend route: `PATCH /smr/efforts/&#123;effort_id&#125;`.

#### `resume` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L41" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
resume(self) -> Effort
```

Resume the Effort. Backend route: `PATCH /smr/efforts/&#123;effort_id&#125;`.

### `ResearchFactoryEffortsAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L46" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Efforts namespace scoped to one Factory.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L53" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self) -> List[Effort]
```

List the Factory's Efforts.

Backend route: `GET /smr/factories/&#123;factory_id&#125;/efforts`.

#### `open` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L60" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
open(self, effort_id: str) -> ResearchEffortHandle
```

Open a handle bound to one Effort id (no network call).

### `ResearchFactoryHandle` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L65" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Handle bound to one Factory id.

Lifecycle and wake methods delegate to the same session/facade bindings as
`client.research.factories`; the handle only fixes the `factory_id`.

**Methods:**

#### `efforts` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L84" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
efforts(self) -> ResearchFactoryEffortsAPI
```

Efforts owned by this Factory.

#### `status` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L90" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
status(self) -> FactoryStatus
```

Read the Factory workflow projection.

Backend route: `GET /smr/factories/&#123;factory_id&#125;/status`.

#### `pause` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L97" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
pause(self) -> Factory
```

Pause the Factory. Backend route: `PATCH /smr/factories/&#123;factory_id&#125;`.

#### `resume` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L101" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
resume(self) -> Factory
```

Resume the Factory. Backend route: `PATCH /smr/factories/&#123;factory_id&#125;`.

#### `archive` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L105" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
archive(self) -> Factory
```

Archive the Factory. Backend route: `PATCH /smr/factories/&#123;factory_id&#125;`.

#### `usage` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L109" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
usage(self) -> FactoryUsage
```

Read the factory usage aggregate.

Backend route: `GET /smr/factories/&#123;factory_id&#125;/usage`
(query `window`: `month_to_date` | `last_7_days`).

#### `events` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L117" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
events(self) -> FactoryEventsPage
```

Read one newest-first page of durable factory events.

Backend route: `GET /smr/factories/&#123;factory_id&#125;/events`
(query `limit` 1-500, `cursor`).

#### `watch_status` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L135" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
watch_status(self) -> Iterator[FactoryStatus]
```

Poll the status projection until idle or timeout.

Backend route: repeated `GET /smr/factories/&#123;factory_id&#125;/status`.

#### `preview_wake` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L153" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
preview_wake(self) -> FactoryWakeDueResult
```

Preview due experiments without launching.

Backend route: `POST /smr/factories/&#123;factory_id&#125;/wake-due` (dry run).

#### `wake_due` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/factory_handles.py#L173" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
wake_due(self) -> FactoryWakeDueResult
```

Launch exactly the due experiments bound to a reviewed preview.

Backend route: `POST /smr/factories/&#123;factory_id&#125;/wake-due` (confirmed).
