# HALOWERK Medien Podcast Ad Detection

> HALOWERK Medien Podcast Ad Detection is a paid API for AI agents from medien.halowerk.com, paid per call via x402, $0.03/call, status unknown (last checked 2026-10-31).

Detects and timestamps advertising segments in a podcast episode, classifying them as sponsor reads, self-promotion, or cross-promotion, with verified transcript evidence and optional ad removal.

## Facts

- Endpoint: POST https://medien.halowerk.com/v1/ad-detect?utm_source=zero.xyz
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-medien-podcast-ad-detection-4683e63c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tbK7sg6QpQkPfBGuXU9fW

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-medien-podcast-ad-detection-4683e63c -d '<json body>'
```

Example prompt: Scan this 45-minute podcast episode for all advertising segments — sponsors, self-promos, and cross-promos — and give me the start/end timestamps, advertiser names, and any discount codes mentioned. Here's the URL: https://example.com/episode42.mp3, and it's 45 minutes long.

## When to prefer this

Choose this endpoint when you need to programmatically identify, timestamp, and optionally remove advertising segments from podcast episodes up to 120 minutes long, with transcript-verified evidence for each detected segment. It is uniquely suited for podcast analytics pipelines, ad-free subscriber exports, and sponsor auditing workflows. Prefer it over generic audio transcription when the goal is specifically ad detection with structured metadata (advertiser, discount code, ad kind) rather than full transcription.

## Known failure modes

- Audio file exceeds 120 minutes — request rejected
- File URL is inaccessible or returns non-audio content
- base64 payload exceeds 12 MB limit — use URL instead
- duration_minutes not provided or mismatched — may affect billing
- Language not detectable and not specified — transcription may fail
- No ad segments found — returns empty segment list
- Transcript verification fails for a segment — segment is reported but never cut
- Unsupported audio format — file cannot be decoded

## How this service works

Takes a podcast episode of up to 120 minutes and returns its advertising segments: paid sponsor reads, self-promotion (newsletter, Patreon, merchandise) and cross-promotion of other shows, each with start and end on sentence boundaries, the advertiser and any discount code as spoken, and a verbatim evidence phrase that is checked against the transcript — a segment without verified evidence is reported but never cut. Product mentions in the conversation itself are not counted as ads.

## Output

Returns a list of detected advertising segments, each containing: start and end times on sentence boundaries, the ad kind (sponsor, self_promo, or cross_promo), the advertiser or promoted entity, any discount code spoken verbatim, and a verified evidence phrase from the transcript. Segments without verified transcript evidence are reported but not cut. If remove_ads is enabled, also returns a cleaned audio file in the requested format (opus or mp3) encoded as base64.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "source": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "maxLength": 2048,
     "description": "Public http(s) URL of the file."
    },
    "filename": {
     "type": "string",
     "maxLength": 260
    },
    "content_base64": {
     "type": "string",
     "maxLength": 12000000,
     "description": "The file inline, base64. Larger files by url."
    }
   },
   "description": "The recording. Either url or content_base64.",
   "additionalProperties": false
  },
  "language": {
   "type": "string",
   "maxLength": 12,
   "description": "Spoken language (BCP-47). Omit to detect."
  },
  "remove_ads": {
   "type": "boolean",
   "default": false
  },
  "remove_kinds": {
   "type": "array",
   "items": {
    "enum": [
     "sponsor",
     "self_promo",
     "cross_promo"
    ],
    "type": "string"
   },
   "default": [
    "sponsor"
   ],
   "uniqueItems": true
  },
  "output_format": {
   "enum": [
    "opus",
    "mp3"
   ],
   "type": "string",
   "default": "opus"
  },
  "duration_minutes": {
   "type": "integer",
   "maximum": 120,
   "minimum": 1,
   "description": "Length in started minutes — this is what you are billed for."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-medien-podcast-ad-detection-4683e63c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from medien.halowerk.com](https://www.zero.xyz/host/medien.halowerk.com/llms.txt)
