> For the complete documentation index, see [llms.txt](https://docs.cortex.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cortex.io/standardize/scorecards/scorecard-troubleshooting-and-faq.md).

# Scorecard troubleshooting and FAQ

See common frequently asked questions and troubleshooting information below.

Cortex offers a wide variety of out-of-the-box integrations compatible with Scorecard rules. Sometimes, a Scorecard may have multiple integration queries with different endpoints, each with its own rate limits. Cortex works to stay within these rate limits, but they can still affect rule results.&#x20;

<details>

<summary><strong>Why does a rule show an error instead of passing or failing?</strong></summary>

Cortex displays the error next to the failing rule on the affected entity, so you can tell a rate limit apart from a real failure.

</details>

<details>

<summary><strong>Will a rate-limited rule sort itself out, or do I need to do something?</strong></summary>

For most integrations, yes—it'll sort itself out. Cortex retries a rate-limited rule up to five (5) times, backing off between attempts.

</details>

<details>

<summary><strong>Can a rate limit lower an entity's score?</strong></summary>

If every retry hits a rate limit, Cortex falls back to the rule's last known score, so a temporary outage on a third-party API won't drop an entity's level. The same fallback applies to 5xx errors from upstream APIs and to unexpected Cortex-side errors. A brand-new rule has no previous score to fall back on, so it fails and displays a 429 error.

</details>

<details>

<summary><strong>Why does my rule fail with "Could not apply average to non-numeric and non-duration element"?</strong></summary>

This error means an aggregation function was applied to a list of records instead of a list of numbers.&#x20;

For example, `customMetrics()` returns a list of data points that each have a `value` field and a `timestamp` field, so `average()` can't read them as numbers. Use `map()` to extract the numeric field first:

`customMetrics(key="error-rate", lookback=duration("P30D")).map((m) => m.value).average()`

A related error, "Cannot take average of empty list," means the lookback window in the query contains no data points. Learn more in [Querying custom metric data with CQL](/improve/eng-intelligence/custom-metrics.md#querying-custom-metric-data-with-cql).

</details>
