# SoundCloud Track Audio Downloader (`automation-lab/soundcloud-track-audio-downloader`) Actor

Resolve public SoundCloud track URLs to fresh progressive MP3 and HLS links, detailed metadata, and optional stored audio files.

- **URL**: https://apify.com/automation-lab/soundcloud-track-audio-downloader.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## SoundCloud Track Audio Downloader

Resolve batches of public SoundCloud track URLs into fresh playable audio links and detailed track metadata.
Optionally copy the preferred progressive audio file into the run's Apify key-value store.

This Actor is designed for researchers, creators, archivists, podcast pipelines, and media teams that already know which public tracks they need.
It does not search SoundCloud or expand profiles and playlists.

### What this Actor does

For every supplied public track URL, the Actor:

1. loads SoundCloud's anonymous public track page;
2. reads its embedded web-player data;
3. resolves the currently available transcodings;
4. prefers progressive MP3 for the primary `audioUrl`;
5. preserves all resolved progressive and HLS alternatives;
6. returns track, creator, license, publisher, and engagement metadata;
7. optionally saves the preferred audio into the run key-value store.

Signed media URLs expire.
Run the Actor again whenever a workflow needs refreshed links.
When SoundCloud exposes expiry context, `audioExpiresAt` and each format's `expiresAt` make that freshness explicit.

### Who is it for

- **Media archivists** resolving permitted public recordings in batches.
- **Researchers** collecting playable links and license context for public audio.
- **Podcast and audio pipelines** refreshing expiring source links on a schedule.
- **Creators and rights holders** backing up or processing tracks they control.
- **Developers** feeding SoundCloud media into transcription, classification, or moderation workflows.

