---
title: "Audio Timeline"
method: POST
path: "/api/media/v1/audio/timeline"
tags: ["Audio"]
---

# Audio Timeline

`POST /api/media/v1/audio/timeline`

## Request

- Base URL: `https://faktry.ai`
- URL: `https://faktry.ai/api/media/v1/audio/timeline`
- Auth: HTTP bearer

Build one audio track from several clips placed at exact start times, with silence in the gaps, optional ducking of music under voice, and loudness normalisation. The input files are the clips, and `tracks` is a JSON array string with one object per file in the same order: [{"start": seconds, "role": "voice"|"music"|"fx", "volume": 0-2, "fade_in": s, "fade_out": s}]. `duration` pads or cuts the result to an exact length. `duck` ("true" or a JSON object string with amount_db, attack_ms, release_ms) lowers every music track while a voice track plays and needs at least one of each. `normalize_lufs` (e.g. -16) is applied once, after mixing and ducking.

**Cost:** 1 credits

## Response `200`

Processed audio file

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `413`: File too large
- `429`: Rate limit exceeded or insufficient credits
- `500`: Internal server error

---

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