{
  "doc": {
    "id": "ui-coverage/core-concepts/views",
    "title": "Views: pages and components in UI Coverage",
    "description": "How UI Coverage groups the URLs your tests visit into views: URL pattern rules, per-view coverage scores, and configuration to group or exclude URLs.",
    "section": "ui-coverage",
    "source_path": "/llm/markdown/ui-coverage/core-concepts/views.md",
    "version": "f97f06d85653c51afe39a9bd3cefda946807f150",
    "updated_at": "2026-10-05T21:01:45.863Z",
    "headings": [
      {
        "id": "ui-coverage/core-concepts/views#views",
        "text": "Views",
        "level": 1
      },
      {
        "id": "ui-coverage/core-concepts/views#what-makes-a-view",
        "text": "What makes a view",
        "level": 2
      },
      {
        "id": "ui-coverage/core-concepts/views#how-views-are-created",
        "text": "How views are created",
        "level": 2
      },
      {
        "id": "ui-coverage/core-concepts/views#examples",
        "text": "Examples",
        "level": 3
      },
      {
        "id": "ui-coverage/core-concepts/views#views-in-your-coverage-report",
        "text": "Views in your coverage report",
        "level": 2
      },
      {
        "id": "ui-coverage/core-concepts/views#customizing-views",
        "text": "Customizing views",
        "level": 2
      },
      {
        "id": "ui-coverage/core-concepts/views#grouping-urls-into-views",
        "text": "Grouping URLs into views",
        "level": 3
      },
      {
        "id": "ui-coverage/core-concepts/views#ignoring-views",
        "text": "Ignoring views",
        "level": 3
      },
      {
        "id": "ui-coverage/core-concepts/views#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "content": {
    "type": "root",
    "children": [
      {
        "type": "heading",
        "depth": 1,
        "children": [
          {
            "type": "text",
            "value": "Views"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "A view in UI Coverage is a distinct page or state of your application, created by grouping the URLs your tests visit into URL patterns. In component tests, each spec file is a view."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Views turn a run's raw coverage data into a page-by-page breakdown you can act on. When your report shows `/checkout` at 95% and `/settings/*` at 40%, you can weigh each area's coverage against how critical it is to your users and decide where the next test belongs. Views show you:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Where coverage is strong: views with high scores confirm which areas of your application are well tested."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Where the gaps are: views with low scores, and untested views discovered from links, show exactly which pages need attention."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "How to prioritize: per-view scores let you focus testing effort on the most critical areas of your application first."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "What makes a view"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Views come from two sources, depending on testing type:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "End-to-end tests: The unique URLs across all snapshots are consolidated into URL patterns. Each pattern becomes a view."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Component tests: Each spec file becomes a single view, named by the spec's file path. All components mounted within a spec are grouped into that view."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "How views are created"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Every URL visited in an end-to-end run passes through three steps, in order:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": true,
        "start": 1,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Filtering: URLs excluded by your "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`viewFilters`"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " configuration are removed from the report."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Your patterns: The remaining URLs are matched against your "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`views`"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " configuration patterns, in the order they're listed. The first matching pattern wins."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Automatic grouping: Any URLs that didn't match one of your patterns are grouped by the automatic rules below."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The automatic rules consolidate the dynamic URLs that represent the same page into a single view. They reduce noise so that your report reflects the structure of your application, not the number of records in your test data:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Dynamic segments: Any path segment that is a number or an ID is replaced with a wildcard (`*`). A segment counts as an ID when it is a UUID, a UUID-shaped hexadecimal value (even if not a strictly valid UUID), or a string of 20 or more hexadecimal characters. This applies even when only one URL matches the pattern, so `/orders/123` becomes `/orders/*` on its own."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Query parameters: Query strings are ignored when grouping, so URLs that differ only by query parameters become a single view, and view names do not include a query string."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Hash routing: If a URL's hash begins with `#/`, UI Coverage treats your application as using hash-based routing. Each hash route becomes its own view, and the dynamic segment rules also apply within the hash. Hashes that do not begin with `#/` (e.g., `#section-2`) are ignored."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Trailing slashes: URLs that differ only by a trailing slash are the same view."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Common origins: When views share a protocol, host, and port, view names omit them for readability. In runs that span multiple origins, names are shortened wherever it's unambiguous."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Examples"
          }
        ]
      },
      {
        "type": "table",
        "align": [
          null,
          null
        ],
        "children": [
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Visited URLs"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Resulting view"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/users/123/profile`, `/users/456/profile`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/users/*/profile`"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/orders/f14005b2-6e14-4ac2-b41c-4dcd48ee9dbc`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/orders/*`"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/dashboard?tab=overview`, `/dashboard#section-2`, `/dashboard/`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/dashboard`"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/app#/users/1`, `/app#/users/2`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/app#/users/*`"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/app#/admin`, `/app#/settings`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/app#/admin` and `/app#/settings` (separate views)"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/users/alice`, `/users/bob`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "`/users/alice` and `/users/bob` (separate views)"
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Note the last example: segments that are dynamic but are not numbers or IDs, like usernames, are not grouped automatically. Use the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/views.md",
            "children": [
              {
                "type": "text",
                "value": "`views`"
              }
            ]
          },
          {
            "type": "text",
            "value": " configuration to group these yourself."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Views in your coverage report"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The UI Coverage report lists every view along with:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Snapshots: The number of snapshots captured for the view, which you can browse to see the states your tests produced."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Tested elements: How many of the view's interactive elements were tested, out of the total found."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Coverage score: The percentage of the view's interactive elements that were tested."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Your run's overall coverage score uses the same calculation across all included views combined: the total number of tested elements divided by the total number of interactive elements. Each view contributes in proportion to how many elements it contains, and excluding a view removes its elements from the score entirely."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Selecting a view drills into its "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/core-concepts/element-identification.md",
            "children": [
              {
                "type": "text",
                "value": "elements"
              }
            ]
          },
          {
            "type": "text",
            "value": " so you can see exactly which ones your tests missed."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The report also surfaces untested views: pages that were never visited during your run, discovered from "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
            "children": [
              {
                "type": "text",
                "value": "untested links"
              }
            ]
          },
          {
            "type": "text",
            "value": " found in the pages you did test. These highlight areas of your application with no coverage at all, along with the views that link to them."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Customizing views"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Two configuration properties control how URLs become views. Both properties also affect Cypress Accessibility reports."
          }
        ]
      },
      {
        "type": "table",
        "align": [
          null,
          null
        ],
        "children": [
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "If your report shows"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Try this"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Many near-duplicate views, like `/users/alice` and `/users/bob`"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Group them with a "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`views`"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " pattern."
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Third-party, admin, or error pages you don't intend to test"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Exclude them with "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`viewFilters`"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "A page missing from the report entirely"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "The page was never visited during the run. Check "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
                    "children": [
                      {
                        "type": "text",
                        "value": "untested links"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for it, and confirm a `viewFilters` rule isn't excluding it unintentionally."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Grouping URLs into views"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/views.md",
            "children": [
              {
                "type": "text",
                "value": "`views`"
              }
            ]
          },
          {
            "type": "text",
            "value": " configuration defines your own URL patterns for grouping, using "
          },
          {
            "type": "link",
            "title": null,
            "url": "https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API",
            "children": [
              {
                "type": "text",
                "value": "URL Pattern API"
              }
            ]
          },
          {
            "type": "text",
            "value": " syntax:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{\n  \"views\": [\n    {\n      \"pattern\": \"https://cypress.io/users/*\"\n    }\n  ]\n}"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Patterns with named parameters can also use `groupBy` to split one pattern into multiple views based on a parameter's values, such as one view per document type. See the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/views.md",
            "children": [
              {
                "type": "text",
                "value": "views configuration"
              }
            ]
          },
          {
            "type": "text",
            "value": " documentation for the full syntax, matching rules, and worked examples."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Ignoring views"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
            "children": [
              {
                "type": "text",
                "value": "`viewFilters`"
              }
            ]
          },
          {
            "type": "text",
            "value": " configuration excludes URLs you don't want tracked, such as third-party authentication pages:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"https://auth.example.com/*\",\n      \"include\": false\n    }\n  ]\n}"
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "See also"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`views` configuration"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " covers the full syntax for grouping URLs into views, including `groupBy`."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`viewFilters` configuration"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " covers excluding URLs from your reports."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Interactivity"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " explains which elements count as interactive, which commands mark them as tested, and how untested links are tracked."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/element-identification.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Element identification"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " explains how elements are identified within a view across snapshots."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/guides/identify-coverage-gaps.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Identify coverage gaps"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " guide shows how to use views to find untested areas of your application."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/guides/ignore-views-and-links.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Ignore views and links"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " guide walks through excluding irrelevant views from your coverage scores."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/faq.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "UI Coverage FAQ"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " answers common questions about view grouping and missing pages."
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  },
  "token_estimate": 1439
}