---
title: "Admin Ads Claims Refresh"
method: POST
path: "/v1/admin/ads/claims/{publisher_id}/refresh"
tags: ["admin", "ads"]
---

# Admin Ads Claims Refresh

`POST /v1/admin/ads/claims/{publisher_id}/refresh`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/admin/ads/claims/{publisher_id}/refresh`
- Auth: none declared

Recompute ``claimed_blocks`` + ``claimed_reach`` for one publisher.

For every calendar month with at least one DetectedSponsorBlock,
produce a ``PublisherAdClaim`` row holding:

  * ``claimed_blocks``  count of distinct detected blocks for the
                        publisher in that month.
  * ``claimed_reach``   total ``plays`` rows attached to the
                        distinct articles those blocks belong to.

Idempotent — re-running on the same data yields identical rows.
The join is done at the slug level (DetectedSponsorBlock.article_slug
== Article.slug AND Article.publisher_id == publisher_id), so a
publisher only ever counts plays of its own articles.

## Path parameters

- `publisher_id` string, required

## Headers

- `x-storyflo-email-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
