Inspect API responses and build requests.
Inspect JSON or SSE, prepare a redacted report, or build a request. These local tools need no API key.
Inspect a response.
No endpoint was contacted. This checks only the pasted response.
No assistant text to check
The response contains an empty assistant content string, so there are no characters to parse. A stop finish reason ends the turn; it does not confirm that the task received an answer.
- Finish reason
stop- Assistant JSON
- Not checked
- Field checklist
- Not supplied
What to do next
Compare the raw response with what your client displays. Check refusal and tool_calls first, then verify the exact provider, model and serving route. Do not treat this as valid JSON or an automatic success.
Have usage JSON? Estimate token cost (new tab)Check Qwen3.8 empty-answer reportsSource facts are not checked. Provider-specific finish reasons may differ.
View and copy assistant text
Decoded from choices[0].message.content. Copying preserves the text, including whitespace and number spelling; it does not repair or complete a response. The issues above still apply.
Input formats and limits
Checks choices[0] in a non-streaming response. Paste the response body, not an API key. Responses API objects are not supported. A complete capture beginning with HTTP/ is detected automatically: the status and headers are counted, then the JSON or SSE body is routed to the matching inspector. The original paste stays unchanged.
Examples and fixtures
Handwritten samples; no request is sent.
Run the 25-fixture self-testInspect tool-call SSE
Rebuild Chat Completions function calls by index. Nothing is executed or sent to an API.
Your inspection result
Paste the SSE response body and choose Inspect tool calls.
Need to capture the original body first? Follow the capture guide.
LOCAL TOOL · JSON + SSE
Compare two responses.
Compare choice 0 text, finish reason, tool-call counts and usage from captured Chat Completions responses. Matching fields do not prove a complete or correct response.
Both inputs stay in this tab. The comparison makes no network request, model call, or upload.
Build your request
One connection for your software. The label free selects automatic routing; you do not choose a model provider.
- Final request URL
- POST
https://chinagenai.com/v1/chat/completions
curl 'https://chinagenai.com/v1/chat/completions' \
-H 'Authorization: Bearer YOUR_SITE_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "free",
"messages": [
{
"role": "user",
"content": "Extract the supplier quote into JSON with these fields: supplier, quantity, currency, unit_price, moq, incoterm, port, payment, lead_time_days. Use null for missing facts. Preserve currencies and units. Do not infer shipping costs or promise delivery. Return JSON only.\n\nExample only: Cedar offers 250 units at USD 5.20 each, MOQ 200, EXW Ningbo. Payment: 30% deposit, 70% before dispatch. Lead time is not stated."
}
],
"max_tokens": 256,
"stream": false
}'This builder makes no API call. Site key issuance follows the current availability and free limits. Never include a real key in a shared request file.
Use these settings in n8ncURL works, but your app returns 404?
Compare the actual request URL from your log with the full endpoint in your working cURL or provider docs.
Stays in this tab; no request is sent or saved. Query values and fragments are hidden in results. Remove credentials before pasting.
Compare requests: cURL works, but the app fails?
Compare a working command with one copied from the failing app or its HTTP capture.
Parsed in this tab only. Commands are never run, sent or saved. Results hide endpoint values, all header values, message content and unknown JSON fields. Clear the inputs when finished.
Try the site’s free pool
Free API configuration is enabled. Remaining quota and upstream availability are not checked.
At most 20 attempts per network or verified account per UTC day, sharing 200 attempts across the site. Up to 256 output tokens per request, 1 active request per key and 2 active site requests. Requests accepted for processing count even if the upstream call fails. No paid fallback.
Each API request accepts up to 6 messages, including system messages and previous history, and 6,000 characters of JSON input, including message structure, tool definitions and output schemas. Every follow-up request has the same limits. Keys expire 48 hours after creation; replacing a key does not reset daily allowance. Local tools make no model request and do not use this allowance. Use one short item; long text and batches may exceed the output limit.
Open free key accessCheck a request body
Check how a body fits ChinaGenAI’s Chat Completions request rules.
Extract JSON body from cURL
Files, stdin, multiple data arguments, body expansion and unsupported shell syntax need the final JSON body instead. cURL data options.
Nothing leaves this tab
The checker runs locally. It does not call the API, save your text or repeat it in the result.
Check supplier-quote fields
Fictional source for the example:
Example only: Cedar offers 250 units at USD 5.20 each, MOQ 200, EXW Ningbo. Payment: 30% deposit, 70% before dispatch. Lead time is not stated.
The starting JSON is handwritten example data, not a live model response. This checker validates fields and types, not whether a model’s claims are true.
Text stays in this page’s memory. It is not uploaded or saved by the checker.