Use this Actor when track URLs are already known.
For SoundCloud discovery, profiles, playlists, or search results, use [SoundCloud Scraper](https://apify.com/automation-lab/soundcloud-scraper) instead.

### Why use it

The output is more than a page title or generic track record.
It includes:

- fresh progressive MP3 and HLS media URLs;
- transcoding preset, protocol, MIME type, quality, and duration;
- signed-link expiry when decodable;
- track and creator identity;
- license, ISRC, publisher, and release fields;
- engagement and download counts;
- an opt-in stored-audio path for downstream Actor workflows;
- one explicit success or error record per input URL.

No login, private cookie, browser, or proxy is required for the supported public-track workflow.

### Supported input scope

Version 1 accepts only public SoundCloud track URLs such as:

```text
https://soundcloud.com/forss/flickermood
````

It intentionally does not accept:

- profile URLs;
- playlist or `/sets/` URLs;
- search and discovery pages;
- private or secret-link tracks;
- deleted or geo-unavailable tracks;
- non-SoundCloud URLs.

A run accepts up to 100 track URLs.
Malformed or unsupported URL shapes fail input validation before processing begins.
Unavailable tracks produce uncharged per-item error records so one bad URL does not discard the rest of a batch.

### Input parameters

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `startUrls` | array | required | One to 100 public SoundCloud track URLs. |
| `downloadAudio` | boolean | `false` | Copy the preferred audio file to the run key-value store. |
| `maxConcurrency` | integer | `5` | Concurrent track-page workers from 1 to 10. Audio-copy runs use one worker. |
| `maxAudioSizeMb` | integer | `100` | Per-file limit from 1 to 150 MB when copying audio. |

`maxAudioSizeMb` is a memory and transfer safety boundary.
It does not shorten or transcode a track.
If the public file is larger, that input returns an error instead of loading an unbounded file.

### Quick start

1. Open the Actor in Apify Console.
2. Keep the prefilled public sample or paste your own track URLs.
3. Leave **Copy audio to key-value store** disabled if fresh links are sufficient.
4. Run the Actor.
5. Open **Track results** to inspect dataset records.
6. If audio copying was enabled, open **Downloaded audio** for saved files.

Small metadata-only input:

```json
{
  "startUrls": [
    { "url": "https://soundcloud.com/forss/flickermood" }
  ],
  "downloadAudio": false,
  "maxConcurrency": 5
}
```

Audio-copy input:

```json
{
  "startUrls": [
    { "url": "https://soundcloud.com/forss/flickermood" }
  ],
  "downloadAudio": true,
  "maxAudioSizeMb": 100
}
```

### Output fields

| Field | Meaning |
| --- | --- |
| `status` | `success` or `error` for this input URL. |
| `inputUrl` | Original supplied URL. |
| `trackId`, `urn` | Stable SoundCloud track identifiers. |
| `title`, `permalinkUrl` | Public track identity. |
| `creator` | Uploader ID, names, profile, avatar, and verification. |
| `durationMs` | Full track duration in milliseconds. |
| `genre`, `tags`, `description` | Creator-supplied descriptive metadata. |
| `license`, `isrc`, `publisher` | Rights and publication context when SoundCloud provides it. |
| `playbackCount`, `likesCount`, `repostsCount` | Public engagement counters. |
| `commentCount`, `downloadCount` | Public comments and creator-enabled download count. |
| `downloadable`, `streamable` | SoundCloud availability flags. |
| `formats` | All successfully resolved progressive and HLS alternatives. |
| `audioUrl` | Preferred playable URL, usually progressive MP3. |
| `audioExpiresAt` | Signed-link expiry when it can be decoded. |
| `audioStorageKey`, `audioStorageUrl` | Saved-file references when audio copying is enabled. |
| `error` | Clear failure reason for an unavailable input. |
| `scrapedAt` | UTC timestamp when the record was resolved. |

Source fields can be `null` when a creator did not publish them.
The dataset schema is intentionally tolerant of upstream omissions.

### Example output

This abbreviated record reflects current Actor behavior.
Signed query values are shortened because they are temporary bearer-like media links.

```json
{
  "status": "success",
  "inputUrl": "https://soundcloud.com/forss/flickermood",
  "trackId": 293,
  "urn": "soundcloud:tracks:293",
  "title": "Flickermood",
  "permalinkUrl": "https://soundcloud.com/forss/flickermood",
  "creator": {
    "userId": 183,
    "username": "Forss",
    "fullName": "Eric Quidenus-Wahlforss",
    "permalinkUrl": "https://soundcloud.com/forss",
    "avatarUrl": "https://i1.sndcdn.com/avatars-example-large.jpg",
    "verified": true
  },
  "durationMs": 213890,
  "genre": "Electronic",
  "license": "all-rights-reserved",
  "isrc": "DEP960300042",
  "streamable": true,
  "formats": [
    {
      "preset": "mp3_0_0",
      "protocol": "progressive",
      "mimeType": "audio/mpeg",
      "quality": "sq",
      "durationMs": 213890,
      "signedUrl": "https://cf-media.sndcdn.com/example.mp3?Policy=REDACTED",
      "expiresAt": "2026-07-25T05:30:20.000Z"
    }
  ],
  "audioUrl": "https://cf-media.sndcdn.com/example.mp3?Policy=REDACTED",
  "audioExpiresAt": "2026-07-25T05:30:20.000Z",
  "audioStorageKey": null,
  "audioStorageUrl": null,
  "error": null,
  "scrapedAt": "2026-07-25T05:25:20.000Z"
}
```

### Audio formats and file copying

`formats` can include multiple HLS AAC/MP4 and MP3 variants plus progressive MP3.
The exact list is controlled by SoundCloud and can differ per track, account, country, or time.
A failed individual transcoding is omitted when another format still resolves successfully.

When `downloadAudio` is `true`, the Actor downloads `audioUrl` and stores it under a key such as:

```text
audio-293.mp3
```

Audio-copy runs are serial to keep memory bounded.
The Actor checks the reported file size before transfer when the server exposes it, then enforces the configured size after retrieval as well.
The returned API storage URL may require the Apify token that owns the run.

### Pricing

This Actor uses pay-per-event pricing:

- **$0.005** once per valid run;
- **$0.00001 per resolved track** across Apify plan tiers;
- **$0.0005 per started MB stored** on the Free plan when audio copying is enabled, discounted by plan tier;
- error records are not charged as resolved tracks.

Examples on the Free plan:

| Workload | Estimated Actor charge |
| --- | ---: |
| 1 metadata-only track | $0.00501 |
| 10 metadata-only tracks | $0.0051 |
| 100 metadata-only tracks | $0.006 |
| 1 resolved track plus a 4 MB stored file | $0.00701 |

Audio-copy totals vary with actual file size.
Apify platform usage, storage retention, and transfer charges governed by the user's Apify plan are separate from Actor event charges.
Prices shown here are the Actor event prices declared for the current build.

### Scheduling expiring-link refreshes

Signed media URLs are temporary by design.
For a pipeline that needs live links:

1. save canonical SoundCloud track URLs, not old signed URLs;
2. schedule this Actor at the required refresh interval;
3. replace downstream links with each run's `audioUrl`;
4. use `audioExpiresAt` to avoid serving stale URLs;
5. retain `license` and `publisher` fields with derived data.

Apify schedules, webhooks, Make, Zapier, and dataset exports can automate the refresh.

### Integration patterns

Useful workflows include:

- feed resolved audio into a transcription Actor;
- archive licensed creator-owned tracks to external object storage;
- monitor public engagement while refreshing media links;
- create a permitted audio-analysis dataset with ISRC and license context;
- trigger a webhook only for `status: success` records;
- schedule metadata-only runs frequently and audio copies less often.

For large batches, prefer metadata-only resolution first.
Enable copying only for tracks that a downstream job truly needs.

### API with cURL

Set `APIFY_TOKEN` in your environment, then run:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~soundcloud-track-audio-downloader/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{"url":"https://soundcloud.com/forss/flickermood"}],
    "downloadAudio": false
  }'
```

Avoid embedding tokens in source control or shared logs.

### API with JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/soundcloud-track-audio-downloader').call({
  startUrls: [{ url: 'https://soundcloud.com/forss/flickermood' }],
  downloadAudio: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].audioUrl, items[0].audioExpiresAt);
