---
title: "Cron Reindex Reconcile"
method: POST
path: "/v2/import/cron/reindex-reconcile"
tags: ["v2 - Import"]
---

# Cron Reindex Reconcile

`POST /v2/import/cron/reindex-reconcile`

## Request

- Base URL: `https://api.jubjubapp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.jubjubapp.com/v2/import/cron/reindex-reconcile`
- Auth: HTTP bearer

Layer-3 backstop: re-index content that SHOULD be searchable but is missing
from media_search_index_v1.

The search index is written at three points — end of analysis
(media_metadata_service:upsert at analysis completion), mint completion
(ownership_recovery_worker after ownership flips active), and here. This sweep
exists because the first two are event-triggered and can be missed: analysis
running before a mint completes leaves the piece un-indexed until *something*
re-runs upsert. This makes listing self-healing, not dependent on a single
trigger.

Selects contents_v2 rows that are media_analysed==True AND minted
(ownership_contract_address set AND ownership_status=='active') AND published
(discoverable OR has an external URL) BUT absent from the index, and upserts
them. upsert_search_index self-gates on minted + metadata presence, so a row
that no longer qualifies is skipped (and any stale index doc deleted) inside
the upsert — this sweep only decides *what to check*.

Called by Cloud Scheduler (needs a new job — see TODO). Best-effort, batched.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/jubjubapp/apis/jubjub-api.md) - [All operations](https://skmtc.dev/jubjubapp/apis/jubjub-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jubjubapp/apis/jubjub-api/revisions/353157b296f2?raw)
