Member Junction
    Preparing search index...

    A full response (turn) completed — carries the usage payload for THIS response (input_tokens / output_tokens), i.e. per-response DELTAS, exactly the OnUsage contract shape.

    The payload's LOCATION is provider-specific, which is why both slots are declared:

    • OpenAI (gpt-realtime) populates response.usage and sends no top-level usage.
    • xAI (Grok Voice) populates a TOP-LEVEL usage and sends response.usage as an EMPTY object — captured live off wss://api.x.ai/v1/realtime.

    ResolveResponseDoneUsage picks whichever slot actually carries token counts.

    interface OAIProtocolResponseDone {
        response?: { usage?: OAIProtocolUsage };
        type: "response.done";
        usage?: OAIProtocolUsage;
    }
    Index

    Properties

    Properties

    response?: { usage?: OAIProtocolUsage }
    type: "response.done"

    xAI puts usage HERE, as a sibling of response.