# HALOWERK medienwerk Intro/Outro Joiner

> HALOWERK medienwerk Intro/Outro Joiner is a paid API for AI agents from medien.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-31).

Joins a main podcast recording with optional intro and/or outro audio files, normalizes all parts to a target loudness, applies crossfades, and returns a single finished episode in MP3, Opus, WAV, or FLAC.

## Facts

- Endpoint: POST https://medien.halowerk.com/v1/intro-outro?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-medienwerk-intro-outro-joiner-e07a4c75
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2Eluvzf-5N_huJAy-4bYG

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-medienwerk-intro-outro-joiner-e07a4c75 -d '<json body>'
```

Example prompt: Can you assemble my podcast episode by joining my intro jingle, main recording, and outro jingle into a single MP3 file at -16 LUFS with 0.8-second crossfades? My main recording is 32 minutes long and I'll provide URLs for all three audio files.

## When to prefer this

Choose this endpoint when you need to automate podcast post-production: assembling intro, main recording, and outro into a single polished episode with matched loudness and smooth crossfades. It is especially valuable when you also need the main-part start timestamp to realign chapter markers or transcripts. Prefer this over general audio editors when you want a serverless, per-call-billed pipeline with format flexibility (MP3/Opus/WAV/FLAC) and LUFS-compliant loudness normalization, without managing audio processing infrastructure.

## Known failure modes

- Audio files too large (base64 input exceeds 8 MB for source or 4 MB for intro/outro)
- Output file exceeds 8 MB inline limit for the chosen format and duration
- Invalid or unreachable audio file URL
- Unsupported audio format in source files
- target_lufs out of allowed range (-24 to -12)
- duration_minutes out of range (1–60)
- crossfade_seconds out of range (0–3)
- Payment not provided or insufficient (x402 payment required at $0.003 USDC per call, billed per started minute of main recording)
- Missing required source audio field

## How this service works

Takes a main recording and an intro and/or outro file and returns one episode: intro, main part, outro, joined with short crossfades, every part brought to the same loudness first and the result normalised to the target. The measured start of the main part in the new file is returned, because every chapter mark and transcript time of the original shifts by that amount. Output as MP3, Opus, WAV or FLAC inline, max 8 MB. Billing per started minute of the main recording.

## Output

Returns a fully joined audio file (MP3, Opus, WAV, or FLAC, max 8 MB) containing intro, main recording, and outro seamlessly crossfaded together with all parts loudness-normalized to the requested LUFS target. Also returns the measured start time (in seconds) of the main recording within the new combined file, enabling the caller to shift chapter marks and transcript timestamps accordingly.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "intro": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "maxLength": 2048
    },
    "filename": {
     "type": "string",
     "maxLength": 260
    },
    "content_base64": {
     "type": "string",
     "maxLength": 4000000
    }
   },
   "additionalProperties": false
  },
  "outro": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "maxLength": 2048
    },
    "filename": {
     "type": "string",
     "maxLength": 260
    },
    "content_base64": {
     "type": "string",
     "maxLength": 4000000
    }
   },
   "additionalProperties": false
  },
  "source": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "maxLength": 2048
    },
    "filename": {
     "type": "string",
     "maxLength": 260
    },
    "content_base64": {
     "type": "string",
     "maxLength": 8000000
    }
   },
   "additionalProperties": false
  },
  "target_lufs": {
   "type": "number",
   "default": -16,
   "maximum": -12,
   "minimum": -24
  },
  "output_format": {
   "enum": [
    "opus",
    "mp3",
    "wav",
    "flac"
   ],
   "type": "string",
   "default": "mp3"
  },
  "duration_minutes": {
   "type": "integer",
   "maximum": 60,
   "minimum": 1,
   "description": "Length of the main recording in started minutes."
  },
  "crossfade_seconds": {
   "type": "number",
   "default": 0.8,
   "maximum": 3,
   "minimum": 0
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-medienwerk-intro-outro-joiner-e07a4c75/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)
