Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.4.2

Generated from the v1 document of 2026-10-04, which prices every read in credits. `PremiumQuote` replaces the `TranscriptPurchaseQuote` type.

## 0.4.1

Paid reads use credits from your plan, then your on-demand budget.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.4.1
0.4.2
167 changes: 85 additions & 82 deletions fern/openapi.json

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions reference.md

Large diffs are not rendered by default.

36 changes: 18 additions & 18 deletions src/arcmira/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,12 @@
OpenApiDocumentInfo,
OpenApiDocumentInfoContact,
OpenApiDocumentServersItem,
PremiumQuote,
PremiumQuoteBillingScope,
PremiumQuoteCharge,
PremiumQuoteChargeFrom,
PremiumQuoteChargeUnit,
PremiumQuoteUpgrade,
PublicationWindow,
Recommendation,
RecommendationClass,
Expand Down Expand Up @@ -195,12 +201,6 @@
TranscriptJobStatus,
TranscriptPending,
TranscriptPendingQuality,
TranscriptPurchaseQuote,
TranscriptPurchaseQuoteBillingScope,
TranscriptPurchaseQuoteCharge,
TranscriptPurchaseQuoteChargeFrom,
TranscriptPurchaseQuoteChargeUnit,
TranscriptPurchaseQuoteUpgrade,
TranscriptQuote,
TranscriptRequestListResponse,
TranscriptRequestListResponseRequestsItem,
Expand Down Expand Up @@ -461,6 +461,12 @@
"OpenApiDocumentInfoContact": ".types",
"OpenApiDocumentServersItem": ".types",
"PaymentRequiredError": ".errors",
"PremiumQuote": ".types",
"PremiumQuoteBillingScope": ".types",
"PremiumQuoteCharge": ".types",
"PremiumQuoteChargeFrom": ".types",
"PremiumQuoteChargeUnit": ".types",
"PremiumQuoteUpgrade": ".types",
"PublicationWindow": ".types",
"Recommendation": ".types",
"RecommendationClass": ".types",
Expand Down Expand Up @@ -514,12 +520,6 @@
"TranscriptJobStatus": ".types",
"TranscriptPending": ".types",
"TranscriptPendingQuality": ".types",
"TranscriptPurchaseQuote": ".types",
"TranscriptPurchaseQuoteBillingScope": ".types",
"TranscriptPurchaseQuoteCharge": ".types",
"TranscriptPurchaseQuoteChargeFrom": ".types",
"TranscriptPurchaseQuoteChargeUnit": ".types",
"TranscriptPurchaseQuoteUpgrade": ".types",
"TranscriptQuote": ".types",
"TranscriptRequestListResponse": ".types",
"TranscriptRequestListResponseRequestsItem": ".types",
Expand Down Expand Up @@ -771,6 +771,12 @@ def __dir__():
"OpenApiDocumentInfoContact",
"OpenApiDocumentServersItem",
"PaymentRequiredError",
"PremiumQuote",
"PremiumQuoteBillingScope",
"PremiumQuoteCharge",
"PremiumQuoteChargeFrom",
"PremiumQuoteChargeUnit",
"PremiumQuoteUpgrade",
"PublicationWindow",
"Recommendation",
"RecommendationClass",
Expand Down Expand Up @@ -824,12 +830,6 @@ def __dir__():
"TranscriptJobStatus",
"TranscriptPending",
"TranscriptPendingQuality",
"TranscriptPurchaseQuote",
"TranscriptPurchaseQuoteBillingScope",
"TranscriptPurchaseQuoteCharge",
"TranscriptPurchaseQuoteChargeFrom",
"TranscriptPurchaseQuoteChargeUnit",
"TranscriptPurchaseQuoteUpgrade",
"TranscriptQuote",
"TranscriptRequestListResponse",
"TranscriptRequestListResponseRequestsItem",
Expand Down
2 changes: 1 addition & 1 deletion src/arcmira/_package.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Written by scripts/install-generated.py from VERSION.
__version__ = '0.4.1'
__version__ = '0.4.2'
homepage = "https://arcmira.com"
docs = "https://arcmira.com/docs"
api_base = "https://api.arcmira.com/v1"
Expand Down
4 changes: 2 additions & 2 deletions src/arcmira/channels/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def coverage(
self, channel_id: str, *, request_options: typing.Optional[RequestOptions] = None
) -> ChannelCoverageResponse:
"""
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free (0 rows). 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.
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free; uses no credits. 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.

Parameters
----------
Expand Down Expand Up @@ -104,7 +104,7 @@ async def coverage(
self, channel_id: str, *, request_options: typing.Optional[RequestOptions] = None
) -> ChannelCoverageResponse:
"""
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free (0 rows). 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.
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free; uses no credits. 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.

