# API reference

> All the available API routes are listed in the following tables:

All the available API routes are listed in the following tables:

## Managing sources

| Method | URL | Description |
| --- | --- | --- |
| **GET** | `/api/v1/sources` | Retrieve metadata about all accessible sources |
| **GET** | `/api/v1/sources/<project>` | Retrieve metadata about all sources in a project |
| **GET** | `/api/v1/sources/<project>/<source_name>` | Retrieve metadata about a source by name |
| **GET** | `/api/v1/sources/id:<source_id>` | Retrieve metadata about a source by id |
| **PUT** | `/api/v1/sources/<project>/<source_name>` | Create a source |
| **POST** | `/api/v1/sources/<project>/<source_name>` | Update a source |
| **DELETE** | `/api/v1/sources/id:<source_id>` | Delete a source by id |

## Managing datasets

| Method | URL | Description |
| --- | --- | --- |
| **GET** | `/api/v1/datasets` | Retrieve metadata about all accessible datasets |
| **GET** | `/api/v1/datasets/<project>` | Retrieve metadata about all datasets in a project |
| **GET** | `/api/v1/datasets/<project>/<dataset_name>` | Retrieve metadata about a dataset by name |
| **PUT** | `/api/v1/datasets/<project>/<dataset_name>` | Create a dataset |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>` | Update a dataset |
| **DELETE** | `/api/v1/datasets/<project>/<dataset_name>` | Delete a dataset by name |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/export` | Export a dataset by name |

## Uploading comments

| Method | URL | Description |
| --- | --- | --- |
| **POST** | `/api/v1/sources/<project>/<source_name>/sync` | Create or update comments |
| **POST** | `/api/v1/sources/<project>/<source_name>/sync-raw-emails` | Create or update comments from raw emails |

## Managing comments

| Method | URL | Description |
| --- | --- | --- |
| **GET** | `/api/v1/sources/<project>/<source_name>/comments/<comment_id>` | Retrieve comment by ID |
| **DELETE** | `/api/v1/sources/<project>/<source_name>/messages?id=<message_id0>[&id=<message_id1>...]` | Delete comments by ID |

## Fetching predictions and model statistics

| Method | URL | Description |
| --- | --- | --- |
| **GET** | `/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/validation` | Get model statistics |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict` | Get predictions |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-comments` | Get predictions by comment ID |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/labellers/<version>/predict-raw-emails` | Get predictions for raw emails |

## Fetching predictions with Stream API

| Method | URL | Description |
| --- | --- | --- |
| **GET** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>` | Get a stream by name |
| **GET** | `/api/v1/datasets/<project>/<dataset_name>/streams` | Get all streams |
| **PUT** | `/api/v1/datasets/<project>/<dataset_name>/streams` | Create a stream |
| **PUT** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>/exceptions` | Tag an exception |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>` | Update a stream |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>/fetch` | Fetch comments from a stream |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>/advance` | Advance a stream |
| **POST** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>/reset` | Reset a stream |
| **DELETE** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>` | Delete a stream |
| **DELETE** | `/api/v1/datasets/<project>/<dataset_name>/streams/<stream_name>/exceptions` | Untag an exception |

## Querying audit events with Audit Events API

| Method | URL | Description |
| --- | --- | --- |
| **POST** | `/api/v1/audit_events/query` | Query audit events. |
