ClaudeCode.Message.ResultMessage (ClaudeCode v0.16.0)
View SourceRepresents a result message from the Claude CLI.
Result messages are the final message in a conversation, containing the final response, timing information, token usage, and cost.
String.Chars Protocol
Result implements String.Chars, so you can use it directly with
IO.puts/1 or string interpolation:
{:ok, result} = ClaudeCode.query(session, "Hello")
IO.puts(result) # prints just the result textMatches the official SDK schema for successful results:
{
type: "result",
subtype: "success",
uuid: string,
duration_ms: float,
duration_api_ms: float,
is_error: boolean,
num_turns: int,
result: string,
session_id: string,
total_cost_usd: float,
usage: object,
modelUsage: {model: ModelUsage},
permission_denials: PermissionDenial[],
structured_output?: unknown
}And for error results:
{
type: "result",
subtype: "error_max_turns" | "error_during_execution" | "error_max_budget_usd" | "error_max_structured_output_retries",
uuid: string,
duration_ms: float,
duration_api_ms: float,
is_error: boolean,
num_turns: int,
session_id: string,
total_cost_usd: float,
usage: object,
modelUsage: {model: ModelUsage},
permission_denials: PermissionDenial[],
errors: string[]
}
Summary
Functions
Creates a new Result message from JSON data.
Type guard to check if a value is a Result message.
Types
@type t() :: %ClaudeCode.Message.ResultMessage{ duration_api_ms: float(), duration_ms: float(), errors: [String.t()] | nil, is_error: boolean(), model_usage: %{required(String.t()) => ClaudeCode.Types.model_usage()}, num_turns: non_neg_integer(), permission_denials: [ClaudeCode.Types.permission_denial()], result: String.t() | nil, session_id: ClaudeCode.Types.session_id(), structured_output: any() | nil, subtype: ClaudeCode.Types.result_subtype(), total_cost_usd: float(), type: :result, usage: ClaudeCode.Types.usage(), uuid: String.t() | nil }