Retrieve spoken transcript slices for one topic
Search indexed YouTube and podcast transcripts for short spoken slices. Each result includes spoken text, a watch URL, and a publish date. Scope with channel_ids (or channel) and entity_ids (a person id filters to that person's appearances); narrow to passages about entities with about, to a speaker with by, and to sponsored, organic or mention passages with kind. Every filter takes ids, never names: resolve a name first with GET /v1/entities/resolve, or the call answers 400 id_required naming the parameter. Results carry names beside ids (filters.about, filters.by, chunk about and speakers_by). Use one topic per call. Search results include text on every plan within the plan's publication-date window. Explicitly requesting source=arcmira_premium on a plan without Premium transcripts is refused with filter_requires_paid. An after later than the plan's freshness gate is refused with freshness_requires_paid rather than widened. Uses 4 credits per chunk returned past the first 5. Every gate is a typed error whose error.unlock.url names the plan that lifts it; pass src=mcp-tool only from the Arcmira MCP server.
Request
- Base URL: https://api.arcmira.com
- URL: https://api.arcmira.com/v1/search
- Auth: HTTP bearer
Query parameters
One topic or phrase. Do not concatenate unrelated names; make one call per topic.
Comma-separated YouTube channel ids (UC...), at most 8. Pass every show in scope unless drilling into one. Ids only: a name answers 400 id_required. Resolve names first with GET /v1/entities/resolve.
Alias of channel_ids for code-mode clients; the union of both is the scope.
Comma-separated entity ids (ent_{n}), at most 8. A person id filters to that person's appearances; a channel id widens channel_ids. Ids only: a name answers 400 id_required. Resolve names first with GET /v1/entities/resolve.
Comma-separated entity ids (ent_{n}), at most 8. Only passages about these entities: excerpt pins, exact-name mentions and ad verdicts. Ids only: a name answers 400 id_required. Resolve names first with GET /v1/entities/resolve.
Comma-separated person ids (ent_{n}), at most 8. Only passages where one of these people says the query words (each line of a chunk is labeled with its speaker); a non-person id is refused with invalid_query naming its type. Speaker labels cover a minority of shows; an empty result carries a note saying whether the person is labeled anywhere. Ids only: a name answers 400 id_required. Resolve names first with GET /v1/entities/resolve.
Comma-separated passage classes: sponsored, organic, mention. Combine with about to read what was said about a brand in ad reads or in organic talk.
Only media published at or after this instant. An after later than your plan's freshness gate is refused with freshness_requires_paid rather than widened. An ISO 8601 date (2026-09-01) or datetime with offset (2026-09-01T00:00:00Z), read in UTC. The window is half-open: after is inclusive, before is exclusive.
Only media published before this instant, so before=2026-09-02 includes all of 2026-09-01. An ISO 8601 date (2026-09-01) or datetime with offset (2026-09-01T00:00:00Z), read in UTC. The window is half-open: after is inclusive, before is exclusive.
Restrict to one transcript source class. arcmira_premium on a plan without Premium transcripts is refused with filter_requires_paid.
Chunks to return, 1 to 20. Default 5.
The surface making this call. The Arcmira MCP server sends mcp-tool so every unlock link in a gate attributes to the directory install. Omit from your own client.
Response
Success
Example response
{
"query": "Ramp corporate cards",
"limit": 5,
"returned": 1,
"filters": {
"channel_ids": [
"UC-DRzaGnL_vtBUpCFH5M0tg"
],
"entity_ids": [],
"about": [
{
"id": "ent_14",
"name": "Ramp",
"type": "organization"
}
],
"by": [],
"kind": [
"sponsored"
]
},
"window": {
"after": "2026-08-01T00:00:00Z",
"before": null
},
"chunks": [
{
"id": "UC-DRzaGnL_vtBUpCFH5M0tg/2026-08-04/dQw4w9WgXcQ.md#12",
"video_id": "dQw4w9WgXcQ",
"channel_id": "UC-DRzaGnL_vtBUpCFH5M0tg",
"channel_name": "TBPN",
"video_title": "TBPN | Tuesday, August 4",
"speakers": [
"John Coogan"
],
"source": "creator_captions",
"source_label": "Creator captions",
"published_at": "2026-08-04T17:00:00.000Z",
"text": "Ramp has been on the show for a while now and the pitch is still the same, spend less time on expenses.",
"start_seconds": 4787,
"watch_url": "/watch?v=dQw4w9WgXcQ&t=4787",
"cite_line": "[TBPN | Tuesday, August 4](/watch?v=dQw4w9WgXcQ&t=4787) · @1:19:47 · TBPN · Aug 4, 2026",
"score": 0.71,
"about": [
{
"id": "ent_14",
"name": "Ramp",
"type": "organization"
}
],
"speakers_by": [
{
"id": "ent_27",
"name": "John Coogan",
"type": "person"
}
]
}
],
"as_of": "2026-08-04T17:00:00.000Z",
"search_index": {
"state": "live",
"missing_before": null
},
"note": "Quote text as a spoken beat of a few sentences and cite watch_url with published_at. State the window from window.after when you passed one."
}Changes
No recorded changes to this operation across all 1 revision of this API.