Read Chat Completion fields in context.

Interpret finish reasons, null content, refusals, tool arguments and usage in a complete response.

A Chat Completions response has an outer response object, one or more choices, and a message inside each choice. Read a field together with its location and finish reason; a null or omitted value alone rarely explains what happened.

This table follows the fields documented in the OpenAI Chat Completions reference. Compatible services can omit optional fields or add their own extensions. Each location names both the response path and the relevant section in the reference.

The table is a response reference. It contains no API request examples and makes no model call. On a phone, scroll the table horizontally to compare all five columns.

FieldLocation in the responseTypeWhen nullLikely wrong conclusion
finish_reasonchoices[].finish_reason
Chat Completion Choice
string: stop (natural stop or stop sequence), length (token limit), tool_calls (tool requested), content_filter (output omitted by a filter), or deprecated function_call.A streaming chunk can have null before the final choice chunk. A completed non-streaming choice has a reason; an interrupted stream may never deliver its final chunk.Assuming stop guarantees valid JSON or factual completeness, or treating content_filter as a token-limit problem.
message.contentchoices[].message.content
Chat Completion Message
string | nullnull means this field has no text value. An empty string is still a string with zero characters. Check the sibling refusal, tool_calls and finish_reason fields.Treating null and "" as identical, or either one alone as proof of truncation, refusal or a failed request.
message.refusalchoices[].message.refusal
Chat Completion Message
Optional string | nullnull or omission means this separate property contains no refusal text.Inferring a refusal from content: null. Read the refusal field separately; null content does not identify why text is absent.
tool_calls[].function.argumentschoices[].message.tool_calls[].function.arguments; streamed fragments appear under choices[].delta.tool_calls[].
Chat Completion Message Tool Call · stream chunk
string containing JSON text, not a parsed object. In a stream, each arguments value is only a fragment.The completed function-call field is not documented as nullable. A stream delta may omit an argument fragment because no new text arrived in that chunk.Parsing each fragment as a complete object. Append fragments for the same tool-call index, then parse the assembled string; do not execute a partial call.
usageTop-level usage on the response or stream chunk.
Create chat completion · stream chunk
Optional CompletionUsage object; on a stream it is included only when stream_options.include_usage is enabled.With streaming usage enabled, intermediate chunks may contain null; a separate final chunk carries totals and has choices: []. An interrupted stream may omit that final chunk.Reading null or missing usage as zero tokens or as proof that no generation occurred.
system_fingerprintTop-level system_fingerprint.
Create chat completion
Optional string; the OpenAI reference labels the field deprecated.The reference defines it as optional, not nullable; a response may omit it.Treating it as a model ID, request ID or required success marker.

The streaming usage behavior above is specific: OpenAI documents a final usage-only chunk when include_usage is enabled, while non-streaming responses return their usage object when provided. Do not use this streaming rule to interpret a normal JSON response.

OpenAI Chat Completions response fields and finish reasonsOpenAI streamed Chat Completions chunks and usage

Continue from the response you captured

Before interpreting fields, save the HTTP status, response headers and complete body with the raw response capture guide. For cut-off JSON, missing fields or stream endings, continue to the incomplete JSON response guide.

OpenAI reference sections checked 20 October 2026. A compatible API may implement a different subset; confirm its documented response shape before relying on optional fields.

Free API access and limits

Check the site free API access and limits before trying to obtain a site key. Read the current status and request limits before using a site key. It is not a source of official provider keys.

ChinaGenAI is not affiliated with the providers named here. This release contains setup guidance and explicitly labeled fictional examples, not claimed live model benchmarks.