AiReviewUsage
Reached as AiReview.usage. Every attempt across every run of the review, priced at today's catalog rates rather than at whatever a model cost when it ran.
A cell from an Auto column is reported under the Auto row, and the model that row resolved to never leaves the server.
type AiReviewUsage {
runs: Int!
cells: Int!
tokensIn: Int!
tokensCacheWrite: Int!
tokensCacheRead: Int!
tokensOut: Int!
tokensTotal: Int!
cacheHitRatio: Float!
costUsd: Float
uncachedCostUsd: Float
cacheSavedUsd: Float
byModel: [AiReviewModelUsage!]!
}
Fields
AiReviewUsage.runs ● Int! non-null scalar
Runs that wrote at least one cell in scope.
AiReviewUsage.cells ● Int! non-null scalar
Cell attempts in scope, failed ones included: they were paid for too.
AiReviewUsage.tokensIn ● Int! non-null scalar
AiReviewUsage.tokensCacheWrite ● Int! non-null scalar
AiReviewUsage.tokensCacheRead ● Int! non-null scalar
AiReviewUsage.tokensOut ● Int! non-null scalar
AiReviewUsage.tokensTotal ● Int! non-null scalar
AiReviewUsage.cacheHitRatio ● Float! non-null scalar
Cache reads over every input token. Zero when nothing went in.
AiReviewUsage.costUsd ● Float scalar
Null when any row in scope names a model the catalog cannot price. A partial figure would read as a whole one and understate spend.
AiReviewUsage.uncachedCostUsd ● Float scalar
What the same tokens would have cost with no prompt cache.
AiReviewUsage.cacheSavedUsd ● Float scalar
uncachedCostUsd minus costUsd. Negative when the cache was written more than it was read, which is what a short review over many columns looks like.
AiReviewUsage.byModel ● [AiReviewModelUsage!]! non-null object
The Auto row first, then one row per pinned model, busiest first.
Member Of
AiReview object ● AiReviewReviewUsage object ● AiReviewRoomUsage object