{"openapi":"3.1.0","info":{"title":"Webflow Analyze (BYOK) API","version":"0.1.0","description":"Webflow Analyze (BYOK) lets an AI assistant read your own Webflow Analyze data through the Webflow Analyze API with a key you supply (site token or workspace token with analytics read scope (Analyze plan needed)). Read-only: 9 tools (list_sites, get_traffic_report, list_top_pages, list_top_dimensions, list_top_events, get_time_on_page, get_scroll_depth, list_goals, get_goal_performance). The BYOK...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-webflow-analyze.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-webflow-analyze/docs"},"termsOfService":"https://connectorbay.com/byok-webflow-analyze/terms"},"servers":[{"url":"https://byok-webflow-analyze.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-webflow-analyze/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_sites":{"post":{"operationId":"list_sites","summary":"List the Webflow sites the token can access with ID, name, short name, time zone, last published date and data collectio","description":"List the Webflow sites the token can access with ID, name, short name, time zone, last published date and data collection setting. Use the ID in the report tools. Use for \"Which Webflow sites can I read analytics for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sitesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_traffic_report":{"post":{"operationId":"get_traffic_report","summary":"Get a daily time series of sessions, users or page views for a site over a window of up to 100 days, with optional singl","description":"Get a daily time series of sessions, users or page views for a site over a window of up to 100 days, with optional single-value filters. Needs the Analyze plan. Use for \"How many Webflow page views per day did my site get last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"metric_scope":{"description":"Unit of each count: session, user or pageview.","enum":["session","user","pageview"],"title":"Metric Scope","type":"string"},"bucket_time_zone":{"description":"IANA time zone that aligns the daily buckets, for example UTC or America/New_York.","maxLength":60,"title":"Bucket Time Zone","type":"string"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","start_time","end_time","metric_scope","bucket_time_zone"],"title":"get_traffic_reportArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_top_pages":{"post":{"operationId":"list_top_pages","summary":"List the most visited pages of a site in a window with sessions, users and page views per page, ranked by the chosen met","description":"List the most visited pages of a site in a window with sessions, users and page views per page, ranked by the chosen metric. Needs the Analyze plan. Use for \"Which pages on my Webflow site were visited most last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"sort_by":{"anyOf":[{"enum":["session","user","pageview"],"type":"string"},{"type":"null"}],"default":"session","description":"Ranking metric: session (default), user or pageview.","title":"Sort By"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many pages to return (1 to 250).","title":"Limit"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","start_time","end_time"],"title":"list_top_pagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_top_dimensions":{"post":{"operationId":"list_top_dimensions","summary":"List the top values of one dimension (country, device, browser, referrer, traffic source, UTM fields and more) by sessio","description":"List the top values of one dimension (country, device, browser, referrer, traffic source, UTM fields and more) by sessions or users over a window. Use for \"Which countries send the most sessions to my Webflow site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"dimension":{"description":"Dimension to rank.","enum":["country","region","deviceType","os","browser","language","locale","referrer","trafficSource","utmCampaign","utmContent","utmMedium","utmSource","utmTerm","audienceIds"],"title":"Dimension","type":"string"},"metric_scope":{"description":"Unit of each count: session or user.","enum":["session","user"],"title":"Metric Scope","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many values to return (1 to 100).","title":"Limit"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"}},"required":["site_id","start_time","end_time","dimension","metric_scope"],"title":"list_top_dimensionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_top_events":{"post":{"operationId":"list_top_events","summary":"List the most frequent tracked events (clicks and other interactions) of a site in a window with the page they happened ","description":"List the most frequent tracked events (clicks and other interactions) of a site in a window with the page they happened on. Needs the Analyze plan. Use for \"Which Webflow site events fired most last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many events to return (1 to 250).","title":"Limit"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","start_time","end_time"],"title":"list_top_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_time_on_page":{"post":{"operationId":"get_time_on_page","summary":"Get the average time on page in seconds over a window, per session, user or page view, as one aggregate value. Use for \"","description":"Get the average time on page in seconds over a window, per session, user or page view, as one aggregate value. Use for \"What is the average time on page for my Webflow site this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"metric_scope":{"description":"What the average is taken over: session, user or pageview.","enum":["session","user","pageview"],"title":"Metric Scope","type":"string"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","start_time","end_time","metric_scope"],"title":"get_time_on_pageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_scroll_depth":{"post":{"operationId":"get_scroll_depth","summary":"Get scroll depth: the share of page views that reached at least a given depth in CSS pixels, at several breakpoints. Use","description":"Get scroll depth: the share of page views that reached at least a given depth in CSS pixels, at several breakpoints. Use for \"How far down the page do visitors scroll on my Webflow site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","start_time","end_time"],"title":"get_scroll_depthArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_goals":{"post":{"operationId":"list_goals","summary":"List the analytics goals configured for a site with type, scope, value settings and event IDs. Takes no other parameters","description":"List the analytics goals configured for a site with type, scope, value settings and event IDs. Takes no other parameters. Use for \"Which conversion goals are set up on my Webflow site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"}},"required":["site_id"],"title":"list_goalsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_goal_performance":{"post":{"operationId":"get_goal_performance","summary":"Get the daily number of conversions of one goal over a window. Use for \"How many conversions did my Webflow signup goal ","description":"Get the daily number of conversions of one goal over a window. Use for \"How many conversions did my Webflow signup goal get last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Webflow site ID (24 hex characters, from list_sites).","maxLength":64,"title":"Site Id","type":"string"},"goal_id":{"description":"Goal ID from list_goals (a numeric string).","maxLength":40,"title":"Goal Id","type":"string"},"start_time":{"description":"Inclusive start of the window as a UTC timestamp ending in Z, for example 2026-04-01T00:00:00Z. The window may span at most 100 days.","maxLength":30,"title":"Start Time","type":"string"},"end_time":{"description":"Exclusive end of the window as a UTC timestamp ending in Z, for example 2026-04-08T00:00:00Z.","maxLength":30,"title":"End Time","type":"string"},"bucket_time_zone":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"UTC","description":"IANA time zone that aligns the daily buckets (default UTC).","title":"Bucket Time Zone"},"device_type":{"anyOf":[{"enum":["desktop","mobile","tablet"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one device type.","title":"Device Type"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one country, an ISO 3166-1 alpha-2 code such as US.","title":"Country"},"page_path":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one page path, for example /pricing.","title":"Page Path"},"traffic_source":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one traffic source code, for example SO for organic search.","title":"Traffic Source"},"referrer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one referrer domain.","title":"Referrer"}},"required":["site_id","goal_id","start_time","end_time"],"title":"get_goal_performanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}