# Reference
## AnnotationQueues

client.annotation_queues.list_queues(...)

#### 📝 Description

Get all annotation queues

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.list_queues()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.create_queue(...)

#### 📝 Description

Create an annotation queue

#### 🔌 Usage

```python
from abv import CreateAnnotationQueueRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.create_queue(
    request=CreateAnnotationQueueRequest(
        name="name",
        score_config_ids=["scoreConfigIds", "scoreConfigIds"],
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateAnnotationQueueRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.get_queue(...)

#### 📝 Description

Get an annotation queue by ID

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.get_queue(
    queue_id="queueId",
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.list_queue_items(...)

#### 📝 Description

Get items for a specific annotation queue

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.list_queue_items(
    queue_id="queueId",
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**status:** `typing.Optional[AnnotationQueueStatus]` — Filter by status

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.get_queue_item(...)

#### 📝 Description

Get a specific item from an annotation queue

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.get_queue_item(
    queue_id="queueId",
    item_id="itemId",
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**item_id:** `str` — The unique identifier of the annotation queue item

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.create_queue_item(...)

#### 📝 Description

Add an item to an annotation queue

#### 🔌 Usage

```python
from abv import AnnotationQueueObjectType, CreateAnnotationQueueItemRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.create_queue_item(
    queue_id="queueId",
    request=CreateAnnotationQueueItemRequest(
        object_id="objectId",
        object_type=AnnotationQueueObjectType.TRACE,
    ),
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**request:** `CreateAnnotationQueueItemRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.update_queue_item(...)

#### 📝 Description

Update an annotation queue item

#### 🔌 Usage

```python
from abv import UpdateAnnotationQueueItemRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.update_queue_item(
    queue_id="queueId",
    item_id="itemId",
    request=UpdateAnnotationQueueItemRequest(),
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**item_id:** `str` — The unique identifier of the annotation queue item

**request:** `UpdateAnnotationQueueItemRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.delete_queue_item(...)

#### 📝 Description

Remove an item from an annotation queue

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.delete_queue_item(
    queue_id="queueId",
    item_id="itemId",
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**item_id:** `str` — The unique identifier of the annotation queue item

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.create_queue_assignment(...)

#### 📝 Description

Create an assignment for a user to an annotation queue

#### 🔌 Usage

```python
from abv import AnnotationQueueAssignmentRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.create_queue_assignment(
    queue_id="queueId",
    request=AnnotationQueueAssignmentRequest(
        user_id="userId",
    ),
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**request:** `AnnotationQueueAssignmentRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.annotation_queues.delete_queue_assignment(...)

#### 📝 Description

Delete an assignment for a user to an annotation queue

#### 🔌 Usage

```python
from abv import AnnotationQueueAssignmentRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.annotation_queues.delete_queue_assignment(
    queue_id="queueId",
    request=AnnotationQueueAssignmentRequest(
        user_id="userId",
    ),
)

```


#### ⚙️ Parameters

**queue_id:** `str` — The unique identifier of the annotation queue

**request:** `AnnotationQueueAssignmentRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Comments

client.comments.create(...)

#### 📝 Description

Create a comment. Comments may be attached to different object types (trace, observation, session, prompt).

#### 🔌 Usage

```python
from abv import CreateCommentRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.comments.create(
    request=CreateCommentRequest(
        project_id="projectId",
        object_type="objectType",
        object_id="objectId",
        content="content",
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateCommentRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.comments.get(...)

#### 📝 Description

Get all comments

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.comments.get()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1.

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit

**object_type:** `typing.Optional[str]` — Filter comments by object type (trace, observation, session, prompt).

**object_id:** `typing.Optional[str]` — Filter comments by object id. If objectType is not provided, an error will be thrown.

**author_user_id:** `typing.Optional[str]` — Filter comments by author user id.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.comments.get_by_id(...)

#### 📝 Description

Get a comment by id

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.comments.get_by_id(
    comment_id="commentId",
)

```


#### ⚙️ Parameters

**comment_id:** `str` — The unique abv identifier of a comment

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## DatasetItems

client.dataset_items.create(...)

#### 📝 Description

Create a dataset item

#### 🔌 Usage

```python
from abv import CreateDatasetItemRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_items.create(
    request=CreateDatasetItemRequest(
        dataset_name="datasetName",
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateDatasetItemRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.dataset_items.get(...)

#### 📝 Description

Get a dataset item

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_items.get(
    id="id",
)

```


#### ⚙️ Parameters

**id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.dataset_items.list(...)

#### 📝 Description

Get dataset items

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_items.list()

```


#### ⚙️ Parameters

**dataset_name:** `typing.Optional[str]` 

**source_trace_id:** `typing.Optional[str]` 

**source_observation_id:** `typing.Optional[str]` 

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.dataset_items.delete(...)

#### 📝 Description

Delete a dataset item and all its run items. This action is irreversible.

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_items.delete(
    id="id",
)

```


#### ⚙️ Parameters

**id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## DatasetRunItems

client.dataset_run_items.create(...)

#### 📝 Description

Create a dataset run item

#### 🔌 Usage

```python
from abv import CreateDatasetRunItemRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_run_items.create(
    request=CreateDatasetRunItemRequest(
        run_name="runName",
        dataset_item_id="datasetItemId",
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateDatasetRunItemRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.dataset_run_items.list(...)

#### 📝 Description

List dataset run items

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.dataset_run_items.list(
    dataset_id="datasetId",
    run_name="runName",
)

```


#### ⚙️ Parameters

**dataset_id:** `str` 

**run_name:** `str` 

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Datasets

client.datasets.list(...)

#### 📝 Description

Get all datasets

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.list()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.datasets.get(...)

#### 📝 Description

Get a dataset

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.get(
    dataset_name="datasetName",
)

```


#### ⚙️ Parameters

**dataset_name:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.datasets.create(...)

#### 📝 Description

Create a dataset

#### 🔌 Usage

```python
from abv import CreateDatasetRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.create(
    request=CreateDatasetRequest(
        name="name",
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateDatasetRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.datasets.get_run(...)

#### 📝 Description

Get a dataset run and its items

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.get_run(
    dataset_name="datasetName",
    run_name="runName",
)

```


#### ⚙️ Parameters

**dataset_name:** `str` 

**run_name:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.datasets.delete_run(...)

#### 📝 Description

Delete a dataset run and all its run items. This action is irreversible.

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.delete_run(
    dataset_name="datasetName",
    run_name="runName",
)

```


#### ⚙️ Parameters

**dataset_name:** `str` 

**run_name:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.datasets.get_runs(...)

#### 📝 Description

Get dataset runs

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.datasets.get_runs(
    dataset_name="datasetName",
)

```


#### ⚙️ Parameters

**dataset_name:** `str` 

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Health

client.health.health()

#### 📝 Description

Check health of API and database

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.health.health()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Ingestion

client.ingestion.batch(...)

#### 📝 Description

Batched ingestion for ABV Tracing.
If you want to use tracing via the API, such as to build your own ABV client implementation, this is the only API route you need to implement.

Within each batch, there can be multiple events.
Each event has a type, an id, a timestamp, metadata and a body.
Internally, we refer to this as the "event envelope" as it tells us something about the event but not the trace.
We use the event id within this envelope to deduplicate messages to avoid processing the same event twice, i.e. the event id should be unique per request.
The event.body.id is the ID of the actual trace and will be used for updates and will be visible within the ABV App.
I.e. if you want to update a trace, you'd use the same body id, but separate event IDs.

Notes:
- Introduction to data model: https://abv.dev/docs/tracing-data-model
- Batch sizes are limited to 3.5 MB in total. You need to adjust the number of events per batch accordingly.
- The API does not return a 4xx status code for input errors. Instead, it responds with a 207 status code, which includes a list of the encountered errors.

#### 🔌 Usage

```python
from abv import IngestionEvent_ScoreCreate, ScoreBody
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.ingestion.batch(
    batch=[
        IngestionEvent_ScoreCreate(
            id="abcdef-1234-5678-90ab",
            timestamp="2022-01-01T00:00:00.000Z",
            body=ScoreBody(
                id="abcdef-1234-5678-90ab",
                trace_id="1234-5678-90ab-cdef",
                name="My Score",
                value=0.9,
                environment="default",
            ),
        )
    ],
)

```


#### ⚙️ Parameters

**batch:** `typing.Sequence[IngestionEvent]` — Batch of tracing events to be ingested. Discriminated by attribute `type`.

**metadata:** `typing.Optional[typing.Any]` — Optional. Metadata field used by the ABV SDKs for debugging.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## LlmConnections

client.llm_connections.list(...)

#### 📝 Description

Get all LLM connections in a project

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.llm_connections.list()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.llm_connections.upsert(...)

#### 📝 Description

Create or update an LLM connection. The connection is upserted on provider.

#### 🔌 Usage

```python
from abv import LlmAdapter, UpsertLlmConnectionRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.llm_connections.upsert(
    request=UpsertLlmConnectionRequest(
        provider="provider",
        adapter=LlmAdapter.ANTHROPIC,
        secret_key="secretKey",
    ),
)

```


#### ⚙️ Parameters

**request:** `UpsertLlmConnectionRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Media

client.media.get(...)

#### 📝 Description

Get a media record

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.media.get(
    media_id="mediaId",
)

```


#### ⚙️ Parameters

**media_id:** `str` — The unique abv identifier of a media record

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.media.patch(...)

#### 📝 Description

Patch a media record

#### 🔌 Usage

```python
import datetime

from abv import PatchMediaBody
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.media.patch(
    media_id="mediaId",
    request=PatchMediaBody(
        uploaded_at=datetime.datetime.fromisoformat(
            "2024-01-15 09:30:00+00:00",
        ),
        upload_http_status=1,
    ),
)

```


#### ⚙️ Parameters

**media_id:** `str` — The unique abv identifier of a media record

**request:** `PatchMediaBody` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.media.get_upload_url(...)

#### 📝 Description

Get a presigned upload URL for a media record

#### 🔌 Usage

```python
from abv import GetMediaUploadUrlRequest, MediaContentType
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.media.get_upload_url(
    request=GetMediaUploadUrlRequest(
        trace_id="traceId",
        content_type=MediaContentType.IMAGE_PNG,
        content_length=1,
        sha_256_hash="sha256Hash",
        field="field",
    ),
)

```


#### ⚙️ Parameters

**request:** `GetMediaUploadUrlRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Metrics

client.metrics.metrics(...)

#### 📝 Description

Get metrics from the ABV project using a query object

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.metrics.metrics(
    query="query",
)

```


#### ⚙️ Parameters

**query:** `str` 

JSON string containing the query parameters with the following structure:
```json
{
  "view": string,           // Required. One of "traces", "observations", "scores-numeric", "scores-categorical"
  "dimensions": [           // Optional. Default: []
    {
      "field": string       // Field to group by, e.g. "name", "userId", "sessionId"
    }
  ],
  "metrics": [              // Required. At least one metric must be provided
    {
      "measure": string,    // What to measure, e.g. "count", "latency", "value"
      "aggregation": string // How to aggregate, e.g. "count", "sum", "avg", "p95", "histogram"
    }
  ],
  "filters": [              // Optional. Default: []
    {
      "column": string,     // Column to filter on
      "operator": string,   // Operator, e.g. "=", ">", "<", "contains"
      "value": any,         // Value to compare against
      "type": string,       // Data type, e.g. "string", "number", "stringObject"
      "key": string         // Required only when filtering on metadata
    }
  ],
  "timeDimension": {        // Optional. Default: null. If provided, results will be grouped by time
    "granularity": string   // One of "minute", "hour", "day", "week", "month", "auto"
  },
  "fromTimestamp": string,  // Required. ISO datetime string for start of time range
  "toTimestamp": string,    // Required. ISO datetime string for end of time range
  "orderBy": [              // Optional. Default: null
    {
      "field": string,      // Field to order by
      "direction": string   // "asc" or "desc"
    }
  ],
  "config": {               // Optional. Query-specific configuration
    "bins": number,         // Optional. Number of bins for histogram (1-100), default: 10
    "row_limit": number     // Optional. Row limit for results (1-1000)
  }
}
```
    

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Models

client.models.create(...)

#### 📝 Description

Create a model

#### 🔌 Usage

```python
from abv import CreateModelRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.models.create(
    request=CreateModelRequest(
        model_name="modelName",
        match_pattern="matchPattern",
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateModelRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.models.list(...)

#### 📝 Description

Get all models

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.models.list()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.models.get(...)

#### 📝 Description

Get a model

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.models.get(
    id="id",
)

```


#### ⚙️ Parameters

**id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.models.delete(...)

#### 📝 Description

Delete a model. Cannot delete models managed by ABV. You can create your own definition with the same modelName to override the definition though.

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.models.delete(
    id="id",
)

```


#### ⚙️ Parameters

**id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Observations

client.observations.get(...)

#### 📝 Description

Get a observation

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.observations.get(
    observation_id="observationId",
)

```


#### ⚙️ Parameters

**observation_id:** `str` — The unique abv identifier of an observation, can be an event, span or generation

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.observations.get_many(...)

#### 📝 Description

Get a list of observations

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.observations.get_many()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1.

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.

**name:** `typing.Optional[str]` 

**user_id:** `typing.Optional[str]` 

**type:** `typing.Optional[str]` 

**trace_id:** `typing.Optional[str]` 

**level:** `typing.Optional[ObservationLevel]` — Optional filter for observations with a specific level (e.g. "DEBUG", "DEFAULT", "WARNING", "ERROR").

**parent_observation_id:** `typing.Optional[str]` 

**environment:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Optional filter for observations where the environment is one of the provided values.

**from_start_time:** `typing.Optional[dt.datetime]` — Retrieve only observations with a start_time on or after this datetime (ISO 8601).

**to_start_time:** `typing.Optional[dt.datetime]` — Retrieve only observations with a start_time before this datetime (ISO 8601).

**version:** `typing.Optional[str]` — Optional filter to only include observations with a certain version.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Organizations

client.organizations.get_organization_memberships()

#### 📝 Description

Get all memberships for the organization associated with the API key (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.organizations.get_organization_memberships()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.organizations.update_organization_membership(...)

#### 📝 Description

Create or update a membership for the organization associated with the API key (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv import MembershipRequest, MembershipRole
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.organizations.update_organization_membership(
    request=MembershipRequest(
        user_id="userId",
        role=MembershipRole.OWNER,
    ),
)

```


#### ⚙️ Parameters

**request:** `MembershipRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.organizations.get_project_memberships(...)

#### 📝 Description

Get all memberships for a specific project (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.organizations.get_project_memberships(
    project_id="projectId",
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.organizations.update_project_membership(...)

#### 📝 Description

Create or update a membership for a specific project (requires organization-scoped API key). The user must already be a member of the organization.

#### 🔌 Usage

```python
from abv import MembershipRequest, MembershipRole
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.organizations.update_project_membership(
    project_id="projectId",
    request=MembershipRequest(
        user_id="userId",
        role=MembershipRole.OWNER,
    ),
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**request:** `MembershipRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.organizations.get_organization_projects()

#### 📝 Description

Get all projects for the organization associated with the API key (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.organizations.get_organization_projects()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Projects

client.projects.get()

#### 📝 Description

Get Project associated with API key

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.get()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.create(...)

#### 📝 Description

Create a new project (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.create(
    name="name",
    retention=1,
)

```


#### ⚙️ Parameters

**name:** `str` 

**retention:** `int` — Number of days to retain data. Must be 0 or at least 3 days. Requires data-retention entitlement for non-zero values. Optional.

**metadata:** `typing.Optional[typing.Dict[str, typing.Any]]` — Optional metadata for the project

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.update(...)

#### 📝 Description

Update a project by ID (requires organization-scoped API key).

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.update(
    project_id="projectId",
    name="name",
    retention=1,
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**name:** `str` 

**retention:** `int` — Number of days to retain data. Must be 0 or at least 3 days. Requires data-retention entitlement for non-zero values. Optional.

**metadata:** `typing.Optional[typing.Dict[str, typing.Any]]` — Optional metadata for the project

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.delete(...)

#### 📝 Description

Delete a project by ID (requires organization-scoped API key). Project deletion is processed asynchronously.

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.delete(
    project_id="projectId",
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.get_api_keys(...)

#### 📝 Description

Get all API keys for a project (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.get_api_keys(
    project_id="projectId",
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.create_api_key(...)

#### 📝 Description

Create a new API key for a project (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.create_api_key(
    project_id="projectId",
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**note:** `typing.Optional[str]` — Optional note for the API key

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.projects.delete_api_key(...)

#### 📝 Description

Delete an API key for a project (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.projects.delete_api_key(
    project_id="projectId",
    api_key_id="apiKeyId",
)

```


#### ⚙️ Parameters

**project_id:** `str` 

**api_key_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## PromptVersion

client.prompt_version.update(...)

#### 📝 Description

Update labels for a specific prompt version

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.prompt_version.update(
    name="name",
    version=1,
    new_labels=["newLabels", "newLabels"],
)

```


#### ⚙️ Parameters

**name:** `str` — The name of the prompt

**version:** `int` — Version of the prompt to update

**new_labels:** `typing.Sequence[str]` — New labels for the prompt version. Labels are unique across versions. The "latest" label is reserved and managed by ABV.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Prompts

client.prompts.get(...)

#### 📝 Description

Get a prompt

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.prompts.get(
    prompt_name="promptName",
)

```


#### ⚙️ Parameters

**prompt_name:** `str` — The name of the prompt

**version:** `typing.Optional[int]` — Version of the prompt to be retrieved.

**label:** `typing.Optional[str]` — Label of the prompt to be retrieved. Defaults to "production" if no label or version is set.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.prompts.list(...)

#### 📝 Description

Get a list of prompt names with versions and labels

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.prompts.list()

```


#### ⚙️ Parameters

**name:** `typing.Optional[str]` 

**label:** `typing.Optional[str]` 

**tag:** `typing.Optional[str]` 

**page:** `typing.Optional[int]` — page number, starts at 1

**limit:** `typing.Optional[int]` — limit of items per page

**from_updated_at:** `typing.Optional[dt.datetime]` — Optional filter to only include prompt versions created/updated on or after a certain datetime (ISO 8601)

**to_updated_at:** `typing.Optional[dt.datetime]` — Optional filter to only include prompt versions created/updated before a certain datetime (ISO 8601)

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.prompts.create(...)

#### 📝 Description

Create a new version for the prompt with the given `name`

#### 🔌 Usage

```python
from abv import (
    ChatMessageWithPlaceholders_Chatmessage,
    CreatePromptRequest_Chat,
)
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.prompts.create(
    request=CreatePromptRequest_Chat(
        name="name",
        prompt=[
            ChatMessageWithPlaceholders_Chatmessage(
                role="role",
                content="content",
            ),
            ChatMessageWithPlaceholders_Chatmessage(
                role="role",
                content="content",
            ),
        ],
    ),
)

```


#### ⚙️ Parameters

**request:** `CreatePromptRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Scim

client.scim.get_service_provider_config()

#### 📝 Description

Get SCIM Service Provider Configuration (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.get_service_provider_config()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.get_resource_types()

#### 📝 Description

Get SCIM Resource Types (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.get_resource_types()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.get_schemas()

#### 📝 Description

Get SCIM Schemas (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.get_schemas()

```


#### ⚙️ Parameters

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.list_users(...)

#### 📝 Description

List users in the organization (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.list_users()

```


#### ⚙️ Parameters

**filter:** `typing.Optional[str]` — Filter expression (e.g. userName eq "value")

**start_index:** `typing.Optional[int]` — 1-based index of the first result to return (default 1)

**count:** `typing.Optional[int]` — Maximum number of results to return (default 100)

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.create_user(...)

#### 📝 Description

Create a new user in the organization (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv import ScimName
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.create_user(
    user_name="userName",
    name=ScimName(),
)

```


#### ⚙️ Parameters

**user_name:** `str` — User's email address (required)

**name:** `ScimName` — User's name information

**emails:** `typing.Optional[typing.Sequence[ScimEmail]]` — User's email addresses

**active:** `typing.Optional[bool]` — Whether the user is active

**password:** `typing.Optional[str]` — Initial password for the user

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.get_user(...)

#### 📝 Description

Get a specific user by ID (requires organization-scoped API key)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.get_user(
    user_id="userId",
)

```


#### ⚙️ Parameters

**user_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.scim.delete_user(...)

#### 📝 Description

Remove a user from the organization (requires organization-scoped API key). Note that this only removes the user from the organization but does not delete the user entity itself.

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.scim.delete_user(
    user_id="userId",
)

```


#### ⚙️ Parameters

**user_id:** `str` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## ScoreConfigs

client.score_configs.create(...)

#### 📝 Description

Create a score configuration (config). Score configs are used to define the structure of scores

#### 🔌 Usage

```python
from abv import CreateScoreConfigRequest, ScoreDataType
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score_configs.create(
    request=CreateScoreConfigRequest(
        name="name",
        data_type=ScoreDataType.NUMERIC,
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateScoreConfigRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.score_configs.get(...)

#### 📝 Description

Get all score configs

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score_configs.get()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1.

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.score_configs.get_by_id(...)

#### 📝 Description

Get a score config

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score_configs.get_by_id(
    config_id="configId",
)

```


#### ⚙️ Parameters

**config_id:** `str` — The unique abv identifier of a score config

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## ScoreV2

client.score_v_2.get(...)

#### 📝 Description

Get a list of scores (supports both trace and session scores)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score_v_2.get()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1.

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.

**user_id:** `typing.Optional[str]` — Retrieve only scores with this userId associated to the trace.

**name:** `typing.Optional[str]` — Retrieve only scores with this name.

**from_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include scores created on or after a certain datetime (ISO 8601)

**to_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include scores created before a certain datetime (ISO 8601)

**environment:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Optional filter for scores where the environment is one of the provided values.

**source:** `typing.Optional[ScoreSource]` — Retrieve only scores from a specific source.

**operator:** `typing.Optional[str]` — Retrieve only scores with <operator> value.

**value:** `typing.Optional[float]` — Retrieve only scores with <operator> value.

**score_ids:** `typing.Optional[str]` — Comma-separated list of score IDs to limit the results to.

**config_id:** `typing.Optional[str]` — Retrieve only scores with a specific configId.

**queue_id:** `typing.Optional[str]` — Retrieve only scores with a specific annotation queueId.

**data_type:** `typing.Optional[ScoreDataType]` — Retrieve only scores with a specific dataType.

**trace_tags:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Only scores linked to traces that include all of these tags will be returned.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.score_v_2.get_by_id(...)

#### 📝 Description

Get a score (supports both trace and session scores)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score_v_2.get_by_id(
    score_id="scoreId",
)

```


#### ⚙️ Parameters

**score_id:** `str` — The unique abv identifier of a score

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Score

client.score.create(...)

#### 📝 Description

Create a score (supports both trace and session scores)

#### 🔌 Usage

```python
from abv import CreateScoreRequest
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score.create(
    request=CreateScoreRequest(
        name="name",
        value=1.1,
    ),
)

```


#### ⚙️ Parameters

**request:** `CreateScoreRequest` 

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.score.delete(...)

#### 📝 Description

Delete a score (supports both trace and session scores)

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.score.delete(
    score_id="scoreId",
)

```


#### ⚙️ Parameters

**score_id:** `str` — The unique abv identifier of a score

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Sessions

client.sessions.list(...)

#### 📝 Description

Get sessions

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.sessions.list()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.

**from_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include sessions created on or after a certain datetime (ISO 8601)

**to_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include sessions created before a certain datetime (ISO 8601)

**environment:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Optional filter for sessions where the environment is one of the provided values.

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.sessions.get(...)

#### 📝 Description

Get a session. Please note that `traces` on this endpoint are not paginated, if you plan to fetch large sessions, consider `GET /api/public/traces?sessionId=<sessionId>`

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.sessions.get(
    session_id="sessionId",
)

```


#### ⚙️ Parameters

**session_id:** `str` — The unique id of a session

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

## Trace

client.trace.get(...)

#### 📝 Description

Get a specific trace

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.trace.get(
    trace_id="traceId",
)

```


#### ⚙️ Parameters

**trace_id:** `str` — The unique abv identifier of a trace

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.trace.delete(...)

#### 📝 Description

Delete a specific trace

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.trace.delete(
    trace_id="traceId",
)

```


#### ⚙️ Parameters

**trace_id:** `str` — The unique abv identifier of the trace to delete

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.trace.list(...)

#### 📝 Description

Get list of traces

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.trace.list()

```


#### ⚙️ Parameters

**page:** `typing.Optional[int]` — Page number, starts at 1

**limit:** `typing.Optional[int]` — Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.

**user_id:** `typing.Optional[str]` 

**name:** `typing.Optional[str]` 

**session_id:** `typing.Optional[str]` 

**from_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include traces with a trace.timestamp on or after a certain datetime (ISO 8601)

**to_timestamp:** `typing.Optional[dt.datetime]` — Optional filter to only include traces with a trace.timestamp before a certain datetime (ISO 8601)

**order_by:** `typing.Optional[str]` — Format of the string [field].[asc/desc]. Fields: id, timestamp, name, userId, release, version, public, bookmarked, sessionId. Example: timestamp.asc

**tags:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Only traces that include all of these tags will be returned.

**version:** `typing.Optional[str]` — Optional filter to only include traces with a certain version.

**release:** `typing.Optional[str]` — Optional filter to only include traces with a certain release.

**environment:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Optional filter for traces where the environment is one of the provided values.

**fields:** `typing.Optional[str]` — Comma-separated list of fields to include in the response. Available field groups are 'core' (always included), 'io' (input, output, metadata), 'scores', 'observations', 'metrics'. If not provided, all fields are included. Example: 'core,scores,metrics'

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

client.trace.delete_multiple(...)

#### 📝 Description

Delete multiple traces

#### 🔌 Usage

```python
from abv.client import FernABV

client = FernABV(
    x_abv_sdk_name="YOUR_X_ABV_SDK_NAME",
    x_abv_sdk_version="YOUR_X_ABV_SDK_VERSION",
    x_abv_public_key="YOUR_X_ABV_PUBLIC_KEY",
    username="YOUR_USERNAME",
    password="YOUR_PASSWORD",
    base_url="https://yourhost.com/path/to/api",
)
client.trace.delete_multiple(
    trace_ids=["traceIds", "traceIds"],
)

```


#### ⚙️ Parameters

**trace_ids:** `typing.Sequence[str]` — List of trace IDs to delete

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

