Source code for pipecat.services.heygen.base_api

#
# Copyright (c) 2024-2026, Daily
#
# SPDX-License-Identifier: BSD 2-Clause License
#

"""Base API for HeyGen avatar services.

Base class defining the common interface for HeyGen avatar service APIs.
"""

from abc import ABC, abstractmethod
from typing import Any

from pydantic import BaseModel


[docs] class StandardSessionResponse(BaseModel): """Standardized session response that all HeyGen avatar services will provide. This contains the common fields that the client needs to operate, while also storing the raw response for service-specific data access. Parameters: session_id (str): Unique identifier for the streaming session. access_token (str): Token for accessing the session securely. livekit_agent_token (str): Token for HeyGen’s audio agents(Pipecat). ws_url (str): WebSocket URL for the session. livekit_url (str): LiveKit server URL for the session. """ session_id: str access_token: str livekit_agent_token: str livekit_url: str = None ws_url: str = None raw_response: Any
[docs] class BaseAvatarApi(ABC): """Base class for avatar service APIs."""
[docs] @abstractmethod async def new_session(self, request_data: Any) -> StandardSessionResponse: """Create a new avatar session. Args: request_data: Service-specific session request data Returns: StandardSessionResponse: Standardized session information """ pass
[docs] @abstractmethod async def close_session(self, session_id: str) -> Any: """Close an avatar session. Args: session_id: ID of the session to close Returns: Response data from the close session API call """ pass