MIRA FIVE

Funnel

Run a saved MIRA FIVE funnel, or two to six steps given in order, over a period and read how many reached each step.

The funnel endpoint counts how many people (or visits) reached each step of an ordered journey, and where they dropped off. Run a saved funnel by its id, or pass the steps yourself. Nothing is saved. Funnels follow people and visits, so they need traffic collected with consent: on a consentless project every step counts 0 and meta.availability says why.

Run a funnel

GET /api/v1/projects/{project_id}/funnel

Pass either funnel or steps, not both.

NameTypeDefaultDescription
funnelstringnoneA saved funnel's id. Takes its steps, window and basis; steps, window and basis are then refused.
steps[]stringnoneTwo to six action or goal ids of this project, in order. Repeat the parameter for each step. Required without funnel.
windowstring7With steps: days after the first step within which the others count. 1, 7, 14 or 30.
basisstringpersonWith steps: person follows people across visits; visit counts steps within one visit.
periodstring30d1h, 24h, 7d, 30d, 90d, 12m or custom. See Periods.
fromstringnoneFirst day of a custom period, YYYY-MM-DD. Required with period=custom.
tostringnoneLast day of a custom period, inclusive. Required with period=custom.

compare is refused. Filters are not read. Take action and goal ids from List goals or the MCP server's list_goals.

Steps must happen in order but need not be adjacent: other events in between are fine. Someone counts in the period their first step fell in.

curl -G https://app.mirafive.io/api/v1/projects/01932c4e-8a7b-7c3d-9e2f-4b5a6c7d8e9f/funnel \
  -H "Authorization: Bearer $MIRAFIVE_API_KEY" \
  --data-urlencode 'period=30d' \
  --data-urlencode 'steps[]=01948d31-8c9d-7e0f-8a1b-2c3d4e5f6a7b' \
  --data-urlencode 'steps[]=01948d30-7b8c-7d9e-9f0a-1b2c3d4e5f6a' \
  --data-urlencode 'steps[]=01948d2e-5f6a-7b8c-9d0e-1f2a3b4c5d6e' \
  --data-urlencode 'window=7'
200 OK
{
  "data": {
    "id": "01948d31-8c9d-7e0f-8a1b-2c3d4e5f6a7b,01948d30-7b8c-7d9e-9f0a-1b2c3d4e5f6a,01948d2e-5f6a-7b8c-9d0e-1f2a3b4c5d6e",
    "type": "funnel-reports",
    "attributes": {
      "name": null,
      "window": 7,
      "basis": "person",
      "steps": [
        {
          "action": "01948d31-8c9d-7e0f-8a1b-2c3d4e5f6a7b",
          "name": "Viewed product",
          "archived": false,
          "count": 9840,
          "conversion": 1,
          "dropoff": null
        },
        {
          "action": "01948d30-7b8c-7d9e-9f0a-1b2c3d4e5f6a",
          "name": "Started checkout",
          "archived": false,
          "count": 1312,
          "conversion": 0.1333,
          "dropoff": 0.8667
        },
        {
          "action": "01948d2e-5f6a-7b8c-9d0e-1f2a3b4c5d6e",
          "name": "Order completed",
          "archived": false,
          "count": 547,
          "conversion": 0.0556,
          "dropoff": 0.5831
        }
      ]
    }
  },
  "meta": {
    "period": {
      "preset": "30d",
      "from": "2026-08-29T00:00:00+02:00",
      "to": "2026-09-28T00:00:00+02:00",
      "timezone": "Europe/Berlin",
      "interval": "day",
      "comparison": null,
      "clampedToRetention": false
    },
    "availability": "ready"
  }
}
FieldTypeDescription
idstringThe saved funnel's id, or the step ids joined by commas.
attributes.namestring or nullThe saved funnel's name, null for steps given ad hoc.
attributes.windowintegerDays the last step may follow the first.
attributes.basisstringperson or visit.
attributes.steps[].actionstringThe step's action or goal id.
attributes.steps[].namestringIts name.
attributes.steps[].archivedbooleanWhether the action is archived.
attributes.steps[].countintegerPeople (or visits) who got at least this far.
attributes.steps[].conversionnumberShare of the first step who got this far, 0–1. The first step is 1, or 0 when nobody started.
attributes.steps[].dropoffnumber or nullShare of the step before who did not get this far, 0–1. null on the first step.
meta.periodobjectThe window read. See Periods.
meta.availabilitystringready; consentless_only (no people or visits to follow, so every count is 0); no_sources.

To run a saved funnel, pass its id alone:

curl -G https://app.mirafive.io/api/v1/projects/01932c4e-8a7b-7c3d-9e2f-4b5a6c7d8e9f/funnel \
  -H "Authorization: Bearer $MIRAFIVE_API_KEY" \
  --data-urlencode 'funnel=0197c4d5-e6f7-7a8b-9c0d-1e2f3a4b5c6d'

The answer has the same shape, with the funnel's id and name. An unknown funnel or step id, an action of another project, one step or seven steps get 422 naming the parameter.

On this page