The recommendations API exposes Arcmira’s commercial-extraction pipeline. Each row links one entity to one piece of media and carries aDocumentation Index
Fetch the complete documentation index at: https://docs.arcmira.com/llms.txt
Use this file to discover all available pages before exploring further.
mention_class — ad_read, endorsement, or mention — plus extracted commercial metadata (verbatim quote, promo code, offer, speaker role, conflict status).
ent_<id> from the path.
Minimal request
cURL
Node 20+
entity_id or entity_name is required.
By name
entity_type is optional but strongly recommended when names are ambiguous.
Mention classes
| Class | What it means |
|---|---|
ad_read | A paid sponsor read. Typically explicit, often with a promo code or call-to-action. |
endorsement | An organic recommendation from a host or guest. No money involved. |
mention | A lower-signal commercial reference that didn’t meet the ad_read / endorsement bar. |
all | The default. Returns all three classes. |
mention_class=ad_read to scope to paid placements only — useful for advertiser dashboards.
Filters
| Parameter | Description |
|---|---|
entity_id | Canonical ent_<id>. Mutually exclusive with entity_name. |
entity_name | Human-readable name. Pair with entity_type to disambiguate. |
entity_type | One of person, organization, product, topic, channel. |
channel_id | Restrict to a single channel (YouTube channel ID). |
channel_name | Substring match on the source channel name. |
mention_class | ad_read, endorsement, mention, or all (default). |
min_confidence | Float in [0, 1]. Default 0.7. |
include_disputed | true or false. Default false — excludes rows where extraction conflicts were marked disputed. |
date_from | ISO date. Lower bound (inclusive) on media.published_at. |
date_to | ISO date. Upper bound (inclusive) on media.published_at. |
limit | 1–100. Default 20. |
cursor | Opaque cursor from a previous response’s next_cursor. |
ent_14 covers every row attached to entities merged into ent_14.
Response shape
idis the publiccom_<recommendation_id>form. Use it when submitting corrections throughPOST /v1/feedback.start_timestamp/end_timestampareMM:SSstrings sourced from the extraction pipeline, not seconds (this differs from/v1/mentions).promo_codeandofferare nullable. They’re populated when the extractor found explicit codes or offers in the verbatim quote.speaker_roleindicates whether a host or guest delivered the recommendation.conflict_statusisnullfor normal rows. When the same timestamp produced conflicting classifications across extraction passes, the resolution is surfaced inresolution. Disputed rows are excluded unless you passinclude_disputed=true.
Entity-scoped variant
If you already have anent_<id>, the path-scoped form is identical except for how you express the target:
Pagination
Recommendations use the same cursor pagination as the rest of the API. Pass the previous response’snext_cursor as the cursor query parameter; has_more tells you whether to continue. See Pagination for the full pattern.
Billing
Each row returned by/v1/recommendations is a premium row — billed at a higher rate than appearance rows because the commercial pipeline is more expensive to run and curate. The same applies to /v1/channels/{id}/sponsors. Feedback and entity search are free. See Usage & billing for the full picture.
/v1/me exposes recommendations_api_enabled: true|false so you can short-circuit calls on lower-tier keys without hitting 403.
Errors
| Code | When |
|---|---|
recommendations_not_enabled | Tier below Pro+. Upgrade required. |
insufficient_scope | Key is Pro+ but missing recommendations:read. |
entity_not_found | entity_id / entity_name didn’t resolve to a canonical entity. |
invalid_query | Schema validation failed — see error.message. |