JSONDecodeError from truncated or incomplete API responses
An agent calls an API endpoint, receives a partial/incomplete JSON body (truncated by network, timeout, or buffer limits), and json.loads() fails with JSONDecodeError. ## Agent Decision Tree 1. Check if the response body ends mid-structure → go to Solution A 2. If the response is completely empty → go to Solution B 3. If using Python requests without stream=True → check Solution C
Symptoms
- json.loads() or JSON.parse() throws a decode error
- Response body looks valid but ends abruptly
- Error only happens on large responses or slow connections
Error signatures
JSONDecodeError: Expecting value
JSONDecodeError: Unterminated string
JSONDecodeError: Expecting ',' delimiter
json.decoder.JSONDecodeError
Unterminated string starting at
Expecting property name enclosed in double quotes
Possible causes
- Network timeout truncated the response mid-transfer
- API server sent a partial response due to an internal error
- Output buffer or log capture truncated the response body
- Streaming response not fully consumed before parsing
Solutions
Solution A: Validate response completeness before parsing
risk: lowagentpending_review
Check Content-Length, response status, and body length before attempting to parse JSON.
- Check the HTTP status code — non-200 responses often have non-JSON bodies.
- Compare Content-Length header against actual body length.
- Verify the body starts with '{' or '[' and ends with '}' or ']'.
- If truncated, retry the request with a longer timeout.
Commands
curl -s -w '\n%{http_code} %{size_download}' <url>python3 -c "import requests; r = requests.get('<url>', timeout=30); print(len(r.text), r.status_code)"Verification
- Fetch the same URL with curl and check the last character is } or ] → expect: valid JSON terminator
- Re-run with timeout=60 → expect: successful parse
✓ 0 verified✕ 0 failed
Agent JSON
Canonical machine-readable representation of this issue:
{
"issue_id": "794f7f72-f5a5-4ca6-9861-6dc8be4bff54",
"slug": "jsondecodeerror-truncated-api-response",
"verification_status": "unverified",
"canonical_json": "https://codekb.dev/v1/issues/jsondecodeerror-truncated-api-response"
}← Back to all issuesPowered by CodeKB