aixplain.v2.api_key
API Key management module for aiXplain v2 API.
This module provides classes for managing API keys and their rate limits using the V2 SDK foundation with proper mixin usage.
TokenType Objects
class TokenType(Enum)
Token type for rate limiting.
APIKeyLimits Objects
@dataclass_json
@dataclass
class APIKeyLimits()
Rate limits configuration for an API key.
Arguments:
token_per_minute- Maximum tokens per minute (maps to APItpm).token_per_day- Maximum tokens per day (maps to APItpd).request_per_minute- Maximum requests per minute (maps to APIrpm).request_per_day- Maximum requests per day (maps to APIrpd).model- The model to rate-limit. Accepts a model path string, a model ID, or aModelobject (maps to APIassetId).token_type- Which tokens to count (input, output, or total).
__post_init__
def __post_init__() -> None
Handle string token_type conversion and model object resolution.
validate
def validate() -> None
Validate rate limit values are non-negative.
APIKeyUsageLimit Objects
@dataclass_json
@dataclass
class APIKeyUsageLimit()
Usage statistics for an API key.
All fields are Optional since the API may return null values.
APIKeySearchParams Objects
class APIKeySearchParams(BaseSearchParams)
Search parameters for API keys (not used - endpoint returns all keys).
APIKeyGetParams Objects
class APIKeyGetParams(BaseGetParams)
Get parameters for API keys.
APIKeyDeleteParams Objects
class APIKeyDeleteParams(BaseDeleteParams)
Delete parameters for API keys.
APIKey Objects
@dataclass_json
@dataclass(repr=False)
class APIKey(BaseResource, SearchResourceMixin[APIKeySearchParams, "APIKey"],
GetResourceMixin[APIKeyGetParams, "APIKey"],
DeleteResourceMixin[APIKeyDeleteParams, DeleteResult])
An API key for accessing aiXplain services.
Inherits from V2 foundation:
- BaseResource: provides save() with _create/_update, clone(), _action()
- SearchResourceMixin: provides search() for listing with pagination
- GetResourceMixin: provides get() class method
- DeleteResourceMixin: provides delete() instance method
Configuration for non-paginated list endpoint:
- PAGINATE_PATH = "": Direct GET to RESOURCE_PATH (no /paginate suffix)
- PAGINATE_METHOD = "get": Use GET instead of POST
- Override _populate_filters: Return empty dict (no pagination params)
- Override _build_page: Fix page_total for non-paginated response
PAGINATE_PATH
No /paginate suffix - direct GET to RESOURCE_PATH
PAGINATE_METHOD
GET request instead of POST
__post_init__
def __post_init__() -> None
Validate limits and restore cached model paths.
__repr__
def __repr__() -> str
Return string representation.
before_save
def before_save(*args: Any, **kwargs: Any) -> None
Switch to update mode when a key with the same name already exists.
build_save_payload
def build_save_payload(**kwargs: Any) -> Dict
Build the payload for save operations.
Override because:
- Nested limits need manual serialization to API format.
- Default to_dict() excludes global_limits and asset_limits.
- Model paths must be resolved to IDs before sending to the backend.
list
@classmethod
def list(cls, **kwargs) -> List["APIKey"]
List all API keys.
Convenience wrapper around search() that returns the results list directly.
get_by_access_key
@classmethod
def get_by_access_key(cls, access_key: str, **kwargs) -> "APIKey"
Find an API key by matching first/last 4 chars of access key.
Arguments:
access_key- The full access key to match against (must be at least 8 chars)**kwargs- Additional arguments passed to list()
Returns:
The matching APIKey instance
Raises:
ValidationError- If access_key is too shortResourceError- If no matching key is found
get_usage
def get_usage(model: Optional[Any] = None) -> List[APIKeyUsageLimit]
Get usage statistics for this API key.
Arguments:
model- Optional model to filter usage by (string path/ID or Model object)
Returns:
List of usage limit objects
get_usage_limits
@classmethod
def get_usage_limits(cls,
model: Optional[Any] = None,
**kwargs) -> List[APIKeyUsageLimit]
Get usage limits for the current API key (the one used for authentication).
Arguments:
model- Optional model to filter usage by (string path/ID or Model object)**kwargs- Additional arguments (unused, for API consistency)
Returns:
List of usage limit objects
set_token_per_day
def set_token_per_day(value: int, model: Optional[Any] = None) -> None
Set token per day limit.
set_token_per_minute
def set_token_per_minute(value: int, model: Optional[Any] = None) -> None
Set token per minute limit.
set_request_per_day
def set_request_per_day(value: int, model: Optional[Any] = None) -> None
Set request per day limit.
set_request_per_minute
def set_request_per_minute(value: int, model: Optional[Any] = None) -> None
Set request per minute limit.
create
@classmethod
def create(cls,
name: str,
budget: float,
global_limits: Union[Dict, APIKeyLimits],
asset_limits: Optional[List[Union[Dict, APIKeyLimits]]] = None,
expires_at: Optional[Union[datetime, str]] = None,
**kwargs) -> "APIKey"
Create a new API key with specified limits and budget.
Arguments:
name- Name for the API keybudget- Budget limitglobal_limits- Global rate limits (dict or APIKeyLimits)asset_limits- Optional per-asset rate limitsexpires_at- Optional expiration datetime**kwargs- Additional arguments passed to save()
Returns:
The created APIKey instance