Web analytics

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

GET
GET
PATCH
GET
GET
PATCH
DELETE
GET
GET
GET
POST
GET
GET
POST
GET
GET
POST
GET

List all aeo brands

Lists the project's brand catalog by domain: the project itself, competitors, publishers and domains nobody has labeled yet. Each daily run adds the domains its answers cited for the first time.

Required API key scopes

web_analytics:read

Query parameters

  • kind
    string
    One of: "own""competitor""publisher""unknown"
  • limit
    integer
  • offset
    integer
  • status
    string
    One of: "suggested""confirmed""ignored"

Response


Example request

GET /api/projects/:project_id/aeo_brands
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_brands/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "string",
"name": "string",
"domain": "string",
"kind": "own",
"status": "suggested",
"source": "citations",
"aliases": [
"string"
],
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}
]
}

Retrieve aeo brands

Gets one brand from the project's brand catalog.

Required API key scopes

web_analytics:read

Path parameters

  • id
    string

Response


Example request

GET /api/projects/:project_id/aeo_brands/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_brands/:id/

Example response

Status 200
RESPONSE
{
"id": "string",
"name": "string",
"domain": "string",
"kind": "own",
"status": "suggested",
"source": "citations",
"aliases": [
"string"
],
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}

Update aeo brands

Renames, relabels, confirms or ignores a brand, or replaces its other names. The daily run keeps these edits; it only adds newly cited domains.

Required API key scopes

web_analytics:write

Path parameters

  • id
    string

Request parameters

  • name
    string
  • kind
  • status
  • aliases
    array

Response


Example request

PATCH /api/projects/:project_id/aeo_brands/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_brands/:id/\
-d name="string"

Example response

Status 200
RESPONSE
{
"id": "string",
"name": "string",
"domain": "string",
"kind": "own",
"status": "suggested",
"source": "citations",
"aliases": [
"string"
],
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}

List all aeo prompts

Lists the project's AEO prompt set, ordered by topic and then rank, one page at a time. Filter by topic, by on/off state, or to the prompts that need improvement. Archived prompts are left out unless include_archived is true. Each prompt carries its latest check per answer engine.

Required API key scopes

web_analytics:read

Query parameters

  • active
    boolean | null
  • include_archived
    boolean
    Default: false
  • limit
    integer
  • needs_improvement
    boolean
    Default: false
  • offset
    integer
  • topic
    string

Response


Example request

GET /api/projects/:project_id/aeo_prompts
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"latest_checks": [
{
"engine": "string",
"cited": true,
"check_failed": true,
"target_best_position": 0,
"search_queries": [
"string"
],
"checked_at": "2019-08-24T14:15:22Z"
}
],
"id": "string",
"prompt": "string",
"topic": "string",
"prompt_source": "string",
"rank": 0.1,
"active": true,
"last_checked_at": "2019-08-24T14:15:22Z",
"external_visibility": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"archived_at": "2019-08-24T14:15:22Z",
"current_version": 0,
"version_count": 0
}
]
}

Retrieve aeo prompts

Gets one prompt from the project's AEO prompt set, archived ones included, with its latest check per answer engine.

Required API key scopes

web_analytics:read

Path parameters

  • id
    string

Response


Example request

GET /api/projects/:project_id/aeo_prompts/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/

Example response

Status 200
RESPONSE
{
"latest_checks": [
{
"engine": "string",
"cited": true,
"check_failed": true,
"target_best_position": 0,
"search_queries": [
"string"
],
"checked_at": "2019-08-24T14:15:22Z"
}
],
"id": "string",
"prompt": "string",
"topic": "string",
"prompt_source": "string",
"rank": 0.1,
"active": true,
"last_checked_at": "2019-08-24T14:15:22Z",
"external_visibility": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"archived_at": "2019-08-24T14:15:22Z",
"current_version": 0,
"version_count": 0
}

Update aeo prompts

Turns a prompt on or off, changes its topic, archives or restores it, or changes its text. A text change adds the next version and makes it current, and current_version moves back to an earlier one. The prompt keeps its id, and past checks are always kept.

Required API key scopes

web_analytics:write

Path parameters

  • id
    string

Request parameters

  • active
    boolean | null
  • topic
    string
  • prompt
    string
  • version_description
    string
  • current_version
    integer | null
  • archived
    boolean | null

Response


Example request

PATCH /api/projects/:project_id/aeo_prompts/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/\
-d active="boolean"

Example response

