---
title: "Cron Reload Screener Cache"
method: POST
path: "/cron/reload-screener-cache"
tags: ["cron"]
---

# Cron Reload Screener Cache

`POST /cron/reload-screener-cache`

## Request

- Base URL: `https://api.equity-rank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.equity-rank.com/cron/reload-screener-cache`
- Auth: none declared

Re-read `screener_cache` into this process's in-memory `_screener_rows`.

Exists for the out-of-process batch (`app/scripts/run_screener_batch_job.py`,
2026-08-07 batch isolation). When the batch runs in its own Railway container
it commits rows to Postgres but cannot mutate the WEB process's memory, which
is what the authenticated `/api/screener` path serves from. It calls this
afterwards to close that gap.

Synchronous on purpose — the caller wants to know whether the reload landed,
and load_screener_cache() already carries its own 3x retry + backoff. Safe to
call any time; it is exactly what the in-process batch path does at
cron.py:655. Auth: X-Cron-Secret.

## Headers

- `x-cron-secret` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/equity-rank/apis/equity-rank-api.md) · [All operations](https://skmtc.dev/equity-rank/apis/equity-rank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/equity-rank/apis/equity-rank-api/revisions/c2f2463fee33?raw)