```

### API with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/soundcloud-track-audio-downloader").call(
    run_input={
        "startUrls": [{"url": "https://soundcloud.com/forss/flickermood"}],
        "downloadAudio": False,
    }
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[0]["audioUrl"], items[0]["audioExpiresAt"])
```

### Use through Apify MCP

#### Claude Code

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/soundcloud-track-audio-downloader"
```

#### Claude Desktop, Cursor, and VS Code

Claude Desktop, Cursor, and VS Code can use the equivalent HTTP MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/soundcloud-track-audio-downloader"
    }
  }
}
```

Example prompts:

- “Resolve these five public SoundCloud track URLs and show progressive MP3 links with expiry times.”
- “Refresh this track's formats and return its license and ISRC.”
- “Copy this creator-owned public track to run storage and return the storage key.”

### Limits and failure behavior

- SoundCloud can change embedded fields or media resolver behavior without notice.
- Tracks can become private, deleted, non-streamable, or unavailable by geography.
- Not every track has progressive MP3; HLS can be the only available delivery format.
- Engagement counts and creator metadata can be absent.
- Signed URLs expire and should not be treated as permanent archive URLs.
- Stored files remain subject to Apify storage retention and access rules.
- The Actor does not decrypt DRM, bypass access controls, or access private tracks.

Transient network, rate-limit, and server errors receive bounded retries with backoff.
Stable invalid URLs and unavailable tracks are not retried repeatedly.

### Legality and responsible use

Only download or process audio that you own, license, or are otherwise legally authorized to use.
A publicly streamable page does not automatically grant permission to redistribute, republish, train on, or commercially exploit the recording.

Respect:

- copyright and neighboring rights;
- the track's returned license metadata;
- SoundCloud's terms and creator settings;
- applicable privacy and data-protection law;
- takedown requests and retention obligations.

`downloadable` reports SoundCloud's original-download setting.
It is not a legal opinion and is distinct from technical public streamability.

### Troubleshooting

#### “Expected a public SoundCloud track URL”

Supply a canonical track URL with exactly a creator slug and track slug.
Do not supply a profile, playlist, search page, shortened link, or another domain.

#### “The URL did not resolve to a public SoundCloud track”

Open the URL anonymously.
The track may be private, removed, geo-blocked, or no longer streamable.
Use the canonical public page URL rather than an old media CDN URL.

#### The audio URL stopped working

Signed media URLs expire.
Rerun the Actor with the canonical `permalinkUrl` and replace the old link.
Use `audioExpiresAt` to schedule refreshes before expiry.

#### Audio was not copied

