Matomo Funnels API

The Matomo Funnels API exposes 19 operations of the Matomo Reporting API (module `Funnels`). Conversion funnel definition and analysis — flow, entries, exits and step-level drop-off. Every operation is dispatched through the single `/index.php?module=API&method=Funnels.` entrypoint on the customer's own Matomo instance, self-hosted or on Matomo Cloud. The OpenAPI 3.1.0 document is Matomo's own, generated by its first-party ApiReference plugin.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/funnels-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

matomo-funnels-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"title":"Matomo Reporting API for Funnels plugin","version":"1.0.0"},"servers":[{"url":"https:\/\/demo-proxy.innocraft.cloud\/","description":"Current Matomo instance"}],"paths":{"\/index.php?module=API&method=Funnels.getMetrics":{"get":{"tags":["Funnels"],"description":"Returns summary metrics for a funnel for the requested period.","operationId":"Funnels.getMetrics","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"idFunnel","in":"query","description":"The funnel ID to report, or `false` to resolve the funnel from `$idGoal`.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"idGoal","in":"query","description":"The goal ID to resolve the funnel from, or `false` to use `$idFunnel`. Use `0` for the sales funnel.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Summary metrics for the selected funnel.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelsSummary":{"get":{"tags":["Funnels"],"description":"Returns an overview table containing one row per activated funnel for the site.","operationId":"Funnels.getFunnelsSummary","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"$ref":"#\/components\/parameters\/idSiteRequired"},{"$ref":"#\/components\/parameters\/periodRequired"},{"$ref":"#\/components\/parameters\/dateRequired"},{"$ref":"#\/components\/parameters\/segmentOptional"}],"responses":{"200":{"description":"OK\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelsSummaryTotals":{"get":{"tags":["Funnels"],"description":"Returns overview totals across all activated funnels for the site.","operationId":"Funnels.getFunnelsSummaryTotals","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"$ref":"#\/components\/parameters\/idSiteRequired"},{"$ref":"#\/components\/parameters\/periodRequired"},{"$ref":"#\/components\/parameters\/dateRequired"},{"$ref":"#\/components\/parameters\/segmentOptional"}],"responses":{"200":{"description":"OK\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelFlow":{"get":{"tags":["Funnels"],"description":"Returns per-step funnel flow metrics for the requested funnel.","operationId":"Funnels.getFunnelFlow","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"idFunnel","in":"query","description":"The funnel ID to report, or `false` to resolve the funnel from `$idGoal`.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"idGoal","in":"query","description":"The goal ID to resolve the funnel from, or `false` to use `$idFunnel`. Use `0` for the sales funnel.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"A table with one row per funnel step and its flow metrics.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelFlowTable":{"get":{"tags":["Funnels"],"description":"Returns the funnel flow report formatted for the standard data table view.","operationId":"Funnels.getFunnelFlowTable","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"idFunnel","in":"query","description":"The funnel ID to report, or `false` to resolve the funnel from `$idGoal`.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"idGoal","in":"query","description":"The goal ID to resolve the funnel from, or `false` to use `$idFunnel`. Use `0` for the sales funnel.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The funnel flow table with presentation metadata applied.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelStepSubtable":{"get":{"tags":["Funnels"],"description":"Returns the subtable rows for a single funnel step.","operationId":"Funnels.getFunnelStepSubtable","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"stepPosition","in":"query","description":"The funnel step position to inspect.","required":true,"schema":{"type":"integer","example":1}},{"name":"idFunnel","in":"query","description":"The funnel ID to report, or `false` to resolve the funnel from `$idGoal`.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"idGoal","in":"query","description":"The goal ID to resolve the funnel from, or `false` to use `$idFunnel`. Use `0` for the sales funnel.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"A table containing the proceeded, entry, and exit subtable rows for the step.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelEntries":{"get":{"tags":["Funnels"],"description":"Returns entry actions for a funnel or a specific funnel step.","operationId":"Funnels.getFunnelEntries","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"idFunnel","in":"query","description":"The funnel ID to report.","required":true,"schema":{"type":"integer","example":1}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}},{"name":"step","in":"query","description":"Optional funnel step label to filter the report by.","required":false,"schema":{"type":"string"}},{"name":"expanded","in":"query","description":"Whether to expand subtables in the response.","required":false,"schema":{"type":"boolean","default":false}},{"name":"idSubtable","in":"query","description":"A specific subtable ID to load instead of the top-level report.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"flat","in":"query","description":"Whether to flatten the report hierarchy into a single table.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Entry actions for the funnel or selected step.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnelExits":{"get":{"tags":["Funnels"],"description":"Returns exit actions for a funnel or a specific funnel step.","operationId":"Funnels.getFunnelExits","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"name":"date","in":"query","description":"The date or date range to process. 'YYYY-MM-DD', magic keywords (today, yesterday, lastWeek, lastMonth, lastYear), or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"idFunnel","in":"query","description":"The funnel ID to report.","required":true,"schema":{"type":"integer","example":1}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}},{"name":"step","in":"query","description":"Optional funnel step label to filter the report by.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exit actions for the funnel or selected step.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getGoalFunnel":{"get":{"tags":["Funnels"],"description":"Returns the configured funnel for a goal.","operationId":"Funnels.getGoalFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"The goal ID to load the funnel for. Use `0` for the sales funnel.","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"}]}}],"responses":{"200":{"description":"The configured funnel definition, or `null` when no funnel has been configured yet.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getSalesFunnelForSite":{"get":{"tags":["Funnels"],"description":"Returns the configured sales funnel for a site.","operationId":"Funnels.getSalesFunnelForSite","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"The configured sales funnel definition, or `null` when no sales funnel exists.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[]}},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getFunnel":{"get":{"tags":["Funnels"],"description":"Returns a funnel definition by funnel ID.","operationId":"Funnels.getFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"idFunnel","in":"query","description":"The funnel ID to load.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"The funnel definition, or `null` when no matching funnel exists.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getAllActivatedFunnelsForSite":{"get":{"tags":["Funnels"],"description":"Returns all activated funnels for a site.","operationId":"Funnels.getAllActivatedFunnelsForSite","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Activated funnel definitions for the site.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[]}},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.hasAnyActivatedFunnelForSite":{"get":{"tags":["Funnels"],"description":"Returns whether the site has at least one activated funnel.","operationId":"Funnels.hasAnyActivatedFunnelForSite","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"`true` if the site has at least one activated funnel, `false` otherwise.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.deleteGoalFunnel":{"get":{"tags":["Funnels"],"description":"Deletes the funnel configured for a goal.","operationId":"Funnels.deleteGoalFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to update.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"The goal ID whose funnel should be deleted. Use `0` for the sales funnel.","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"}]}}],"responses":{"200":{"$ref":"#\/components\/responses\/GenericSuccess"},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.deleteNonGoalFunnel":{"get":{"tags":["Funnels"],"description":"Deletes a non-goal funnel by funnel ID.","operationId":"Funnels.deleteNonGoalFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to update.","required":true,"schema":{"type":"integer","example":1}},{"name":"idFunnel","in":"query","description":"The funnel ID to delete.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"$ref":"#\/components\/responses\/GenericSuccess"},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.setGoalFunnel":{"get":{"tags":["Funnels"],"description":"Creates or updates the funnel configuration for a goal.","operationId":"Funnels.setGoalFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to update.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"The goal ID whose funnel should be saved. Use `0` for the sales funnel.","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"}]}},{"name":"isActivated","in":"query","description":"Whether the funnel should be active after saving. Truthy values enable funnel reporting.","required":true,"schema":{"oneOf":[{"type":"integer","example":true},{"type":"string","example":"true"}]}},{"name":"steps","in":"query","description":"Funnel step definitions to save. When `$isActivated` is truthy, at least one step is required.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]}}],"responses":{"200":{"description":"The ID of the created or updated funnel.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.saveNonGoalFunnel":{"get":{"tags":["Funnels"],"description":"Creates or updates a funnel that is not tied to a goal.","operationId":"Funnels.saveNonGoalFunnel","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to update.","required":true,"schema":{"type":"integer","example":1}},{"name":"idFunnel","in":"query","description":"The funnel ID to update, or `0` to create a new funnel.","required":true,"schema":{"type":"integer","example":1}},{"name":"funnelName","in":"query","description":"The display name to store for the funnel.","required":true,"schema":{"type":"string","example":"Pricing Signup Funnel"}},{"name":"steps","in":"query","description":"Funnel step definitions to save.","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"description","in":"query","description":"Optional funnel description (max 255 characters).","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The ID of the created or updated funnel.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.getAvailablePatternMatches":{"get":{"tags":["Funnels"],"description":"Returns the available pattern match types for funnel steps.","operationId":"Funnels.getAvailablePatternMatches","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"}],"responses":{"200":{"description":"Supported funnel pattern types grouped by comparison category.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}},"\/index.php?module=API&method=Funnels.testUrlMatchesSteps":{"get":{"tags":["Funnels"],"description":"Tests a value against the provided funnel step patterns.","operationId":"Funnels.testUrlMatchesSteps","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"url","in":"query","description":"The URL or comparable value to test against the step patterns.","required":true,"schema":{"type":"string","example":"https:\/\/example.org\/pricing"}},{"name":"steps","in":"query","description":"Funnel step definitions to test against the input value.","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"The tested value and one result entry for each supported step pattern.\n\nExample responses require Super User access. Use Try it out to see a live response."},"400":{"$ref":"#\/components\/responses\/BadRequest"},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"500":{"$ref":"#\/components\/responses\/ServerError"},"default":{"$ref":"#\/components\/responses\/DefaultError"}}}}},"components":{"schemas":{"GenericSuccess":{"description":"Generic Matomo success payload.","required":["result","message"],"properties":{"result":{"type":"string","example":"success"},"message":{"type":"string","example":"ok"},"code":{"type":"integer","example":"200"}},"type":"object","example":{"result":"success","message":"ok"},"additionalProperties":true},"GenericSuccessXml":{"description":"Generic Matomo success payload in XML.","required":["success"],"properties":{"success":{"properties":{"message":{"type":"string","xml":{"attribute":true},"example":"ok"}},"type":"object","xml":{"name":"success"}}},"type":"object","xml":{"name":"result"},"example":{"success":{"message":"ok"}},"additionalProperties":true},"Error":{"description":"Generic Matomo error payload.","required":["result","message"],"properties":{"result":{"type":"string","example":"error"},"message":{"type":"string","example":"There was an error"},"code":{"type":"integer"}},"type":"object","additionalProperties":true},"ErrorXml":{"description":"Generic Matomo error payload in XML.","properties":{"error":{"properties":{"message":{"type":"string","xml":{"attribute":true},"example":"There was an error"}},"type":"object","xml":{"name":"error"}}},"type":"object","xml":{"name":"result"}}},"responses":{"BadRequest":{"description":"Bad request (validation or missing parameters).","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: There was an error."},"text\/html":{"schema":{"type":"string"},"example":"There was an error."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"Unauthorized":{"description":"Authentication failed or missing token.","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: You must be logged in to access this functionality."},"text\/html":{"schema":{"type":"string"},"example":"You must be logged in to access this functionality."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"Forbidden":{"description":"Authenticated but not allowed to access the resource.","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: Not authorised."},"text\/html":{"schema":{"type":"string"},"example":"Not authorised."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"NotFound":{"description":"Resource not found.","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: The method is not available."},"text\/html":{"schema":{"type":"string"},"example":"The method is not available."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"ServerError":{"description":"Unexpected server error.","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: There was an error."},"text\/html":{"schema":{"type":"string"},"example":"There was an error."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"DefaultError":{"description":"Default error response (any non-2xx).","content":{"text\/plain":{"schema":{"type":"string"},"example":"Error: There was an error."},"text\/html":{"schema":{"type":"string"},"example":"There was an error."},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/ErrorXml"}}}},"GenericSuccessNoBody":{"description":"Generic 200 response with no body"},"GenericSuccess":{"description":"Generic 200 response","content":{"text\/plain":{"schema":{"type":"string"},"example":"Success:ok"},"text\/html":{"schema":{"type":"string"},"example":"<!-- Success: ok -->"},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/GenericSuccess"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/GenericSuccessXml"}}}},"GenericString":{"description":"Generic 200 response with only a string body","content":{"text\/plain":{"schema":{"type":"string"},"example":"Result: success"},"text\/html":{"schema":{"type":"string"},"example":"success"},"application\/json":{"schema":{"type":"string"}},"application\/xml":{"schema":{"type":"string"}}}},"GenericBoolean":{"description":"Generic 200 response with only true or false as the body","content":{"text\/plain":{"schema":{"type":"boolean"}},"text\/html":{"schema":{"type":"boolean"}},"application\/json":{"schema":{"type":"boolean"}},"application\/xml":{"schema":{"type":"boolean"}}}},"GenericInteger":{"description":"Generic 200 response with only an integer as the body","content":{"text\/plain":{"schema":{"type":"integer"}},"text\/html":{"schema":{"type":"integer"}},"application\/json":{"schema":{"type":"integer"}},"application\/xml":{"schema":{"type":"integer"}}}},"GenericArray":{"description":"Generic 200 response with array body","content":{"text\/plain":{"schema":{"type":"string"}},"text\/html":{"schema":{"type":"string"}},"application\/json":{"schema":{"type":"array","items":[]}},"application\/xml":{"schema":{"type":"array","items":[]}}}}},"parameters":{"moduleRequired":{"name":"module","in":"query","description":"Always `API` for Reporting API requests.","required":true,"schema":{"t

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/matomo/refs/heads/main/openapi/matomo-funnels-openapi.json