## Is your feature request related to a problem?

We currently load the "time conversion bins" funnel view [in two steps](https://github.com/PostHog/posthog/blob/cfd7e586ac144a0fb6c18f90a1657db9897d033a/frontend/src/scenes/funnels/funnelLogic.ts#L164):

```js
const result = await pollFunnel<FunnelStep[] | FunnelStep[][]>({
    ...apiParams,
    refresh,
    // Time to convert requires steps funnel api to be called for now. Remove once two api's are functionally separated
    funnel_viz_type:
        filters.funnel_viz_type === FunnelVizType.TimeToConvert
            ? FunnelVizType.Steps
            : apiParams.funnel_viz_type,
})

if (filters.funnel_viz_type === FunnelVizType.TimeToConvert) {
    const binsResult = await pollFunnel<FunnelsTimeConversionBins>({
        ...apiParams,
        ...(refresh ? { refresh } : {}),
    })
}
```

## Describe the solution you'd like

I'd like to make just one query. This makes caching dashboard results much easier.


#### *Thank you* for your feature request – we love each and every one!

ee/clickhouse/views/test/test_clickhouse_insights.py
response = self.client.post("/api/insight/funnel/", {"actions": [{"id": 666, "type": "actions", "order": 0},]},)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.json(), self.validation_error_response("Action ID 666 does not exist!"))
    def test_funnel_basic_exclusions(self):
        _create_person(distinct_ids=["1"], team=self.team)
        _create_event(team=self.team, event="step one", distinct_id="1")
        _create_event(team=self.team, event="step x", distinct_id="1")
        _create_event(team=self.team, event="step two", distinct_id="1")
        _create_person(distinct_ids=["2"], team=self.team)
        _create_event(team=self.team, event="step one", distinct_id="2")
        _create_event(team=self.team, event="step two", distinct_id="2")
        response = self.client.post(
            "/api/insight/funnel/",
            {
                "events": [
                    {"id": "step one", "type": "events", "order": 0},
                    {"id": "step two", "type": "events", "order": 1},
                ],
                "exclusions": [{"id": "step x", "type": "events", "funnel_from_step": 0, "funnel_to_step": 1},],
                "funnel_window_days": 14,
                "insight": "funnels",
            },
        ).json()
        self.assertEqual(len(response["result"]), 2)
        self.assertEqual(response["result"][0]["name"], "step one")
        self.assertEqual(response["result"][1]["name"], "step two")
        self.assertEqual(response["result"][0]["count"], 1)
        self.assertEqual(response["result"][1]["count"], 1)
    def test_funnel_invalid_exclusions(self):