Diagnose an API response by symptom.

Follow a fixed order from HTTP status to response fields, then open the guide for the symptom you observe. This page routes the check; it does not determine which response is correct.

Start with the symptom you can observe. This page routes you to an existing check; it does not decide which response is correct.

If your capture begins with HTTP/, classify the status under RFC 9110 first; see the HTTP status guide. Then, when the body parses as a Chat Completions response, inspect choices[0].message.content (text, an empty string or null), choices[0].message.refusal, choices[0].message.tool_calls and choices[0].finish_reason, in that order. A JSON body does not contain the HTTP status; inspect these choice fields only after the outer JSON parses.

Read the response in this order

HTTP/ capture → status class (RFC 9110) → content → refusal → tool_calls → finish_reason

The status and response-field explanations are linked below. Do not infer one layer from another.

No text came back

What you see
The assistant text is null or an empty string.
Check first
Read content as text, empty or null; then refusal, tool_calls and finish_reason, in that order.

Only part came back

What you see
The response ends before the expected value, or a required field is missing.
Check first
Read content, refusal, tool_calls and finish_reason, in order; then compare the finish reason with the captured body.

An API error appeared

What you see
The captured status is an error class, or the body contains an error envelope.
Check first
Read the HTTP status class first. If the parsed body is a Chat Completions response, read content, refusal, tool_calls and finish_reason in order; otherwise inspect its error body.

The stream stopped

What you see
An SSE stream went quiet, closed, or ended without its terminal markers.
Check first
Read content, refusal, tool_calls and finish_reason, in order; then check [DONE] and the terminal or error frame.

A parser rejected the JSON

What you see
The copied response looks complete, but a JSON parser rejects it.
Check first
If the outer JSON parses, read content, refusal, tool_calls and finish_reason, in order; then inspect code points in text content.

This route map uses the existing HTTP status and header guide, API error guide and Chat Completions field reference. The field reference links the official OpenAI documentation. No new response fields or provider-specific codes are introduced here.