> ## 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.

# hosted_artifacts

# `synth_ai.research.hosted_artifacts`

`client.research.hosted_artifacts` — Open Research hosted artifact operator API.

## Classes

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

Operator CRUD access to SMR hosted artifacts (Open Research alpha).

Hosted artifacts are HTML proof pages materialized by `artifact_builder`
workers during a run. Creation still happens in-run via the
`publish_hosted_artifact` MCP tool; this namespace covers operator read,
metadata patch, promote, review dispatch, and delete.

| Operation  | SDK                                           | Backend                                       |
| ---------- | --------------------------------------------- | --------------------------------------------- |
| **Create** | Worker MCP `publish_hosted_artifact`          | In-run service write                          |
| **Read**   | `list`, `get`, `get_for_run`, `get_content`   | `GET` list/detail/receipt/content             |
| **Update** | `update`, `publish_public`, `assign_reviewer` | `PATCH` + promote/review routes               |
| **Delete** | `delete`                                      | `DELETE /smr/hosted-artifacts/&#123;id&#125;` |

**Methods:**

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

```python theme={null}
list(self) -> list[dict[str, Any]]
```

List hosted artifacts for the org or one project.

**Args:**

* `project_id`: When set, restrict to artifacts built under that project.
* `limit`: Maximum rows to return (server capped at 250).

**Returns:**

* Artifact receipts with `project_id`, `hosted_url`, `public_url`,
* and `slug` when promoted.

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

```python theme={null}
get(self, hosted_artifact_id: str) -> dict[str, Any]
```

Read one hosted artifact receipt with URLs.

**Args:**

* `hosted_artifact_id`: Primary key from `list` or `get_for_run`.

**Returns:**

* Receipt JSON from `GET /smr/hosted-artifacts/&#123;id&#125;`.

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

```python theme={null}
get_for_run(self, run_id: str) -> dict[str, Any]
```

Read hosted artifact receipt for a run.

**Args:**

* `run_id`: SMR run id that built or owns the artifact.

**Returns:**

* Status payload from `GET /smr/runs/&#123;run_id&#125;/hosted-artifact`.

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

```python theme={null}
get_content(self, hosted_artifact_id: str) -> str | bytes
```

Read hosted HTML body by artifact id.

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

```python theme={null}
update(self, hosted_artifact_id: str) -> dict[str, Any]
```

Patch hosted artifact metadata and optional public shell fields.

**Args:**

* `hosted_artifact_id`: Artifact to update.
* `title`: Replace artifact title (and public title when promoted).
* `metadata`: Shallow-merge into artifact `metadata`.
* `theme`: Public index theme when a publication exists.
* `summary`: Public summary when a publication exists.
* `kind`: Public kind when a publication exists.
* `visibility`: `private`, `org`, or `public`. Demoting from
  `public` removes the public shell row.

**Returns:**

* Updated receipt from `PATCH /smr/hosted-artifacts/&#123;id&#125;`.

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

```python theme={null}
publish_public(self, hosted_artifact_id: str, slug: str) -> dict[str, Any]
```

Promote a hosted artifact to the public Open Research index.

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

```python theme={null}
assign_reviewer(self, hosted_artifact_id: str, reason: str) -> dict[str, Any]
```

Dispatch an `artifact_reviewer` task for a hosted artifact.

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

```python theme={null}
delete(self, hosted_artifact_id: str) -> dict[str, Any]
```

Delete a hosted artifact and its stored HTML.

**Args:**

* `hosted_artifact_id`: Artifact to delete.

**Returns:**

* Deletion receipt with `deleted` and `hosted_artifact_id`.

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

```python theme={null}
list_public(self) -> list[dict[str, Any]]
```

List public Open Research artifacts (unauthenticated index JSON).

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

```python theme={null}
get_public(self, slug: str) -> dict[str, Any]
```

Read one public artifact bundle by slug.
