langflow-ai/langflow · error · HTTPException
Invalid JSON file: {e}
Error message
Invalid JSON file: {e} What it means
Error "Invalid JSON file: {e}" thrown in langflow-ai/langflow.
Source
Thrown at src/backend/base/langflow/api/v1/flows.py:676
contents = await file.read()
if not contents:
raise HTTPException(status_code=400, detail="The uploaded file is empty")
if zipfile.is_zipfile(io.BytesIO(contents)):
try:
flows_data = await extract_flows_from_zip(contents)
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e)) from e
if not flows_data:
raise HTTPException(status_code=400, detail="No valid flow JSON files found in the ZIP")
data = {"flows": flows_data}
else:
try:
data = orjson.loads(contents)
except orjson.JSONDecodeError as e:
raise HTTPException(status_code=400, detail=f"Invalid JSON file: {e}") from e
# Normalise code fields: if exported with code-as-lines format, rejoin to
# strings before creating the Pydantic models so the DB always stores strings.
if not isinstance(data, dict):
raise HTTPException(
status_code=422,
detail="Invalid JSON: expected an object with 'flows' or a single flow object",
)
try:
if "flows" in data:
if not isinstance(data["flows"], list):
raise HTTPException(
status_code=422,
detail="Invalid JSON: 'flows' must be a list of flow objects",
)
non_dict = [i for i, f in enumerate(data["flows"]) if not isinstance(f, dict)]
if non_dict:
raise HTTPException(View on GitHub (pinned to 976ec789d2)
Solutions
- Fix the JSON syntax in the uploaded file; validate it with a JSON parser before uploading.
When it happens
Trigger: Occurs when a JSON file inside the upload cannot be parsed as valid JSON.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14).
Data as JSON: /api/errors/2abd408e701e5735.
Report an issue: GitHub.