Skip to main content
Version: v2.0

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)

[view_source]

Token type for rate limiting.

APIKeyLimits Objects​

@dataclass_json

@dataclass
class APIKeyLimits()

[view_source]

Rate limits configuration for an API key.

Arguments:

  • token_per_minute - Maximum tokens per minute (maps to API tpm).
  • token_per_day - Maximum tokens per day (maps to API tpd).
  • request_per_minute - Maximum requests per minute (maps to API rpm).
  • request_per_day - Maximum requests per day (maps to API rpd).
  • model - The model to rate-limit. Accepts a model path string, a model ID, or a Model object (maps to API assetId).
  • token_type - Which tokens to count (input, output, or total).

__post_init__​

def __post_init__() -> None

[view_source]

Handle string token_type conversion and model object resolution.

validate​

def validate() -> None

[view_source]

Validate rate limit values are non-negative.

APIKeyUsageLimit Objects​

@dataclass_json

@dataclass
class APIKeyUsageLimit()

[view_source]

Usage statistics for an API key.

All fields are Optional since the API may return null values.

APIKeySearchParams Objects​

class APIKeySearchParams(BaseSearchParams)

[view_source]

Search parameters for API keys (not used - endpoint returns all keys).

APIKeyGetParams Objects​

class APIKeyGetParams(BaseGetParams)

[view_source]

Get parameters for API keys.

APIKeyDeleteParams Objects​

class APIKeyDeleteParams(BaseDeleteParams)

[view_source]

Delete parameters for API keys.

APIKey Objects​

@dataclass_json

@dataclass(repr=False)
class APIKey(BaseResource, SearchResourceMixin[APIKeySearchParams, "APIKey"],
GetResourceMixin[APIKeyGetParams, "APIKey"],
DeleteResourceMixin[APIKeyDeleteParams, DeleteResult])

[view_source]

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

[view_source]

Validate limits and restore cached model paths.

__repr__​

def __repr__() -> str

[view_source]

Return string representation.

before_save​

def before_save(*args: Any, **kwargs: Any) -> None

[view_source]

Switch to update mode when a key with the same name already exists.

build_save_payload​

def build_save_payload(**kwargs: Any) -> Dict

[view_source]

Build the payload for save operations.

Override because:

  1. Nested limits need manual serialization to API format.
  2. Default to_dict() excludes global_limits and asset_limits.
  3. Model paths must be resolved to IDs before sending to the backend.

list​

@classmethod
def list(cls, **kwargs) -> List["APIKey"]

[view_source]

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"

[view_source]

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 short
  • ResourceError - If no matching key is found

get_usage​

def get_usage(model: Optional[Any] = None) -> List[APIKeyUsageLimit]

[view_source]

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]

[view_source]

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

[view_source]

Set token per day limit.

set_token_per_minute​

def set_token_per_minute(value: int, model: Optional[Any] = None) -> None

[view_source]

Set token per minute limit.

set_request_per_day​

def set_request_per_day(value: int, model: Optional[Any] = None) -> None

[view_source]

Set request per day limit.

set_request_per_minute​

def set_request_per_minute(value: int, model: Optional[Any] = None) -> None

[view_source]

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"

[view_source]

Create a new API key with specified limits and budget.

Arguments:

  • name - Name for the API key
  • budget - Budget limit
  • global_limits - Global rate limits (dict or APIKeyLimits)
  • asset_limits - Optional per-asset rate limits
  • expires_at - Optional expiration datetime
  • **kwargs - Additional arguments passed to save()

Returns:

The created APIKey instance