Analytics

Compute Cohort

The whole Sales Report for one filter, in one round trip.

Cohort plus funnel, pipeline, revenue and drill-down - thirteen sections resolved from a single deal cohort, which is the reason this is one call and not thirteen: the sections agree because they are computed over the same resolved set, not re-derived.

Reads; writes nothing. It is a POST because the filter is a tree, not because it mutates - and it is tiered read for that reason.

The filter is extra="forbid": a misspelled key is a 422 naming it, rather than a silently wider result with a 200 on it.

post/analytics/sales-report/cohort

Request

  • Base URL: https://be.graph8.com/api/v1
  • URL: https://be.graph8.com/api/v1/analytics/sales-report/cohort
  • Auth: HTTP bearer

Query parameters

tzstring

IANA timezone the local-day window bounds are computed in, e.g. Asia/Tokyo. Changes which deals fall inside the date range.

Headers

Authorizationstring nullable
X-Target-Org-Idstring nullable

Request body

pipeline_target'prospects_meeting' | 'prospects_revenue' | 'customers_revenue' nullable
granularity'day' | 'week' | 'month' nullable

Response

Successful Response

dataReportPayload required

An OPEN envelope around one report's answer.

The app wraps every one of these reports in {success, data, meta}, where meta carries the cache state, the window and - on the agency reports - failed_org_ids, the orgs that contributed NOTHING to the totals above. That field is the difference between "this client sent no email" and "we could not query this client", so it is forwarded rather than flattened away.

Open on purpose: data is dict | list in the app and its contents grow with the product. A closed model would turn every new metric into a silently dropped one.

Changes

No recorded changes to this operation across all 2 revisions of this API.