Add YouTube sources to a collection
add_sourcesCharged like transcribe. Expand the given YouTube URLs, charge for the new work and start an ingest job in an existing collection. Maps to POST /v1/collections/{collectionId}/sources. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. Videos already in the collection are free. Pass a quote_id from quote to be charged exactly that price. Poll get_status every 10–30 s until status is completed, partial or failed; completed means every accepted video is transcribed and indexed, so the collection is queryable. API key required (the key's write scope). Prices are the service defaults; quote returns the exact price.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"collection_id": "<collection_id>"
},
"name": "add_sources"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | One YouTube URL (video, @handle, /channel/UC…, or playlist). | |
| urls | No | Several YouTube URLs. | |
| quality | No | Transcription quality (default standard). | |
| language | No | Optional BCP-47 hint for transcription, e.g. en. | |
| quote_id | No | A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired). | |
| channel_url | No | `https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL. | |
| channel_urls | No | Several channel or playlist URLs. | |
| collection_id | Yes | Collection to add the sources to. | |
| exclude_shorts | No | Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped. | |
| idempotency_key | No | Idempotency-Key for safe retries. | |
| min_duration_seconds | No | Skip expanded videos shorter than this many seconds. | |
| max_videos_per_channel | No | Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap. |