Status 200 The updated prompt.
RESPONSE
{
"latest_checks": [
{
"engine": "string",
"cited": true,
"check_failed": true,
"target_best_position": 0,
"search_queries": [
"string"
],
"checked_at": "2019-08-24T14:15:22Z"
}
],
"id": "string",
"prompt": "string",
"topic": "string",
"prompt_source": "string",
"rank": 0.1,
"active": true,
"last_checked_at": "2019-08-24T14:15:22Z",
"external_visibility": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"archived_at": "2019-08-24T14:15:22Z",
"current_version": 0,
"version_count": 0
}
Status 400 The edit is invalid, the version does not exist, or the prompt is archived and must be restored first.
Status 409 Another prompt in the set already has the new text.

Delete aeo prompts

Archives a prompt: it is turned off and never runs again. Nothing is deleted, and its versions and checks are kept. Restore it with a PATCH of archived=false.

Required API key scopes

web_analytics:write

Path parameters

  • id
    string

Example request

DELETE /api/projects/:project_id/aeo_prompts/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/

Example response

Status 204 The prompt is archived.

Retrieve aeo prompts

Lists every check of one prompt, newest first, one page at a time. Filter by engine, by prompt version, or with since to see only checks from a point in time on. Each check has the engine's answer, the URLs it cited, the searches it ran and the prompt version it ran. Set include_answer_text=false to leave the answers out and page through history with smaller responses.

Required API key scopes

web_analytics:read

Path parameters

  • id
    string

Query parameters

  • engine
    string
  • include_answer_text
    boolean
    Default: true
  • limit
    integer
  • offset
    integer
  • since
    string
  • version
    integer

Response


Example request

GET /api/projects/:project_id/aeo_prompts/:id/checks
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/checks/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "string",
"run_id": "string",
"engine": "string",
"model": "string",
"created_at": "2019-08-24T14:15:22Z",
"cited": true,
"check_failed": true,
"error": "string",
"cited_urls": [
"string"
],
"target_urls": [
"string"
],
"target_best_position": 0,
"top_cited_domains": [
"string"
],
"search_queries": [
"string"
],
"answer_text": "string",
"prompt_version": 0,
"brand_sentiment": "string",
"brand_sentiment_score": 0
}
]
}

Retrieve aeo prompts

Gets citation and brand-mention totals per answer engine for one prompt, plus, for the last 30 days in the project's timezone, per-day counts, which engines cite which domains, brand sentiment per engine, and the words of the web searches the engines ran.

Required API key scopes

web_analytics:read

Path parameters

  • id
    string

Response


Example request

GET /api/projects/:project_id/aeo_prompts/:id/stats
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/stats/

Example response

Status 200
RESPONSE
{
"engines": [
{
"citation_rate": 0,
"mention_rate": 0,
"engine": "string",
"checks": 0,
"cited": 0,
"mentioned": 0,
"failed": 0,
"avg_position": 0,
"first_checked_at": "2019-08-24T14:15:22Z",
"last_checked_at": "2019-08-24T14:15:22Z"
}
],
"daily": [
{
"date": "2019-08-24",
"engine": "string",
"checks": 0,
"cited": 0,
"mentioned": 0,
"failed": 0,
"avg_position": 0
}
],
"consensus": [
{
"engine": "string",
"domain": "string",
"checks_citing": 0,
"checks": 0
}
],
"sentiment": [
{
"engine": "string",
"positive": 0,
"neutral": 0,
"negative": 0,
"unscored": 0
}
],
"top_words": [
{
"word": "string",
"count": 0
}
],
"total_checks": 0,
"brand_names": [
"string"
],
"daily_from": "2019-08-24",
"daily_to": "2019-08-24"
}

Retrieve aeo prompts

Lists every version of a prompt's text, newest first. A text edit adds a version, and one of them is current.

Required API key scopes

web_analytics:read

Path parameters

  • id
    string

Example request

GET /api/projects/:project_id/aeo_prompts/:id/versions
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/:id/versions/

Example response

Status 200
RESPONSE
{
"created_by": {
"email": "string",
"name": "string"
},
"version": 0,
"text": "string",
"version_description": "string",
"created_at": "2019-08-24T14:15:22Z",
"is_current": true
}

Create aeo prompts bulk

Adds prompts to the project's AEO prompt set, or updates the topic and visibility of prompts that already exist. Existing prompts keep their active state. Prompts whose text matches an archived prompt are skipped.

Required API key scopes

web_analytics:write

Request parameters

  • prompts
    Click to open
    array

Response


Example request

POST /api/projects/:project_id/aeo_prompts/bulk_import
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/bulk_import/\
-d prompts="array"

Example response

Status 200
RESPONSE
{
"created": 0,
"updated": 0,
"skipped": 0
}

Retrieve aeo prompts

Gets an overview of the project's whole AEO prompt set for the last 'days' days (default 30) in the project's timezone: how many prompts are tracked, how many checks ran, the citation rate and the brand-mention rate, the same counts for the window before it, the current window split per answer engine (Claude, ChatGPT/OpenAI, Exa) and per topic, and the domains the engines cited most.

