---
title: prefactor_http package
editUrl: true
head: []
template: doc
sidebar:
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

# prefactor_http package

Prefactor HTTP Client - Async HTTP client for Prefactor API.

This package provides a high-level async HTTP client for interacting with
the Prefactor API, including:

- AgentInstance endpoints (register, start, finish)
- AgentSpan endpoints (create, finish)
- Bulk endpoints (execute multiple operations)
- Automatic retry with exponential backoff
- Comprehensive error handling
- Type-safe data models

### Example

```pycon
>>> import asyncio
>>> from prefactor_http import PrefactorHttpClient, HttpClientConfig
>>>
>>> async def main():
...     config = HttpClientConfig(
...         api_url="https://api.prefactor.ai",
...         api_token="your-token"
...     )
...     async with PrefactorHttpClient(config) as client:
...         instance = await client.agent_instances.register(...)
...         print(instance)
>>>
>>> asyncio.run(main())
```

### *class* prefactor_http.AgentInstance(, type: Literal['agent_instance'], id: str, account_id: str, agent_id: str, agent_version_id: str, environment_id: str, status: Literal['pending', 'active', 'complete', 'failed', 'cancelled'], inserted_at: datetime, updated_at: datetime, started_at: datetime | None = None, finished_at: datetime | None = None, span_counts: [AgentInstanceSpanCounts](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.AgentInstanceSpanCounts) | None = None)

Bases: `BaseModel`

Agent instance model.

#### type

Resource type (always “agent_instance”)

* **Type:**
  Literal[‘agent_instance’]

#### id

Instance ID

* **Type:**
  str

#### account_id

Account ID

* **Type:**
  str

#### agent_id

Agent ID

* **Type:**
  str

#### agent_version_id

Agent version ID

* **Type:**
  str

#### environment_id

Environment ID

* **Type:**
  str

#### status

Instance status

* **Type:**
  AgentStatus

#### inserted_at

When the instance was created

* **Type:**
  datetime

#### updated_at

When the instance was last updated

* **Type:**
  datetime

#### started_at

When the instance started (null if not started)

* **Type:**
  datetime | None

#### finished_at

When the instance finished (null if not finished)

* **Type:**
  datetime | None

#### span_counts

Span counts for this instance