Parameters
----------
Expand Down
4 changes: 2 additions & 2 deletions src/arcmira/channels/raw_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def coverage(
self, channel_id: str, *, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[ChannelCoverageResponse]:
"""
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free (0 rows). 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.
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free; uses no credits. 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.

Parameters
----------
Expand Down Expand Up @@ -143,7 +143,7 @@ async def coverage(
self, channel_id: str, *, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[ChannelCoverageResponse]:
"""
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free (0 rows). 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.
How many videos of a YouTube channel are searchable, the newest publish date among them, and the split by transcript source class. Call it when a search or mention lookup came back empty, before telling anyone we do not cover a show, and cite indexed_through as the as-of date for mentions and search_indexed_through for transcript search. It cannot request indexing; channel backfill is not available yet. Free; uses no credits. 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.

Parameters
----------
Expand Down
4 changes: 2 additions & 2 deletions src/arcmira/channels/videos/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def list(
request_options: typing.Optional[RequestOptions] = None,
) -> SyncPager[ChannelVideosResponseEpisodesItem, ChannelVideosResponse]:
"""
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing rows remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Bills one row per video returned. 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.
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing videos remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Uses 4 credits per video 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.

Parameters
----------
Expand Down Expand Up @@ -110,7 +110,7 @@ async def list(
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncPager[ChannelVideosResponseEpisodesItem, ChannelVideosResponse]:
"""
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing rows remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Bills one row per video returned. 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.
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing videos remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Uses 4 credits per video 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.

Parameters
----------
Expand Down
4 changes: 2 additions & 2 deletions src/arcmira/channels/videos/raw_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def list(
request_options: typing.Optional[RequestOptions] = None,
) -> SyncPager[ChannelVideosResponseEpisodesItem, ChannelVideosResponse]:
"""
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing rows remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Bills one row per video returned. 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.
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing videos remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Uses 4 credits per video 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.

Parameters
----------
Expand Down Expand Up @@ -199,7 +199,7 @@ async def list(
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncPager[ChannelVideosResponseEpisodesItem, ChannelVideosResponse]:
"""
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing rows remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Bills one row per video returned. 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.
The indexed videos of a YouTube channel, newest first, each with its video_id, title, publish date, duration, view count, and watch_url on arcmira.com. Pass next_cursor as cursor to continue. The signed token binds the route, filters, caller and visibility; invalid or old tokens return invalid_cursor. A first-page media ID fence excludes later insertions, including old-date backfills; edits and deletions to existing videos remain live. Call it for the latest or most recent episode of a show, or to list what a show published in a window, then pass a video_id to GET /v1/mentions/counts video_ids for what that episode mentions or to GET /v1/transcripts/{video_id} to read it. indexed_through is the newest date we hold for the channel. An empty list means nothing is indexed; channel backfill is not available yet. Uses 4 credits per video 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.

Parameters
----------
Expand Down
2 changes: 1 addition & 1 deletion src/arcmira/core/client_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform

headers: typing.Dict[str, str] = {
"User-Agent": "arcmira/0.4.1",
"User-Agent": "arcmira/0.4.2",
"X-Fern-Language": "Python",
"X-Fern-Runtime": f"python/{platform.python_version()}",
"X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
Expand Down
Loading
Loading