Required API key scopes

web_analytics:read

Query parameters

  • days
    integer
    Default: 30

Response


Example request

GET /api/projects/:project_id/aeo_prompts/overview
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/overview/

Example response

Status 200
RESPONSE
{
"current": {
"citation_rate": 0,
"mention_rate": 0,
"checks": 0,
"failed": 0,
"cited": 0,
"mentioned": 0,
"prompts": 0,
"prompts_cited": 0,
"avg_position": 0
},
"previous": {
"citation_rate": 0,
"mention_rate": 0,
"checks": 0,
"failed": 0,
"cited": 0,
"mentioned": 0,
"prompts": 0,
"prompts_cited": 0,
"avg_position": 0
},
"engines": [
{
"citation_rate": 0,
"mention_rate": 0,
"checks": 0,
"failed": 0,
"cited": 0,
"mentioned": 0,
"prompts": 0,
"prompts_cited": 0,
"avg_position": 0,
"engine": "string"
}
],
"topics": [
{
"citation_rate": 0,
"mention_rate": 0,
"checks": 0,
"failed": 0,
"cited": 0,
"mentioned": 0,
"prompts": 0,
"prompts_cited": 0,
"avg_position": 0,
"topic": "string",
"active_prompts": 0
}
],
"top_domains": [
{
"domain": "string",
"answers": 0,
"share_of_answers": 0.1,
"is_target": true
}
],
"top_searches": [
{
"top_prompts": [
{
"id": "string",
"text": "string"
}
],
"query": "string",
"prompts": 0,
"answers": 0,
"cited": 0,
"engines": [
"string"
]
}
],
"days": 0,
"window_from": "2019-08-24",
"window_to": "2019-08-24",
"prompts_tracked": 0,
"target_domains": [
"string"
],
"brand_names": [
"string"
]
}

Retrieve aeo prompts

Gets how often AI answers named the project against its competitors over the last 'days' days (default 30) in the project's timezone, with the same share for the window before, a daily series, and the domains and pages the engines cited most. Competitors are derived from the cited domains.

Required API key scopes

web_analytics:read

Query parameters

  • days
    integer
    Default: 30

Response


Example request

GET /api/projects/:project_id/aeo_prompts/rankings
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/rankings/

Example response

Status 200
RESPONSE
{
"brands": [
{
"domain": "string",
"name": "string",
"is_target": true,
"answers_mentioning": 0,
"visibility": 0,
"previous_visibility": 0,
"positive_share": 0
}
],
"daily": [
{
"date": "2019-08-24",
"domain": "string",
"answers": 0,
"visibility": 0
}
],
"top_domains": [
{
"domain": "string",
"answers": 0,
"share_of_answers": 0.1,
"urls": 0,
"is_target": true,
"is_competitor": true
}
],
"top_pages": [
{
"url": "string",
"answers": 0,
"share_of_answers": 0.1,
"is_target": true
}
],
"days": 0,
"window_from": "2019-08-24",
"window_to": "2019-08-24",
"answers": 0
}

Create aeo prompts

Suggests prompts to track for a site. Requires AI data processing approved for the organization. Claude reads the site with web search and writes questions a buyer would ask an AI assistant, each labeled with a topic, a circle, a funnel stage and whether it names the brand. Nothing is saved: import the prompts you keep with bulk_import. Prompts the project already tracks are left out. Returns a pending job right away; poll GET aeo_prompts/suggest/<id>/ until it completes, which takes up to a few minutes.

Required API key scopes

web_analytics:write

Request parameters

  • domain
    string
  • brand
    string
  • description
    string
  • competitors
    array
  • topics
    array
  • count
    integer
    Default: 20

Response


Example request

POST /api/projects/:project_id/aeo_prompts/suggest
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/suggest/\
-d domain="string"

Example response

Status 202
RESPONSE
{
"suggestions": [
{
"prompt": "string",
"topic": "string",
"circle": "differentiation",
"funnel_stage": "top",
"branded": true,
"reason": "string"
}
],
"id": "string",
"status": "pending",
"error": "string"
}

Retrieve aeo prompts suggestion

Gets a prompt suggestion job started with POST aeo_prompts/suggest/. status is pending while Claude works, then completed with the suggestions or failed with an error. Jobs expire an hour after their last update.

Required API key scopes

web_analytics:read

Path parameters

  • job_id
    string

Response


Example request

GET /api/projects/:project_id/aeo_prompts/suggest/:job_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/suggest/:job_id/

Example response

Status 200
RESPONSE
{
"suggestions": [
{
"prompt": "string",
"topic": "string",
"circle": "differentiation",
"funnel_stage": "top",
"branded": true,
"reason": "string"
}
],
"id": "string",
"status": "pending",
"error": "string"
}