Confirm `downloadAudio` is `true` and inspect `error`.
Increase `maxAudioSizeMb` only when the run has enough memory and you are authorized to retain the file.
The hard supported maximum is 150 MB per track.

#### A format is missing

SoundCloud controls the formats per track.
The Actor returns every transcoding that resolved successfully during that run, but it cannot create formats SoundCloud did not expose.

### Related Automation Lab Actors

- [SoundCloud Scraper](https://apify.com/automation-lab/soundcloud-scraper) — discover tracks, playlists, and users or collect metadata without audio-link downloading.

A common two-step workflow is to discover public track URLs with SoundCloud Scraper, then send only selected lawful track URLs to this Actor for fresh playable links.

### FAQ

#### Does this convert SoundCloud tracks to a higher quality?

No.
It returns the public transcodings SoundCloud exposes and does not upsample, transcode, or claim source-master quality.

#### Does it support playlists or profiles?

Not in version 1.
The narrow track-URL scope keeps output predictable and avoids silently expanding large collections.

#### Can it access private tracks?

No.
It uses anonymous public web-player data and does not accept account cookies or credentials.

#### Are the links permanent?

No.
Use the canonical track URL as the permanent identifier and rerun to obtain a fresh signed link.

#### Is audio copying enabled by default?

No.
It is opt-in because audio increases runtime, memory, transfer, and storage use.

#### Are failed tracks charged?

The one-time valid-run fee still applies, but the per-resolved-track event is emitted only for successful records.
Audio-megabyte events are emitted only after a file is stored.

# Actor input Schema

## `startUrls` (type: `array`):

One to 100 public track URLs. Profiles, playlists, sets, search pages, private tracks, and deleted tracks are not supported.

## `downloadAudio` (type: `boolean`):

Download the preferred progressive audio file into this run's key-value store. Disabled by default to reduce transfer, runtime, and storage costs.

## `maxConcurrency` (type: `integer`):

Number of track pages processed concurrently when audio copying is disabled. Audio-copy runs use concurrency 1 to bound memory.

## `maxAudioSizeMb` (type: `integer`):

Per-track safety limit when copying audio to storage.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://soundcloud.com/forss/flickermood"
    }
  ],
  "downloadAudio": false,
  "maxConcurrency": 5,
  "maxAudioSizeMb": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing one success or error record per input track URL.

## `files` (type: `string`):

Key-value store containing audio files when downloadAudio is enabled.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://soundcloud.com/forss/flickermood"
        }
    ],
    "downloadAudio": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/soundcloud-track-audio-downloader").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://soundcloud.com/forss/flickermood" }],
    "downloadAudio": False,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/soundcloud-track-audio-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://soundcloud.com/forss/flickermood"
    }
  ],
  "downloadAudio": false
}' |
apify call automation-lab/soundcloud-track-audio-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/soundcloud-track-audio-downloader",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SoundCloud Track Audio Downloader",
        "description": "Resolve public SoundCloud track URLs to fresh progressive MP3 and HLS links, detailed metadata, and optional stored audio files.",
        "version": "0.1",
        "x-build-id": "sGV0D1a0EvnoAE2TD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~soundcloud-track-audio-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-soundcloud-track-audio-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~soundcloud-track-audio-downloader/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-soundcloud-track-audio-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~soundcloud-track-audio-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-soundcloud-track-audio-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Public SoundCloud track URLs",
                        "minItems": 1,
                        "maxItems": 100,
                        "type": "array",
                        "description": "One to 100 public track URLs. Profiles, playlists, sets, search pages, private tracks, and deleted tracks are not supported.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "downloadAudio": {
                        "title": "Copy audio to key-value store",
                        "type": "boolean",
                        "description": "Download the preferred progressive audio file into this run's key-value store. Disabled by default to reduce transfer, runtime, and storage costs.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrent tracks",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of track pages processed concurrently when audio copying is disabled. Audio-copy runs use concurrency 1 to bound memory.",
                        "default": 5
                    },
                    "maxAudioSizeMb": {
                        "title": "Maximum audio file size (MB)",
                        "minimum": 1,
                        "maximum": 150,
                        "type": "integer",
                        "description": "Per-track safety limit when copying audio to storage.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
