Skip to content
Tracon

TraconPricingOptions

Namespace Tracon · Assembly Tracon.Core.dll

Defines a run-cost price source. It is a secondary source for a model that has no price in the ModelDescriptor catalog.

public sealed class TraconPricingOptions

objectTraconPricingOptions

object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Tracon does not invent prices. This stores only values supplied by the consumer in configuration. Configuration paths:

  • Tracon:Pricing:Currency
  • Tracon:Pricing:{provider}:{model}:Input\|Output
  • Tracon:Pricing:Voice:{provider}:{model}:PerMillionCharacters\|PerMinute
  • Tracon:Pricing:Images:{provider}:{model}:PerImage\|OutputCostPerMillionTokens

Wildcards are not supported.

The section is bound manually for AOT. Every child of Pricing is treated as a provider name, so the Currency and Voice keys are reserved and cannot be provider names. When adding a reserved key, also update the skip list in BindPricing.

public TraconPricingOptions()

Gets or sets the currency label displayed in reports. No conversion occurs.

public string? Currency { get; set; }

string?

Gets image-generation prices per model, keyed by provider name.

public IDictionary<string, IDictionary<string, ImagePriceOverride>> Images { get; }

IDictionary<string, IDictionary<string, ImagePriceOverride>>

A model is priced either per generated image or per output token. The two modes are deliberately separate from TraconPricingOptions.Providers, which prices chat-model input and output tokens.

Gets price overrides per model, keyed by provider name.

public IDictionary<string, IDictionary<string, ModelPriceOverride>> Providers { get; }

IDictionary<string, IDictionary<string, ModelPriceOverride>>

Gets voice prices per model, keyed by voice provider name.

public IDictionary<string, IDictionary<string, VoicePriceOverride>> Voice { get; }

IDictionary<string, IDictionary<string, VoicePriceOverride>>

Voice pricing uses characters or duration rather than tokens, so it cannot share a dictionary with TraconPricingOptions.Providers. The two sections are not combined because their units differ;