Skip to main content

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