* **Type:**
  [AgentInstanceSpanCounts](#prefactor_http.AgentInstanceSpanCounts) | None

#### account_id *: str*

#### agent_id *: str*

#### agent_version_id *: str*

#### environment_id *: str*

#### finished_at *: datetime | None*

#### id *: str*

#### inserted_at *: datetime*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### span_counts *: [AgentInstanceSpanCounts](#prefactor_http.AgentInstanceSpanCounts) | None*

#### started_at *: datetime | None*

#### status *: AgentStatus*

#### type *: Literal['agent_instance']*

#### updated_at *: datetime*

### *class* prefactor_http.AgentInstanceSpanCounts(, total: int, pending: int, active: int, complete: int, failed: int, cancelled: int, finished: int)

Bases: `BaseModel`

Span counts for an agent instance.

#### total

Total number of spans

* **Type:**
  int

#### pending

Number of pending spans

* **Type:**
  int

#### active

Number of active spans

* **Type:**
  int

#### complete

Number of completed spans

* **Type:**
  int

#### failed

Number of failed spans

* **Type:**
  int

#### cancelled

Number of cancelled spans

* **Type:**
  int

#### finished

Number of finished spans (complete + failed + cancelled)

* **Type:**
  int

#### active *: int*

#### cancelled *: int*

#### complete *: int*

#### failed *: int*

#### finished *: int*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### pending *: int*

#### total *: int*

### *class* prefactor_http.AgentSchemaVersionForRegister(, external_identifier: str | None = None, span_schemas: dict[str, dict] | None = None, span_result_schemas: dict[str, dict] | None = None, span_type_schemas: list[[SpanTypeSchemaForCreate](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.SpanTypeSchemaForCreate)] | None = None)

Bases: `BaseModel`

Schema version information for registration.

#### external_identifier

External identifier for the schema version

* **Type:**
  str | None

#### span_schemas

Map of span type names to JSON schemas

* **Type:**
  dict[str, dict] | None

#### span_result_schemas

Map of span type names to result JSON schemas

* **Type:**
  dict[str, dict] | None

#### span_type_schemas

List of span type schema details

* **Type:**
  list[[SpanTypeSchemaForCreate](#prefactor_http.SpanTypeSchemaForCreate)] | None

#### external_identifier *: str | None*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### span_result_schemas *: dict[str, dict] | None*

#### span_schemas *: dict[str, dict] | None*

#### span_type_schemas *: list[[SpanTypeSchemaForCreate](#prefactor_http.SpanTypeSchemaForCreate)] | None*

### *class* prefactor_http.AgentSpan(\*, type: ~typing.Literal['agent_span'], id: str, account_id: str | None = None, agent_id: str | None = None, agent_instance_id: str, parent_span_id: str | None = None, schema_name: str, schema_title: str | None = None, status: ~typing.Literal['pending', 'active', 'complete', 'failed', 'cancelled'], payload: dict = <factory>, result_payload: dict | None = None, summary: str | None = None, started_at: ~datetime.datetime | None = None, inserted_at: ~datetime.datetime | None = None, updated_at: ~datetime.datetime | None = None, finished_at: ~datetime.datetime | None = None)

Bases: `BaseModel`

Agent span model.

#### type

Resource type (always “agent_span”)

* **Type:**
  Literal[‘agent_span’]

#### id

Span ID

* **Type:**
  str

#### account_id

Account ID

* **Type:**
  str | None

#### agent_id

Agent ID

* **Type:**
  str | None

#### agent_instance_id

Agent instance ID

* **Type:**
  str

#### parent_span_id

Parent span ID (None if root span)

* **Type:**
  str | None

#### schema_name

Name of the schema for this span

* **Type:**
  str

#### schema_title

Title of the schema for this span

* **Type:**
  str | None

#### status

Span status

* **Type:**
  Literal[‘pending’, ‘active’, ‘complete’, ‘failed’, ‘cancelled’]

#### payload

Span payload data

* **Type:**
  dict

#### result_payload

Result payload data

* **Type:**
  dict | None

#### summary

Optional span summary

* **Type:**
  str | None

#### started_at

When the span started

* **Type:**
  datetime.datetime | None

#### inserted_at

When the span was created

* **Type:**
  datetime.datetime | None

#### updated_at

When the span was last updated

* **Type:**
  datetime.datetime | None

#### finished_at

When the span finished (None if in progress)

* **Type:**
  datetime.datetime | None

#### account_id *: str | None*

#### agent_id *: str | None*

#### agent_instance_id *: str*

#### finished_at *: datetime | None*

#### id *: str*

#### inserted_at *: datetime | None*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### parent_span_id *: str | None*

#### payload *: dict*

#### result_payload *: dict | None*

#### schema_name *: str*

#### schema_title *: str | None*

#### started_at *: datetime | None*

#### status *: Literal['pending', 'active', 'complete', 'failed', 'cancelled']*

#### summary *: str | None*

#### type *: Literal['agent_span']*

#### updated_at *: datetime | None*

### *class* prefactor_http.AgentVersionForRegister(, name: str | None = None, external_identifier: str | None = None, description: str | None = None)

Bases: `BaseModel`

Agent version information for registration.

#### name

Name of the agent version

* **Type:**
  str | None

#### external_identifier

External identifier for the version (e.g., “v1.0.0”)

* **Type:**
  str | None

#### description

Optional description of the version

* **Type:**
  str | None

#### description *: str | None*

#### external_identifier *: str | None*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### name *: str | None*

### *class* prefactor_http.ApiResponse(, status: str, details: T)

Bases: `BaseModel`, `Generic`[`T`]

Generic API response wrapper.

#### status

Response status (always “success” for successful requests)

* **Type:**
  str

#### details

Detailed response data

* **Type:**
  prefactor_http.models.base.T

#### details *: T*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### status *: str*

### *class* prefactor_http.BulkItem(, \_type: str, idempotency_key: Annotated[str, MinLen(min_length=8), MaxLen(max_length=64)], \*\*extra_data: Any)

Bases: `BaseModel`

A single item in a bulk request.

Each item must include \_type and idempotency_key, plus any additional
parameters required by the specific action type.

#### idempotency_key *: str*

Required unique idempotency key for this item. Must be at least 8
characters long and unique within the request.

#### model_config *= {'extra': 'allow'}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### type *: str*

The type of query/action to execute (e.g., ‘agents/list’, ‘agents/create’).

### *class* prefactor_http.BulkOutput(, status: str, \*\*extra_data: Any)

Bases: `BaseModel`

Output from a query or action.

Contains either a success response (with ‘status’: ‘success’ and
operation-specific data) or an error response (with ‘status’: ‘error’,
‘code’, ‘message’, and optionally ‘errors’).

#### model_config *= {'extra': 'allow'}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### status *: str*

‘success’ or ‘error’.

* **Type:**
  Status of the operation

#### *classmethod* validate_status(v: str) → str

### *class* prefactor_http.BulkRequest(, items: Annotated[list[[BulkItem](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkItem)], MinLen(min_length=1)])

Bases: `BaseModel`

Request body for bulk query/action operations.

Allows executing multiple API operations in a single request.

#### items *: list[[BulkItem](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkItem)]*

List of items to process in bulk. Each item will be processed independently
in its own transaction.

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### *classmethod* validate_unique_idempotency_keys(items: list[[BulkItem](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkItem)]) → list[[BulkItem](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkItem)]

Validate that all idempotency keys are unique within the request.

### *class* prefactor_http.BulkResponse(, status: str = 'success', outputs: dict[str, [BulkOutput](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkOutput)])

Bases: `BaseModel`

Response from bulk query/action operations.

Contains a map of results keyed by the idempotency_key from each request item.

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### outputs *: dict[str, [BulkOutput](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkOutput)]*

Map where keys are the idempotency_key values from the request, and values
are the corresponding query/action outputs or error responses.

#### status *: str*

Response status, always ‘success’ when the request is processed.

### *class* prefactor_http.FinishInstanceRequest(, status: Literal['complete', 'failed', 'cancelled'] | None = None, timestamp: str | None = None, idempotency_key: str | None = None)

Bases: `BaseModel`

Request to finish an agent instance.

#### status

Optional finish status (complete, failed, cancelled)

* **Type:**
  FinishStatus | None

#### timestamp

Optional ISO 8601 timestamp (defaults to current time)

* **Type:**
  str | None

#### idempotency_key

Optional idempotency key

* **Type:**
  str | None

#### idempotency_key *: str | None*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### status *: FinishStatus | None*

#### timestamp *: str | None*

### *class* prefactor_http.HttpClientConfig(api_url: str, api_token: str, request_timeout: float = 30.0, connect_timeout: float = 10.0, max_retries: int = 3, initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0, retry_multiplier: float = 2.0, retry_on_status_codes: tuple[int, ...] = (429, 500, 502, 503, 504), default_idempotency_key: str | None = None)

Bases: `object`

Configuration for the HTTP client.

#### api_url

Base URL for the Prefactor API.
Example: ‘[https://api.prefactor.ai](https://api.prefactor.ai)’

* **Type:**
  str

#### api_token

Bearer token for API authentication.

* **Type:**
  str

#### request_timeout

Total timeout for requests in seconds (default: 30.0).

* **Type:**
  float

#### connect_timeout

Connection timeout in seconds (default: 10.0).

* **Type:**
  float

#### max_retries

Maximum number of retry attempts (default: 3).

* **Type:**
  int

#### initial_retry_delay

Initial delay between retries in seconds (default: 1.0).

* **Type:**
  float

#### max_retry_delay

Maximum delay between retries in seconds (default: 60.0).

* **Type:**
  float

#### retry_multiplier

Multiplier for exponential backoff (default: 2.0).

* **Type:**
  float

#### retry_on_status_codes

HTTP status codes to retry on
(default: 429, 500, 502, 503, 504).

* **Type:**
  tuple[int, …]

#### default_idempotency_key

Optional default idempotency key prefix.

* **Type:**
  str | None

#### api_token *: str*

#### api_url *: str*

#### connect_timeout *: float* *= 10.0*

#### default_idempotency_key *: str | None* *= None*

#### initial_retry_delay *: float* *= 1.0*

#### max_retries *: int* *= 3*

#### max_retry_delay *: float* *= 60.0*

#### request_timeout *: float* *= 30.0*

#### retry_multiplier *: float* *= 2.0*

#### retry_on_status_codes *: tuple[int, ...]* *= (429, 500, 502, 503, 504)*

### *exception* prefactor_http.PrefactorApiError(message: str, code: str, status_code: int)

Bases: [`PrefactorHttpError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorHttpError)

API returned an error response.

#### message

Human-readable error message

#### code

Error code from the API

#### status_code

HTTP status code

### *exception* prefactor_http.PrefactorAuthError(message: str, code: str, status_code: int)

Bases: [`PrefactorApiError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError)

Authentication/authorization errors (401, 403).

### *exception* prefactor_http.PrefactorClientError

Bases: [`PrefactorHttpError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorHttpError)

Client-side error (not related to API).

### *class* prefactor_http.PrefactorHttpClient(config: [HttpClientConfig](prefactor_http.config.md#prefactor_http.config.HttpClientConfig), sdk_header: str | None = None)

Bases: `object`

Main HTTP client for interacting with the Prefactor API.

This client provides high-level methods for all API endpoints with
built-in retry logic, error handling, and idempotency support.

Usage:
: async with PrefactorHttpClient(config) as client:
  : instance = await client.agent_instances.register(…)
    span = await client.agent_spans.create(…)

#### *property* agent_instances *: [AgentInstanceClient](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentInstanceClient)*

Access the agent instance endpoint client.

Provides methods to interact with agent instances:
- register: Create a new agent instance
- start: Mark an instance as started
- finish: Mark an instance as finished

### Example

instance = await client.agent_instances.register(agent_id, agent_version)

#### *property* agent_spans *: [AgentSpanClient](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentSpanClient)*

Access the agent span endpoint client.

Provides methods to interact with agent spans:
- create: Create a new agent span
- finish: Mark a span as finished

### Example

span = await client.agent_spans.create(
: agent_instance_id, schema_name, payload

)

#### *property* bulk *: [BulkClient](prefactor_http.endpoints.md#prefactor_http.endpoints.BulkClient)*

Access the bulk endpoint client.

Provides methods to execute multiple queries/actions in a single request:
- execute: Execute bulk operations

### Example

response = await client.bulk.execute(bulk_request)

#### *async* close() → None

Close the HTTP session.

#### *async* request(method: str, path: str, , params: dict[str, Any] | None = None, json_data: dict[str, Any] | None = None, idempotency_key: str | None = None) → dict[str, Any]

Make an HTTP request with retry logic.

This is the public request method that wraps the core request
with retry handling.

* **Parameters:**
  * **method** – HTTP method (GET, POST, PUT, DELETE).
  * **path** – API path.
  * **params** – Query parameters.
  * **json_data** – JSON body data.
  * **idempotency_key** – Optional idempotency key.
* **Returns:**
  Parsed JSON response.
* **Raises:**
  * [**PrefactorRetryExhaustedError**](#prefactor_http.PrefactorRetryExhaustedError) – When retries are exhausted.
  * [**PrefactorApiError**](#prefactor_http.PrefactorApiError) – On API errors.

### *exception* prefactor_http.PrefactorHttpError

Bases: `Exception`

Base exception for all HTTP client errors.

### *exception* prefactor_http.PrefactorNotFoundError(message: str, code: str, status_code: int)

Bases: [`PrefactorApiError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError)

Resource not found (404).

### *exception* prefactor_http.PrefactorResponseContractError(message: str, , status_code: int | None = None, body_snippet: str | None = None, cause: Exception | None = None)

Bases: [`PrefactorHttpError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorHttpError)

Backend response violated the SDK’s expected response contract.

### *exception* prefactor_http.PrefactorRetryExhaustedError(message: str, last_error: Exception | None = None)

Bases: [`PrefactorHttpError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorHttpError)

All retry attempts exhausted.

#### last_error

The last exception that caused the retry to fail

### *exception* prefactor_http.PrefactorValidationError(message: str, code: str, status_code: int, errors: dict)

Bases: [`PrefactorApiError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError)

Validation errors (400, 422).

#### errors

Detailed validation errors mapping field names to error messages

### *class* prefactor_http.SpanTypeSchemaForCreate(, name: str, params_schema: dict, result_schema: dict | None = None, title: str | None = None, description: str | None = None, template: str | None = None, data_risk: [DataRisk](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.DataRisk) | None = None)

Bases: `BaseModel`

Span type schema details for registration.

#### name

Name of the span type

* **Type:**
  str

#### params_schema

JSON schema for span parameters

* **Type:**
  dict

#### result_schema

Optional JSON schema for span results

* **Type:**
  dict | None

#### title

Optional human-readable title

* **Type:**
  str | None

#### description

Optional description

* **Type:**
  str | None

#### template

Optional template string

* **Type:**
  str | None

#### data_risk

Optional data risk classification

* **Type:**
  [DataRisk](prefactor_http.models.md#prefactor_http.models.DataRisk) | None

#### data_risk *: [DataRisk](prefactor_http.models.md#prefactor_http.models.DataRisk) | None*

#### description *: str | None*

#### model_config *= {}*

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

#### name *: str*

#### params_schema *: dict*

#### result_schema *: dict | None*

#### template *: str | None*

#### title *: str | None*

## Subpackages

* [prefactor_http.endpoints package](prefactor_http.endpoints.md)
  * [`AgentInstanceClient`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentInstanceClient)
    * [`AgentInstanceClient.finish()`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentInstanceClient.finish)
    * [`AgentInstanceClient.register()`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentInstanceClient.register)
    * [`AgentInstanceClient.start()`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentInstanceClient.start)
  * [`AgentSpanClient`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentSpanClient)
    * [`AgentSpanClient.create()`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentSpanClient.create)
    * [`AgentSpanClient.finish()`](prefactor_http.endpoints.md#prefactor_http.endpoints.AgentSpanClient.finish)
  * [`BulkClient`](prefactor_http.endpoints.md#prefactor_http.endpoints.BulkClient)
    * [`BulkClient.execute()`](prefactor_http.endpoints.md#prefactor_http.endpoints.BulkClient.execute)
  * [Submodules](prefactor_http.endpoints.md#submodules)
    * [prefactor_http.endpoints.agent_instance module](prefactor_http.endpoints.agent_instance.md)
      * [`AgentInstanceClient`](prefactor_http.endpoints.agent_instance.md#prefactor_http.endpoints.agent_instance.AgentInstanceClient)
    * [prefactor_http.endpoints.agent_span module](prefactor_http.endpoints.agent_span.md)
      * [`AgentSpanClient`](prefactor_http.endpoints.agent_span.md#prefactor_http.endpoints.agent_span.AgentSpanClient)
    * [prefactor_http.endpoints.bulk module](prefactor_http.endpoints.bulk.md)
      * [`BulkClient`](prefactor_http.endpoints.bulk.md#prefactor_http.endpoints.bulk.BulkClient)
* [prefactor_http.models package](prefactor_http.models.md)
  * [`ActionProfile`](prefactor_http.models.md#prefactor_http.models.ActionProfile)
    * [`ActionProfile.create_data`](prefactor_http.models.md#prefactor_http.models.ActionProfile.create_data)
    * [`ActionProfile.read_data`](prefactor_http.models.md#prefactor_http.models.ActionProfile.read_data)
    * [`ActionProfile.update_data`](prefactor_http.models.md#prefactor_http.models.ActionProfile.update_data)
    * [`ActionProfile.destroy_data`](prefactor_http.models.md#prefactor_http.models.ActionProfile.destroy_data)
    * [`ActionProfile.financial_transactions`](prefactor_http.models.md#prefactor_http.models.ActionProfile.financial_transactions)
    * [`ActionProfile.external_communication`](prefactor_http.models.md#prefactor_http.models.ActionProfile.external_communication)
    * [`ActionProfile.create_data`](prefactor_http.models.md#id0)
    * [`ActionProfile.destroy_data`](prefactor_http.models.md#id1)
    * [`ActionProfile.external_communication`](prefactor_http.models.md#id2)
    * [`ActionProfile.financial_transactions`](prefactor_http.models.md#id3)
    * [`ActionProfile.model_config`](prefactor_http.models.md#prefactor_http.models.ActionProfile.model_config)
    * [`ActionProfile.read_data`](prefactor_http.models.md#id4)
    * [`ActionProfile.update_data`](prefactor_http.models.md#id5)
  * [`AgentInstance`](prefactor_http.models.md#prefactor_http.models.AgentInstance)
    * [`AgentInstance.type`](prefactor_http.models.md#prefactor_http.models.AgentInstance.type)
    * [`AgentInstance.id`](prefactor_http.models.md#prefactor_http.models.AgentInstance.id)
    * [`AgentInstance.account_id`](prefactor_http.models.md#prefactor_http.models.AgentInstance.account_id)
    * [`AgentInstance.agent_id`](prefactor_http.models.md#prefactor_http.models.AgentInstance.agent_id)
    * [`AgentInstance.agent_version_id`](prefactor_http.models.md#prefactor_http.models.AgentInstance.agent_version_id)
    * [`AgentInstance.environment_id`](prefactor_http.models.md#prefactor_http.models.AgentInstance.environment_id)
    * [`AgentInstance.status`](prefactor_http.models.md#prefactor_http.models.AgentInstance.status)
    * [`AgentInstance.inserted_at`](prefactor_http.models.md#prefactor_http.models.AgentInstance.inserted_at)
    * [`AgentInstance.updated_at`](prefactor_http.models.md#prefactor_http.models.AgentInstance.updated_at)
    * [`AgentInstance.started_at`](prefactor_http.models.md#prefactor_http.models.AgentInstance.started_at)
    * [`AgentInstance.finished_at`](prefactor_http.models.md#prefactor_http.models.AgentInstance.finished_at)
    * [`AgentInstance.span_counts`](prefactor_http.models.md#prefactor_http.models.AgentInstance.span_counts)
    * [`AgentInstance.account_id`](prefactor_http.models.md#id6)
    * [`AgentInstance.agent_id`](prefactor_http.models.md#id7)
    * [`AgentInstance.agent_version_id`](prefactor_http.models.md#id8)
    * [`AgentInstance.environment_id`](prefactor_http.models.md#id9)
    * [`AgentInstance.finished_at`](prefactor_http.models.md#id10)
    * [`AgentInstance.id`](prefactor_http.models.md#id11)
    * [`AgentInstance.inserted_at`](prefactor_http.models.md#id12)
    * [`AgentInstance.model_config`](prefactor_http.models.md#prefactor_http.models.AgentInstance.model_config)
    * [`AgentInstance.span_counts`](prefactor_http.models.md#id13)
    * [`AgentInstance.started_at`](prefactor_http.models.md#id14)
    * [`AgentInstance.status`](prefactor_http.models.md#id15)
    * [`AgentInstance.type`](prefactor_http.models.md#id16)
    * [`AgentInstance.updated_at`](prefactor_http.models.md#id17)
  * [`AgentInstanceSpanCounts`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts)
    * [`AgentInstanceSpanCounts.total`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.total)
    * [`AgentInstanceSpanCounts.pending`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.pending)
    * [`AgentInstanceSpanCounts.active`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.active)
    * [`AgentInstanceSpanCounts.complete`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.complete)
    * [`AgentInstanceSpanCounts.failed`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.failed)
    * [`AgentInstanceSpanCounts.cancelled`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.cancelled)
    * [`AgentInstanceSpanCounts.finished`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.finished)
    * [`AgentInstanceSpanCounts.active`](prefactor_http.models.md#id18)
    * [`AgentInstanceSpanCounts.cancelled`](prefactor_http.models.md#id19)
    * [`AgentInstanceSpanCounts.complete`](prefactor_http.models.md#id20)
    * [`AgentInstanceSpanCounts.failed`](prefactor_http.models.md#id21)
    * [`AgentInstanceSpanCounts.finished`](prefactor_http.models.md#id22)
    * [`AgentInstanceSpanCounts.model_config`](prefactor_http.models.md#prefactor_http.models.AgentInstanceSpanCounts.model_config)
    * [`AgentInstanceSpanCounts.pending`](prefactor_http.models.md#id23)
    * [`AgentInstanceSpanCounts.total`](prefactor_http.models.md#id24)
  * [`AgentSchemaVersionForRegister`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister)
    * [`AgentSchemaVersionForRegister.external_identifier`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister.external_identifier)
    * [`AgentSchemaVersionForRegister.span_schemas`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister.span_schemas)
    * [`AgentSchemaVersionForRegister.span_result_schemas`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister.span_result_schemas)
    * [`AgentSchemaVersionForRegister.span_type_schemas`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister.span_type_schemas)
    * [`AgentSchemaVersionForRegister.external_identifier`](prefactor_http.models.md#id25)
    * [`AgentSchemaVersionForRegister.model_config`](prefactor_http.models.md#prefactor_http.models.AgentSchemaVersionForRegister.model_config)
    * [`AgentSchemaVersionForRegister.span_result_schemas`](prefactor_http.models.md#id26)
    * [`AgentSchemaVersionForRegister.span_schemas`](prefactor_http.models.md#id27)
    * [`AgentSchemaVersionForRegister.span_type_schemas`](prefactor_http.models.md#id28)
  * [`AgentSpan`](prefactor_http.models.md#prefactor_http.models.AgentSpan)
    * [`AgentSpan.type`](prefactor_http.models.md#prefactor_http.models.AgentSpan.type)
    * [`AgentSpan.id`](prefactor_http.models.md#prefactor_http.models.AgentSpan.id)
    * [`AgentSpan.account_id`](prefactor_http.models.md#prefactor_http.models.AgentSpan.account_id)
    * [`AgentSpan.agent_id`](prefactor_http.models.md#prefactor_http.models.AgentSpan.agent_id)
    * [`AgentSpan.agent_instance_id`](prefactor_http.models.md#prefactor_http.models.AgentSpan.agent_instance_id)
    * [`AgentSpan.parent_span_id`](prefactor_http.models.md#prefactor_http.models.AgentSpan.parent_span_id)
    * [`AgentSpan.schema_name`](prefactor_http.models.md#prefactor_http.models.AgentSpan.schema_name)
    * [`AgentSpan.schema_title`](prefactor_http.models.md#prefactor_http.models.AgentSpan.schema_title)
    * [`AgentSpan.status`](prefactor_http.models.md#prefactor_http.models.AgentSpan.status)
    * [`AgentSpan.payload`](prefactor_http.models.md#prefactor_http.models.AgentSpan.payload)
    * [`AgentSpan.result_payload`](prefactor_http.models.md#prefactor_http.models.AgentSpan.result_payload)
    * [`AgentSpan.summary`](prefactor_http.models.md#prefactor_http.models.AgentSpan.summary)
    * [`AgentSpan.started_at`](prefactor_http.models.md#prefactor_http.models.AgentSpan.started_at)
    * [`AgentSpan.inserted_at`](prefactor_http.models.md#prefactor_http.models.AgentSpan.inserted_at)
    * [`AgentSpan.updated_at`](prefactor_http.models.md#prefactor_http.models.AgentSpan.updated_at)
    * [`AgentSpan.finished_at`](prefactor_http.models.md#prefactor_http.models.AgentSpan.finished_at)
    * [`AgentSpan.account_id`](prefactor_http.models.md#id29)
    * [`AgentSpan.agent_id`](prefactor_http.models.md#id30)
    * [`AgentSpan.agent_instance_id`](prefactor_http.models.md#id31)
    * [`AgentSpan.finished_at`](prefactor_http.models.md#id32)
    * [`AgentSpan.id`](prefactor_http.models.md#id33)
    * [`AgentSpan.inserted_at`](prefactor_http.models.md#id34)
    * [`AgentSpan.model_config`](prefactor_http.models.md#prefactor_http.models.AgentSpan.model_config)
    * [`AgentSpan.parent_span_id`](prefactor_http.models.md#id35)
    * [`AgentSpan.payload`](prefactor_http.models.md#id36)
    * [`AgentSpan.result_payload`](prefactor_http.models.md#id37)
    * [`AgentSpan.schema_name`](prefactor_http.models.md#id38)
    * [`AgentSpan.schema_title`](prefactor_http.models.md#id39)
    * [`AgentSpan.started_at`](prefactor_http.models.md#id40)
    * [`AgentSpan.status`](prefactor_http.models.md#id41)
    * [`AgentSpan.summary`](prefactor_http.models.md#id42)
    * [`AgentSpan.type`](prefactor_http.models.md#id43)
    * [`AgentSpan.updated_at`](prefactor_http.models.md#id44)
  * [`AgentVersionForRegister`](prefactor_http.models.md#prefactor_http.models.AgentVersionForRegister)
    * [`AgentVersionForRegister.name`](prefactor_http.models.md#prefactor_http.models.AgentVersionForRegister.name)
    * [`AgentVersionForRegister.external_identifier`](prefactor_http.models.md#prefactor_http.models.AgentVersionForRegister.external_identifier)
    * [`AgentVersionForRegister.description`](prefactor_http.models.md#prefactor_http.models.AgentVersionForRegister.description)
    * [`AgentVersionForRegister.description`](prefactor_http.models.md#id45)
    * [`AgentVersionForRegister.external_identifier`](prefactor_http.models.md#id46)
    * [`AgentVersionForRegister.model_config`](prefactor_http.models.md#prefactor_http.models.AgentVersionForRegister.model_config)
    * [`AgentVersionForRegister.name`](prefactor_http.models.md#id47)
  * [`ApiResponse`](prefactor_http.models.md#prefactor_http.models.ApiResponse)
    * [`ApiResponse.status`](prefactor_http.models.md#prefactor_http.models.ApiResponse.status)
    * [`ApiResponse.details`](prefactor_http.models.md#prefactor_http.models.ApiResponse.details)
    * [`ApiResponse.details`](prefactor_http.models.md#id48)
    * [`ApiResponse.model_config`](prefactor_http.models.md#prefactor_http.models.ApiResponse.model_config)
    * [`ApiResponse.status`](prefactor_http.models.md#id49)
  * [`BulkItem`](prefactor_http.models.md#prefactor_http.models.BulkItem)
    * [`BulkItem.idempotency_key`](prefactor_http.models.md#prefactor_http.models.BulkItem.idempotency_key)
    * [`BulkItem.model_config`](prefactor_http.models.md#prefactor_http.models.BulkItem.model_config)
    * [`BulkItem.type`](prefactor_http.models.md#prefactor_http.models.BulkItem.type)
  * [`BulkOutput`](prefactor_http.models.md#prefactor_http.models.BulkOutput)
    * [`BulkOutput.model_config`](prefactor_http.models.md#prefactor_http.models.BulkOutput.model_config)
    * [`BulkOutput.status`](prefactor_http.models.md#prefactor_http.models.BulkOutput.status)
    * [`BulkOutput.validate_status()`](prefactor_http.models.md#prefactor_http.models.BulkOutput.validate_status)
  * [`BulkRequest`](prefactor_http.models.md#prefactor_http.models.BulkRequest)
    * [`BulkRequest.items`](prefactor_http.models.md#prefactor_http.models.BulkRequest.items)
    * [`BulkRequest.model_config`](prefactor_http.models.md#prefactor_http.models.BulkRequest.model_config)
    * [`BulkRequest.validate_unique_idempotency_keys()`](prefactor_http.models.md#prefactor_http.models.BulkRequest.validate_unique_idempotency_keys)
  * [`BulkResponse`](prefactor_http.models.md#prefactor_http.models.BulkResponse)
    * [`BulkResponse.model_config`](prefactor_http.models.md#prefactor_http.models.BulkResponse.model_config)
    * [`BulkResponse.outputs`](prefactor_http.models.md#prefactor_http.models.BulkResponse.outputs)
    * [`BulkResponse.status`](prefactor_http.models.md#prefactor_http.models.BulkResponse.status)
  * [`DataCategories`](prefactor_http.models.md#prefactor_http.models.DataCategories)
    * [`DataCategories.personal_identifiers`](prefactor_http.models.md#prefactor_http.models.DataCategories.personal_identifiers)
    * [`DataCategories.contact_information`](prefactor_http.models.md#prefactor_http.models.DataCategories.contact_information)
    * [`DataCategories.financial_information`](prefactor_http.models.md#prefactor_http.models.DataCategories.financial_information)
    * [`DataCategories.health_and_medical`](prefactor_http.models.md#prefactor_http.models.DataCategories.health_and_medical)
    * [`DataCategories.criminal_justice`](prefactor_http.models.md#prefactor_http.models.DataCategories.criminal_justice)
    * [`DataCategories.authentication_and_secrets`](prefactor_http.models.md#prefactor_http.models.DataCategories.authentication_and_secrets)
    * [`DataCategories.organisational_confidential`](prefactor_http.models.md#prefactor_http.models.DataCategories.organisational_confidential)
    * [`DataCategories.minors_data`](prefactor_http.models.md#prefactor_http.models.DataCategories.minors_data)
    * [`DataCategories.location_and_tracking`](prefactor_http.models.md#prefactor_http.models.DataCategories.location_and_tracking)
    * [`DataCategories.behavioural_and_inferred`](prefactor_http.models.md#prefactor_http.models.DataCategories.behavioural_and_inferred)
    * [`DataCategories.gdpr_racial_or_ethnic_origin`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_racial_or_ethnic_origin)
    * [`DataCategories.gdpr_political_opinions`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_political_opinions)
    * [`DataCategories.gdpr_religious_or_philosophical_beliefs`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_religious_or_philosophical_beliefs)
    * [`DataCategories.gdpr_trade_union_membership`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_trade_union_membership)
    * [`DataCategories.gdpr_genetic_data`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_genetic_data)
    * [`DataCategories.gdpr_biometric_for_identification`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_biometric_for_identification)
    * [`DataCategories.gdpr_sex_life_or_sexual_orientation`](prefactor_http.models.md#prefactor_http.models.DataCategories.gdpr_sex_life_or_sexual_orientation)
    * [`DataCategories.classification`](prefactor_http.models.md#prefactor_http.models.DataCategories.classification)
    * [`DataCategories.authentication_and_secrets`](prefactor_http.models.md#id50)
    * [`DataCategories.behavioural_and_inferred`](prefactor_http.models.md#id51)
    * [`DataCategories.classification`](prefactor_http.models.md#id52)
    * [`DataCategories.contact_information`](prefactor_http.models.md#id53)
    * [`DataCategories.criminal_justice`](prefactor_http.models.md#id54)
    * [`DataCategories.financial_information`](prefactor_http.models.md#id55)
    * [`DataCategories.gdpr_biometric_for_identification`](prefactor_http.models.md#id56)
    * [`DataCategories.gdpr_genetic_data`](prefactor_http.models.md#id57)
    * [`DataCategories.gdpr_political_opinions`](prefactor_http.models.md#id58)
    * [`DataCategories.gdpr_racial_or_ethnic_origin`](prefactor_http.models.md#id59)
    * [`DataCategories.gdpr_religious_or_philosophical_beliefs`](prefactor_http.models.md#id60)
    * [`DataCategories.gdpr_sex_life_or_sexual_orientation`](prefactor_http.models.md#id61)
    * [`DataCategories.gdpr_trade_union_membership`](prefactor_http.models.md#id62)
    * [`DataCategories.health_and_medical`](prefactor_http.models.md#id63)
    * [`DataCategories.location_and_tracking`](prefactor_http.models.md#id64)
    * [`DataCategories.minors_data`](prefactor_http.models.md#id65)
    * [`DataCategories.model_config`](prefactor_http.models.md#prefactor_http.models.DataCategories.model_config)
    * [`DataCategories.organisational_confidential`](prefactor_http.models.md#id66)
    * [`DataCategories.personal_identifiers`](prefactor_http.models.md#id67)
  * [`DataRisk`](prefactor_http.models.md#prefactor_http.models.DataRisk)
    * [`DataRisk.action_profile`](prefactor_http.models.md#prefactor_http.models.DataRisk.action_profile)
    * [`DataRisk.params_data_categories`](prefactor_http.models.md#prefactor_http.models.DataRisk.params_data_categories)
    * [`DataRisk.result_data_categories`](prefactor_http.models.md#prefactor_http.models.DataRisk.result_data_categories)
    * [`DataRisk.action_profile`](prefactor_http.models.md#id68)
    * [`DataRisk.model_config`](prefactor_http.models.md#prefactor_http.models.DataRisk.model_config)
    * [`DataRisk.params_data_categories`](prefactor_http.models.md#id69)
    * [`DataRisk.result_data_categories`](prefactor_http.models.md#id70)
  * [`FinishInstanceRequest`](prefactor_http.models.md#prefactor_http.models.FinishInstanceRequest)
    * [`FinishInstanceRequest.status`](prefactor_http.models.md#prefactor_http.models.FinishInstanceRequest.status)
    * [`FinishInstanceRequest.timestamp`](prefactor_http.models.md#prefactor_http.models.FinishInstanceRequest.timestamp)
    * [`FinishInstanceRequest.idempotency_key`](prefactor_http.models.md#prefactor_http.models.FinishInstanceRequest.idempotency_key)
    * [`FinishInstanceRequest.idempotency_key`](prefactor_http.models.md#id71)
    * [`FinishInstanceRequest.model_config`](prefactor_http.models.md#prefactor_http.models.FinishInstanceRequest.model_config)
    * [`FinishInstanceRequest.status`](prefactor_http.models.md#id72)
    * [`FinishInstanceRequest.timestamp`](prefactor_http.models.md#id73)
  * [`SpanTypeSchemaForCreate`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate)
    * [`SpanTypeSchemaForCreate.name`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.name)
    * [`SpanTypeSchemaForCreate.params_schema`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.params_schema)
    * [`SpanTypeSchemaForCreate.result_schema`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.result_schema)
    * [`SpanTypeSchemaForCreate.title`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.title)
    * [`SpanTypeSchemaForCreate.description`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.description)
    * [`SpanTypeSchemaForCreate.template`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.template)
    * [`SpanTypeSchemaForCreate.data_risk`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.data_risk)
    * [`SpanTypeSchemaForCreate.data_risk`](prefactor_http.models.md#id74)
    * [`SpanTypeSchemaForCreate.description`](prefactor_http.models.md#id75)
    * [`SpanTypeSchemaForCreate.model_config`](prefactor_http.models.md#prefactor_http.models.SpanTypeSchemaForCreate.model_config)
    * [`SpanTypeSchemaForCreate.name`](prefactor_http.models.md#id76)
    * [`SpanTypeSchemaForCreate.params_schema`](prefactor_http.models.md#id77)
    * [`SpanTypeSchemaForCreate.result_schema`](prefactor_http.models.md#id78)
    * [`SpanTypeSchemaForCreate.template`](prefactor_http.models.md#id79)
    * [`SpanTypeSchemaForCreate.title`](prefactor_http.models.md#id80)
  * [Submodules](prefactor_http.models.md#submodules)
    * [prefactor_http.models.agent_instance module](prefactor_http.models.agent_instance.md)
      * [`ActionProfile`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.ActionProfile)
      * [`AgentInstance`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.AgentInstance)
      * [`AgentInstanceSpanCounts`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.AgentInstanceSpanCounts)
      * [`AgentSchemaVersionForRegister`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.AgentSchemaVersionForRegister)
      * [`AgentVersionForRegister`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.AgentVersionForRegister)
      * [`DataCategories`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.DataCategories)
      * [`DataRisk`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.DataRisk)
      * [`FinishInstanceRequest`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.FinishInstanceRequest)
      * [`RegisterAgentInstanceRequest`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.RegisterAgentInstanceRequest)
      * [`SpanTypeSchemaForCreate`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.SpanTypeSchemaForCreate)
      * [`TimestampRequest`](prefactor_http.models.agent_instance.md#prefactor_http.models.agent_instance.TimestampRequest)
    * [prefactor_http.models.agent_span module](prefactor_http.models.agent_span.md)
      * [`AgentSpan`](prefactor_http.models.agent_span.md#prefactor_http.models.agent_span.AgentSpan)
      * [`CreateAgentSpanRequest`](prefactor_http.models.agent_span.md#prefactor_http.models.agent_span.CreateAgentSpanRequest)
      * [`FinishSpanRequest`](prefactor_http.models.agent_span.md#prefactor_http.models.agent_span.FinishSpanRequest)
    * [prefactor_http.models.base module](prefactor_http.models.base.md)
      * [`ApiError`](prefactor_http.models.base.md#prefactor_http.models.base.ApiError)
      * [`ApiResponse`](prefactor_http.models.base.md#prefactor_http.models.base.ApiResponse)
      * [`DetailedApiError`](prefactor_http.models.base.md#prefactor_http.models.base.DetailedApiError)
      * [`ListResponse`](prefactor_http.models.base.md#prefactor_http.models.base.ListResponse)
      * [`PaginationOutput`](prefactor_http.models.base.md#prefactor_http.models.base.PaginationOutput)
      * [`Sorting`](prefactor_http.models.base.md#prefactor_http.models.base.Sorting)
    * [prefactor_http.models.bulk module](prefactor_http.models.bulk.md)
      * [`BulkItem`](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkItem)
      * [`BulkOutput`](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkOutput)
      * [`BulkRequest`](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkRequest)
      * [`BulkResponse`](prefactor_http.models.bulk.md#prefactor_http.models.bulk.BulkResponse)
    * [prefactor_http.models.types module](prefactor_http.models.types.md)

## Submodules

* [prefactor_http.client module](prefactor_http.client.md)
  * [`PrefactorHttpClient`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient)
    * [`PrefactorHttpClient.agent_instances`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient.agent_instances)
    * [`PrefactorHttpClient.agent_spans`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient.agent_spans)
    * [`PrefactorHttpClient.bulk`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient.bulk)
    * [`PrefactorHttpClient.close()`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient.close)
    * [`PrefactorHttpClient.request()`](prefactor_http.client.md#prefactor_http.client.PrefactorHttpClient.request)
* [prefactor_http.config module](prefactor_http.config.md)
  * [`HttpClientConfig`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig)
    * [`HttpClientConfig.api_url`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.api_url)
    * [`HttpClientConfig.api_token`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.api_token)
    * [`HttpClientConfig.request_timeout`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.request_timeout)
    * [`HttpClientConfig.connect_timeout`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.connect_timeout)
    * [`HttpClientConfig.max_retries`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.max_retries)
    * [`HttpClientConfig.initial_retry_delay`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.initial_retry_delay)
    * [`HttpClientConfig.max_retry_delay`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.max_retry_delay)
    * [`HttpClientConfig.retry_multiplier`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.retry_multiplier)
    * [`HttpClientConfig.retry_on_status_codes`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.retry_on_status_codes)
    * [`HttpClientConfig.default_idempotency_key`](prefactor_http.config.md#prefactor_http.config.HttpClientConfig.default_idempotency_key)
    * [`HttpClientConfig.api_token`](prefactor_http.config.md#id0)
    * [`HttpClientConfig.api_url`](prefactor_http.config.md#id1)
    * [`HttpClientConfig.connect_timeout`](prefactor_http.config.md#id2)
    * [`HttpClientConfig.default_idempotency_key`](prefactor_http.config.md#id3)
    * [`HttpClientConfig.initial_retry_delay`](prefactor_http.config.md#id4)
    * [`HttpClientConfig.max_retries`](prefactor_http.config.md#id5)
    * [`HttpClientConfig.max_retry_delay`](prefactor_http.config.md#id6)
    * [`HttpClientConfig.request_timeout`](prefactor_http.config.md#id7)
    * [`HttpClientConfig.retry_multiplier`](prefactor_http.config.md#id8)
    * [`HttpClientConfig.retry_on_status_codes`](prefactor_http.config.md#id9)
* [prefactor_http.exceptions module](prefactor_http.exceptions.md)
  * [`PrefactorApiError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError)
    * [`PrefactorApiError.message`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError.message)
    * [`PrefactorApiError.code`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError.code)
    * [`PrefactorApiError.status_code`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorApiError.status_code)
  * [`PrefactorAuthError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorAuthError)
  * [`PrefactorClientError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorClientError)
  * [`PrefactorHttpError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorHttpError)
  * [`PrefactorNotFoundError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorNotFoundError)
  * [`PrefactorResponseContractError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorResponseContractError)
  * [`PrefactorRetryExhaustedError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorRetryExhaustedError)
    * [`PrefactorRetryExhaustedError.last_error`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorRetryExhaustedError.last_error)
  * [`PrefactorValidationError`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorValidationError)
    * [`PrefactorValidationError.errors`](prefactor_http.exceptions.md#prefactor_http.exceptions.PrefactorValidationError.errors)
  * [`is_permanent_http_error()`](prefactor_http.exceptions.md#prefactor_http.exceptions.is_permanent_http_error)
  * [`is_transient_http_error()`](prefactor_http.exceptions.md#prefactor_http.exceptions.is_transient_http_error)
* [prefactor_http.retry module](prefactor_http.retry.md)
  * [`RetryHandler`](prefactor_http.retry.md#prefactor_http.retry.RetryHandler)
    * [`RetryHandler.execute()`](prefactor_http.retry.md#prefactor_http.retry.RetryHandler.execute)