```python
from fastapi import FastAPI, HTTPException
import helpers
import asyncio

app = FastAPI()


@app.post("/reports")
async def create_report(payload: dict):
    rows = payload.get("rows")
    if rows is None or not isinstance(rows, list):
        raise HTTPException(status_code=400, detail="Invalid input: expected {'rows': [...]}")
    loop = asyncio.get_event_loop()
    rendered = await loop.run_in_executor(None, helpers.render_report, rows)
    return {"length": len(rendered)}
```