Documentation
Usage Types
Usage monitoring, analytics, and plan utilization types
Credit & Limit Check
UsageCheckResult
Result of a pre-flight usage limit check
@dataclass(frozen=True)class UsageCheckResult: can_proceed: bool # Whether the operation can proceed current_usage: int # Credits used this period monthly_limit: int # Total monthly credit limit required_credits: int # Credits needed for this operation available_credits: int # Credits remaining reset_date: Optional[str] # When credits reset (YYYY-MM-DD) message: Optional[str] # Human-readable status message prepaid_credits: int # Prepaid credit balanceUsageBreakdown
Credit usage breakdown for the current billing period
@dataclass(frozen=True)class UsageBreakdown: current_month: Optional[str] # Current month (e.g. "2025-01") total_credits_used: int monthly_limit: int remaining_credits: int usage_percentage: float # 0-100 reset_date: Optional[str] # ISO datetimeUsage Summary
UsageSummary
Aggregated usage summary for a billing period
@dataclass(frozen=True)class UsageSummary: total_credits: int period: Optional[UsagePeriod] usage: Optional[UsageCounts] performance: Optional[UsagePerformance] limits: Optional[UsageLimits] plan: Optional[UsagePlan]UsagePeriod
Billing period date range
@dataclass(frozen=True)class UsagePeriod: start: Optional[str] # ISO datetime end: Optional[str]UsageCounts
Request counts within a usage summary
@dataclass(frozen=True)class UsageCounts: verify_count: int describe_count: int total_requests: int successful_requests: int failed_requests: intUsagePerformance
Performance metrics
@dataclass(frozen=True)class UsagePerformance: avg_response_time_ms: floatUsageLimits
Usage limits and current consumption
@dataclass(frozen=True)class UsageLimits: monthly_limit: int used_this_month: int remaining: int percentage_used: float # 0-100UsagePlan
Plan information within usage summary
@dataclass(frozen=True)class UsagePlan: name: str # Plan name (e.g. "Professional") requests_limit: int requests_used: int requests_remaining: int usage_percentage: float renewal_date: Optional[str] prepaid_balance: intUsage Details
UsageDetails
Paginated list of usage events
@dataclass(frozen=True)class UsageDetails: events: list[UsageEvent] total_count: int limit: int offset: int has_more: boolUsageEvent
A single API usage event
@dataclass(frozen=True)class UsageEvent: id: str timestamp: Optional[str] operation_type: Optional[str] # "describe", "verify", etc. endpoint: Optional[str] # API path method: Optional[str] # HTTP method status_code: Optional[int] response_time_ms: Optional[float] error_code: Optional[str] api_key_id: Optional[str]Time Series
UsageByPeriod
Time series usage data grouped by period
@dataclass(frozen=True)class UsageByPeriod: period_type: str # "hour" | "day" | "month" start_date: Optional[str] end_date: Optional[str] data: list[TimeSeriesDataPoint]TimeSeriesDataPoint
A single data point in a time series
@dataclass(frozen=True)class TimeSeriesDataPoint: timestamp: Optional[str] value: float label: Optional[str]TopEndpoints
List of most-used API endpoints
@dataclass(frozen=True)class TopEndpoints: endpoints: list[TopEndpoint]TopEndpoint
Usage statistics for a single endpoint
@dataclass(frozen=True)class TopEndpoint: endpoint: str # API path operation_type: Optional[str] request_count: int avg_response_time_ms: floatPlan Utilization
PlanUtilization
Comprehensive plan utilization with projections and recommendations
@dataclass(frozen=True)class PlanUtilization: billing_period: Optional[BillingPeriod] plan_details: Optional[PlanDetails] current_usage: Optional[CurrentUsage] projections: Optional[UsageProjection] optimization_recommendations: Optional[OptimizationRecommendations]BillingPeriod
Billing period information
@dataclass(frozen=True)class BillingPeriod: start_date: Optional[str] end_date: Optional[str] days_in_period: int days_remaining: int renewal_date: Optional[str]PlanDetails
Plan details including features and limits
@dataclass(frozen=True)class PlanDetails: plan_name: str monthly_requests_limit: int requests_used: int requests_remaining: int usage_percentage: float features: Optional[PlanFeatures]PlanFeatures
Features included in the current plan
@dataclass(frozen=True)class PlanFeatures: analysis_levels: list[str] # Available analysis levels rule_sets_limit: int rule_sets_used: int batch_processing: bool priority_support: boolCurrentUsage
Current usage broken down by service and analysis level
@dataclass(frozen=True)class CurrentUsage: total_requests: int by_service: dict[str, ServiceBreakdown] by_analysis_level: dict[str, ServiceBreakdown]ServiceBreakdown
Usage breakdown for a single service or analysis level
@dataclass(frozen=True)class ServiceBreakdown: requests: int percentage: float # 0-100UsageProjection
Projected usage based on current trends
@dataclass(frozen=True)class UsageProjection: projected_monthly_requests: int daily_average_requests: float trending: Optional[str] # "stable" | "increasing" | "decreasing" will_exceed_limit: bool projected_usage_percentage: floatOptimizationRecommendations
Optimization recommendations with suggestions and upgrade info
@dataclass(frozen=True)class OptimizationRecommendations: suggestions: list[OptimizationSuggestion] upgrade_recommendation: Optional[UpgradeRecommendation]OptimizationSuggestion
A single optimization suggestion
@dataclass(frozen=True)class OptimizationSuggestion: type: Optional[str] # Suggestion category message: Optional[str] # Human-readable recommendation potential_request_savings: intUpgradeRecommendation
Plan upgrade recommendation
@dataclass(frozen=True)class UpgradeRecommendation: suggested: bool reason: Optional[str] next_plan: Optional[str] benefits: list[str]Token Usage
MonthlyTokenUsage
Aggregated token usage over a date range
@dataclass(frozen=True)class MonthlyTokenUsage: start_date: Optional[str] end_date: Optional[str] total_input_tokens: int total_output_tokens: int total_thinking_tokens: int total_tokens: intFileTokenUsageList
Paginated list of per-file token usage
@dataclass(frozen=True)class FileTokenUsageList: files: list[FileTokenUsage] total_count: int total_input_tokens: int total_output_tokens: int total_thinking_tokens: intFileTokenUsage
Token usage for a single processed file
@dataclass(frozen=True)class FileTokenUsage: image_id: str filename: Optional[str] input_tokens: int output_tokens: int thinking_tokens: int total_tokens: int created_at: Optional[str]ConversationTokenUsageList
Paginated list of per-conversation token usage
@dataclass(frozen=True)class ConversationTokenUsageList: conversations: list[ConversationTokenUsage] total_count: int total_input_tokens: int total_output_tokens: intConversationTokenUsage
Token usage for a single chat session
@dataclass(frozen=True)class ConversationTokenUsage: session_id: str title: Optional[str] input_tokens: int output_tokens: int total_tokens: int message_count: int created_at: Optional[str]Dashboard Analytics
DashboardAnalytics
Dashboard analytics data for a period
@dataclass(frozen=True)class DashboardAnalytics: period: str # "week" | "month" | "year" start_date: Optional[str] end_date: Optional[str] daily_activity: list[DailyActivity] total_chat_messages: int total_files_uploaded: int total_chat_sessions: int avg_processing_time_ms: Optional[float] success_rate: Optional[float] # 0-100 processing_tokens: int chat_tokens: int total_tokens: int current_month_chat_tokens: int max_monthly_chat_tokens: intDailyActivity
A single day's activity data point
@dataclass(frozen=True)class DailyActivity: date: Optional[str] # YYYY-MM-DD files_uploaded: int chat_messages: int