Retrieve aeo prompts

Lists the topics in the project's AEO prompt set, with the number of prompts in each.

Required API key scopes

web_analytics:read

Example request

GET /api/projects/:project_id/aeo_prompts/topics
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/aeo_prompts/topics/

Example response

Status 200
RESPONSE
{
"topic": "string",
"prompts": 0
}

Create web analytics fetch llms

Loads an llms.txt file from a public URL for coverage analysis without saving it.

Required API key scopes

web_analytics:read

Request parameters

  • url
    string

Response


Example request

POST /api/projects/:project_id/web_analytics/llms_txt
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/web_analytics/llms_txt/\
-d url="string"

Example response

Status 200
RESPONSE
{
"content": "string",
"url": "http://example.com"
}
Status 400 The URL is invalid, inaccessible, or does not return an llms.txt file.

Create web analytics fetch llms

Loads an llms.txt file from a public URL for coverage analysis without saving it.

Required API key scopes

web_analytics:read

Request parameters

  • url
    string

Response


Example request

POST /api/projects/:project_id/web_analytics/llms_txt
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/web_analytics/llms_txt/\
-d url="string"

Example response

Status 200
RESPONSE
{
"content": "string",
"url": "http://example.com"
}
Status 400 The URL is invalid, inaccessible, or does not return an llms.txt file.

Retrieve web analytics

The 'Wrapped'-style weekly recap: everything in the weekly digest (visitors, pageviews, sessions, bounce rate, average session duration with period-over-period comparisons, top pages, top sources, and goals) plus a single derived weekly persona and a short list of screenshot-worthy highlights for the period.

Required API key scopes

web_analytics:read

Query parameters

  • compare
    boolean
    Default: true
  • days
    integer
    Default: 7

Response


Example request

GET /api/projects/:project_id/web_analytics/recap
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/web_analytics/recap/

Example response

Status 200
RESPONSE
{
"visitors": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"pageviews": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"sessions": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"bounce_rate": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"avg_session_duration": {
"current": "string",
"previous": "string",
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"top_pages": [
{
"host": "string",
"path": "string",
"visitors": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"top_sources": [
{
"name": "string",
"visitors": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"goals": [
{
"name": "string",
"conversions": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"metadata": {
"data_status": "ok",
"date_from": "2019-08-24T14:15:22Z",
"date_to": "2019-08-24T14:15:22Z",
"timezone": "string",
"filter_test_accounts": true,
"notes": [
"string"
]
},
"dashboard_url": "http://example.com",
"persona": {
"id": "string",
"name": "string",
"emoji": "string",
"blurb": "string",
"color": "string"
},
"highlights": [
{
"id": "string",
"emoji": "string",
"title": "string",
"value": "string",
"detail": "string"
}
],
"period_label": "string",
"period_start": "2019-08-24",
"period_end": "2019-08-24",
"project_name": "string",
"recap_url": "http://example.com"
}

Retrieve web analytics

The 'Wrapped'-style weekly recap: everything in the weekly digest (visitors, pageviews, sessions, bounce rate, average session duration with period-over-period comparisons, top pages, top sources, and goals) plus a single derived weekly persona and a short list of screenshot-worthy highlights for the period.

Required API key scopes

web_analytics:read

Query parameters

  • compare
    boolean
    Default: true
  • days
    integer
    Default: 7

Response


Example request

GET /api/projects/:project_id/web_analytics/recap
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/web_analytics/recap/

Example response

Status 200
RESPONSE
{
"visitors": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"pageviews": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"sessions": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"bounce_rate": {
"current": 0.1,
"previous": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"avg_session_duration": {
"current": "string",
"previous": "string",
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
},
"top_pages": [
{
"host": "string",
"path": "string",
"visitors": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"top_sources": [
{
"name": "string",
"visitors": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"goals": [
{
"name": "string",
"conversions": 0,
"change": {
"percent": 0,
"direction": "Up",
"color": "string",
"text": "string",
"long_text": "string"
}
}
],
"metadata": {
"data_status": "ok",
"date_from": "2019-08-24T14:15:22Z",
"date_to": "2019-08-24T14:15:22Z",
"timezone": "string",
"filter_test_accounts": true,
"notes": [
"string"
]
},
"dashboard_url": "http://example.com",
"persona": {
"id": "string",
"name": "string",
"emoji": "string",
"blurb": "string",
"color": "string"
},
"highlights": [
{
"id": "string",
"emoji": "string",
"title": "string",
"value": "string",
"detail": "string"
}
],
"period_label": "string",
"period_start": "2019-08-24",
"period_end": "2019-08-24",
"project_name": "string",
"recap_url": "http://example.com"
}