Properties
| Name | Type | Description |
|---|---|---|
| channel | object | |
| sponsors | array | Recurring sponsors ordered by ad read count (descending). |
| meta | object | |
| access | object | The gate that reduced this response. Present only when something was withheld; carries the same code, gate, and unlock an outright refusal would. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/arcmira/main/json-schema/arcmira-channel-sponsors-response-schema.json",
"title": "ChannelSponsorsResponse",
"x-generated": "2026-10-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/arcmira-v1-openapi.json#/components/schemas/ChannelSponsorsResponse",
"type": "object",
"properties": {
"channel": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Public entity id (\"ent_{n}\") of the channel. Null when the channel has media in the index but no entity record yet."
},
"youtube_channel_id": {
"type": "string",
"description": "YouTube channel id as supplied in the request path."
},
"name": {
"type": [
"string",
"null"
],
"description": "Channel name. Null when no entity record exists."
},
"page": {
"type": [
"string",
"null"
],
"description": "The channel's page on arcmira.com, absolute. Null when no channel is known."
}
},
"required": [
"id",
"youtube_channel_id",
"name",
"page"
]
},
"sponsors": {
"type": "array",
"items": {
"$ref": "#/$defs/ChannelSponsor"
},
"description": "Recurring sponsors ordered by ad read count (descending)."
},
"meta": {
"type": "object",
"properties": {
"min_ad_reads": {
"type": "integer",
"description": "The min_ad_reads threshold applied (default 3)."
},
"count": {
"type": "integer",
"description": "Number of sponsors returned."
},
"total": {
"type": "integer",
"description": "Sponsors in the rollup at the applied threshold. Greater than count only when the plan gate cut the list to the free slice."
}
},
"required": [
"min_ad_reads",
"count",
"total"
]
},
"access": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"invalid_request_error",
"authentication_error",
"permission_error",
"quota_exceeded",
"rate_limit_error",
"not_found",
"conflict_error",
"server_error"
],
"description": "The error class. It fixes the HTTP status: invalid_request_error 400, authentication_error 401, quota_exceeded 402, permission_error 403, not_found 404, conflict_error 409, rate_limit_error 429, server_error 500. Switch on it for retry and gate handling."
},
"code": {
"type": "string",
"description": "The specific condition, stable and snake_case; doc_url anchors on it. x-arcmira-codes on this schema lists every code with its type, gate and meaning. The list is open: new codes may appear inside an existing type, so switch on type and gate first."
},
"reason": {
"type": "string",
"enum": [
"no_credential",
"invalid",
"revoked"
],
"description": "Only on invalid_api_key. no_credential: nothing was sent. invalid: a credential was sent and is unknown or malformed. revoked: the key exists and is no longer usable."
},
"message": {
"type": "string",
"description": "One plain line. Names the fix or the unlock."
},
"param": {
"type": "string",
"description": "The query or body parameter the gate refused, when one did."
},
"gate": {
"type": "string",
"enum": [
"rows",
"key",
"plan",
"freshness",
"exposure_law",
"rate",
"pagination"
],
"description": "Which boundary refused. Present on every gate error; switch on it without parsing the message."
},
"resource": {
"$ref": "#/$defs/ErrorResource"
},
"unlock": {
"type": "object",
"properties": {
"tier": {
"type": "string",
"description": "The plan that lifts the gate."
},
"url": {
"type": "string",
"description": "Absolute upgrade or sign-up URL carrying its ?src= attribution. Use it verbatim."
},
"offer": {
"type": "null",
"description": "Reserved for the agent-discount offer. Always null today."
},
"action": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "What the call does. send_signup_code sends a verification code to an address for an account key."
},
"method": {
"type": "string",
"description": "HTTP method to use."
},
"url": {
"type": "string",
"description": "Absolute endpoint carrying its ?src= attribution. Call it verbatim."
}
},
"required": [
"kind",
"method",
"url"
],
"description": "The request that lifts the gate with no human, present when the caller can fix this itself. A key gate carries the signup send here; a plan or quota gate has no action and its url is a page a person opens."
}
},
"required": [
"tier",
"url",
"offer"
],
"description": "How to lift the gate. Present when the gate has an unlock."
},
"retry_after_seconds": {
"type": "integer",
"description": "Present on rate gates. Mirrors the Retry-After header."
},
"details": {
"type": "object",
"properties": {
"quote": {
"$ref": "#/$defs/RefusedQuote"
},
"existing_id": {
"type": "string",
"description": "On tracker_already_exists, the existing tracker id. Reuse it instead of creating another tracker."
},
"limit": {
"type": "integer",
"description": "On tracker_limit, the trackers the plan holds."
},
"count": {
"type": "integer",
"description": "On tracker_limit, the trackers the account holds now."
}
},
"description": "Machine data the refusal carries for you to act on. Present only on the codes that name a field here."
},
"doc_url": {
"type": "string"
},
"request_id": {
"type": "string"
}
},
"required": [
"type",
"code",
"message",
"doc_url",
"request_id"
],
"description": "The gate that reduced this response. Present only when something was withheld; carries the same code, gate, and unlock an outright refusal would."
}
},
"required": [
"channel",
"sponsors",
"meta"
],
"$defs": {
"ChannelSponsor": {
"type": "object",
"properties": {
"entity": {
"allOf": [
{
"$ref": "#/$defs/EntityRef"
},
{
"description": "The sponsoring entity."
}
]
},
"ad_reads": {
"type": "integer",
"description": "Number of ad_read recommendation rows for this sponsor on the channel."
},
"videos": {
"type": "integer",
"description": "Number of distinct videos containing those ad reads."
},
"first_seen": {
"type": [
"string",
"null"
],
"description": "Publish timestamp of the earliest video with an ad read. Null when unknown."
},
"last_seen": {
"type": [
"string",
"null"
],
"description": "Publish timestamp of the most recent video with an ad read. Null when unknown."
},
"sponsor_status": {
"type": [
"object",
"null"
],
"properties": {
"status": {
"type": "string",
"description": "Curated sponsorship status from the known-advertisers dataset. Values: active (currently sponsoring), lapsed (no recent ad reads), ended (relationship known to have ended), uncertain (signal too weak to classify)."
},
"ad_count": {
"type": [
"integer",
"null"
],
"description": "Curated ad count from the known-advertisers dataset."
},
"first_ad_date": {
"type": [
"string",
"null"
],
"description": "Curated first-ad date. Null when not recorded."
},
"last_ad_date": {
"type": [
"string",
"null"
],
"description": "Curated last-ad date. Null when not recorded."
}
},
"required": [
"status",
"ad_count",
"first_ad_date",
"last_ad_date"
],
"description": "Curated known-advertiser record for this sponsor/channel pair. Null unless the pair exists in the curated dataset."
}
},
"required": [
"entity",
"ad_reads",
"videos",
"first_seen",
"last_seen",
"sponsor_status"
]
},
"EntityRef": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Public entity id in the form \"ent_{n}\"."
},
"name": {
"type": "string",
"description": "Canonical entity name."
},
"type": {
"type": "string",
"description": "Entity type. Values: person (an individual), organization (a company or institution; legacy rows may read company or brand), product (a product or service), topic (a subject or theme), channel (a media source such as a YouTube channel), unknown (type was never classified)."
},
"slug": {
"type": [
"string",
"null"
],
"description": "URL slug, the site's canonical id for every type but channel. Null when never slugged."
},
"page": {
"type": [
"string",
"null"
],
"description": "The entity's page on arcmira.com, absolute. Link the name to it when you write the entity into an answer. Null for a type the site has no page for."
}
},
"required": [
"id",
"name",
"type",
"slug",
"page"
]
},
"ErrorResource": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"media_rows"
]
},
"beyond_row": {
"type": "integer"
}
},
"required": [
"kind",
"beyond_row"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"fresh_media"
]
},
"window_days": {
"type": "integer"
},
"cutoff": {
"type": [
"string",
"null"
]
}
},
"required": [
"kind",
"window_days",
"cutoff"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"sidebar_rows"
]
},
"section": {
"type": "string",
"enum": [
"topics",
"entities"
]
},
"beyond_row": {
"type": "integer"
}
},
"required": [
"kind",
"section",
"beyond_row"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"counts"
]
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"chart"
]
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"pagination"
]
},
"param": {
"type": [
"string",
"null"
],
"enum": [
"offset",
"cursor",
null
]
}
},
"required": [
"kind",
"param"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"premium_transcript"
]
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"filter"
]
},
"param": {
"type": "string"
}
},
"required": [
"kind",
"param"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"commercial"
]
},
"what": {
"type": "string",
"enum": [
"sponsors",
"recommendations",
"mention_details",
"community_review",
"paid_split"
]
}
},
"required": [
"kind",
"what"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"feature"
]
},
"feature": {
"type": "string",
"enum": [
"api",
"export"
]
}
},
"required": [
"kind",
"feature"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"rows"
]
},
"requested": {
"type": [
"integer",
"null"
]
},
"remaining": {
"type": [
"integer",
"null"
]
}
},
"required": [
"kind",
"requested",
"remaining"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"key"
]
},
"scope": {
"type": [
"string",
"null"
],
"enum": [
"read",
"monitors:write",
"trackers:write",
"recommendations:read",
null
]
}
},
"required": [
"kind",
"scope"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"requests"
]
}
},
"required": [
"kind"
]
}
],
"description": "The value the boundary withheld, not the reason it refused. kind is a closed vocabulary and the fields beside it are fixed per kind; see https://arcmira.com/docs/errors#resource-kinds."
},
"RefusedQuote": {
"allOf": [
{
"$ref": "#/$defs/TranscriptQuote"
},
{
"type": "object",
"properties": {
"charge": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"enum": [
"rows",
"credits"
]
},
"amount": {
"type": "number"
},
"from": {
"type": "string",
"enum": [
"included",
"on_demand",
"mixed"
],
"description": "Where the charge would come from at the current balance."
}
},
"required": [
"unit",
"amount",
"from"
],
"description": "What the purchase would charge at the current balance. Absent when no current price could be read."
},
"max_on_demand_cents": {
"type": "integer",
"description": "The on-demand money, in whole cents, this purchase needs beyond included credits at the current balance."
}
}
}
],
"description": "The refused price, on a priced refusal: quota_exceeded, spend_limit_exceeded and paid_plan_required."
},
"TranscriptQuote": {
"type": "object",
"properties": {
"quarters": {
"type": "integer",
"description": "Number of 15-minute blocks in the video, ceiling'd, minimum 1."
},
"rows": {
"type": "integer",
"description": "Total unlock cost in rows: 75 rows per 15-minute block."
}
},
"required": [
"quarters",
"rows"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/arcmira-channel-sponsors-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.