> ## Documentation Index
> Fetch the complete documentation index at: https://aisa.one/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> - Base URLs: models `https://api.aisa.one/v1` (Gemini GenerateContent: `https://api.aisa.one/v1beta`); data APIs `https://api.aisa.one/apis/v1`. The `servers` of each operation in https://aisa.one/openapi.yaml is authoritative.
> - Auth: `Authorization: Bearer $AISA_API_KEY`. Never print, log, or commit the key.
> - MCP (preferred for agents): `https://mcp.aisa.one/mcp`, signed in with OAuth, so there is no key to paste.
> - Agent Skill: `npx skills add AIsa-team/agent-skills --skill aisa`. Fallback with the AIsa CLI: `aisa skills install aisa`.
> - Spending: docs, https://aisa.one/models, https://aisa.one/api, `/v1/models`, and MCP `search`, `list_categories`, `get_details`, `batch_quote`, and the `account` operation are free. Quote the exact calls before running them (MCP `batch_quote`, CLI `aisa quote --json`). If the quote reports `auto_execute_eligible: true`, run it unless the user set a tighter limit or asked only for a quote. Otherwise, tell the user in one message the planned calls, the quoted price, and a total USD budget for the task, then wait for approval. Direct HTTP calls follow the stricter rule at https://aisa.one/docs/get-started/cli.md#direct-http-fallback. Do not make paid calls to test availability. Full rule: https://aisa.one/llms.txt

# Get YouTube channel insights

> Analytics. Read only; needs social:read. Ids are yours: accounts acc_..., profiles prf_..., posts pst_...; every other object id is checked against your accounts before the call.

Returns channel-scoped aggregate metrics from YouTube Analytics API v2. Saves you
from looping /apis/v1/social/analytics/youtube/daily-views over every video when you only need
channel totals.

Response shape matches /apis/v1/social/analytics/instagram/account-insights so the same client
handling works. Requires yt-analytics.readonly scope (412 with reauthorizeUrl if
missing). Data has a 2-3 day delay (endDate is clamped accordingly). Max 89 days,
defaults to last 30 days.

NOT exposed: impressions (Studio thumbnail impressions) and impressionsClickThroughRate.
YouTube Analytics API v2 does not expose these for any principal type, not channel
owners, not Partner Program channels, not content owners with CMS access. The only way
to get them is Studio CSV export. This is a Google-side limitation.

<!-- aisa-pricing:start -->
当前未提供请求参考价格；请使用接口支持的报价功能确认费用。 最终费用以账户适用价格及实际结算为准。
<!-- aisa-pricing:end -->

## 请求规范

* **方法与路径:** GET /apis/v1/social/analytics/youtube/channel-insights
* **可用状态:** enabled
* **请求 URL 模板:** `https://api.aisa.one/apis/v1/social/analytics/youtube/channel-insights`
* **accountId:** query; 必填
* **metrics:** query; 可选
* **fromDate:** query; 可选
* **toDate:** query; 可选
* **since:** query; 可选
* **until:** query; 可选
* **metricType:** query; 可选
* **Runtime 事实版本:** 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd

[完整 OpenAPI 定义](https://aisa.one/docs/reference-contracts/zh/aisa-social.json)

有效请求与价格声明（包括认证和引用的 schema）：

```json theme={null}
{
  "operationId": "get_aisa_social_apis_v1_social_analytics_youtube__b123b1",
  "method": "GET",
  "path": "/apis/v1/social/analytics/youtube/channel-insights",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [
    {
      "description": "One of your social accounts (acc_...).",
      "in": "query",
      "name": "accountId",
      "required": true,
      "schema": {
        "pattern": "^acc_[0-9A-Za-z]{22}$",
        "type": "string"
      }
    },
    {
      "description": "Comma-separated list. Defaults to \"views,estimatedMinutesWatched,subscribersGained,subscribersLost\".\n\nLive YouTube Analytics v2 metrics:\n  - views\n  - estimatedMinutesWatched\n  - averageViewDuration          (ratio - weighted mean computed across days)\n  - subscribersGained\n  - subscribersLost\n\nAIsa-synthesized from daily follower snapshots (cross-platform parity):\n  - followers_gained\n  - followers_lost",
      "in": "query",
      "name": "metrics",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Start date (YYYY-MM-DD). Defaults to 30 days ago.",
      "in": "query",
      "name": "fromDate",
      "required": false,
      "schema": {
        "format": "date",
        "type": "string"
      }
    },
    {
      "description": "End date (YYYY-MM-DD). Defaults to today. YouTube Analytics has a 2-3 day delay,\nso the fetch is internally clamped to 3 days ago; any requested range extending\nbeyond that returns zero values for the tail days. The response's dateRange.until\nfield reflects your requested value.",
      "in": "query",
      "name": "toDate",
      "required": false,
      "schema": {
        "format": "date",
        "type": "string"
      }
    },
    {
      "description": "Alias of fromDate, kept for existing callers",
      "in": "query",
      "name": "since",
      "required": false,
      "schema": {
        "format": "date",
        "type": "string"
      }
    },
    {
      "description": "Alias of toDate, kept for existing callers",
      "in": "query",
      "name": "until",
      "required": false,
      "schema": {
        "format": "date",
        "type": "string"
      }
    },
    {
      "description": "\"total_value\" (default) returns aggregated totals.\n\"time_series\" returns per-day values in the \"values\" array.",
      "in": "query",
      "name": "metricType",
      "required": false,
      "schema": {
        "default": "total_value",
        "enum": [
          "time_series",
          "total_value"
        ],
        "type": "string"
      }
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "x-aisa-status": "enabled",
  "x-aisa-pricing": {
    "description": "Included with your connected social accounts: AIsa does not charge per call.",
    "kind": "no_customer_charge"
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
```

## 费用与请求规则

当前未提供请求参考价格；请使用接口支持的报价功能确认费用。 最终费用以账户适用价格及实际结算为准。

公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口，执行前请针对完整请求获取免费报价；执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。


## OpenAPI

````yaml reference-contracts/zh/aisa-social.json GET /apis/v1/social/analytics/youtube/channel-insights
openapi: 3.1.0
info:
  description: ''
  title: AIsa Social
  version: '1'
  x-aisa-capabilities:
    idempotency: Idempotency-Key
    max_price: X-AISA-Max-Price-USD
    quote:
      header: X-AISA-Cost-Mode
      value: quote
  x-aisa-configured-paths: []
  x-aisa-document:
    facts_hash: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
    generator_version: '3'
    protocol_version: '1'
    schema_version: '1'
    composer_version: '27'
    response_pending: []
    document_hash: sha256:7f9742cb1ea233c648dcb290fdfbf24e53a27dcf900ec1386f83a8ef2e6b1bf9
  x-aisa-plans:
    builder: 1
    display_plan: payg
    payg: 1
    similarweb_payg: 1
    team: 1
    version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
  x-aisa-provider: aisa-social
  x-aisa-catalogs:
    aisa-social:
      title: AIsa Social
      description: ''
      x-aisa-document:
        facts_hash: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
        generator_version: '3'
        protocol_version: '1'
        schema_version: '1'
      x-aisa-plans:
        builder: 1
        display_plan: payg
        payg: 1
        similarweb_payg: 1
        team: 1
        version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
      x-aisa-capabilities:
        idempotency: Idempotency-Key
        max_price: X-AISA-Max-Price-USD
        quote:
          header: X-AISA-Cost-Mode
          value: quote
servers:
  - url: https://api.aisa.one
security:
  - bearerAuth: []
paths:
  /apis/v1/social/analytics/youtube/channel-insights:
    get:
      summary: Get YouTube channel insights
      description: >-
        Analytics. Read only; needs social:read. Ids are yours: accounts
        acc_..., profiles prf_..., posts pst_...; every other object id is
        checked against your accounts before the call.


        Returns channel-scoped aggregate metrics from YouTube Analytics API v2.
        Saves you

        from looping /apis/v1/social/analytics/youtube/daily-views over every
        video when you only need

        channel totals.


        Response shape matches
        /apis/v1/social/analytics/instagram/account-insights so the same client

        handling works. Requires yt-analytics.readonly scope (412 with
        reauthorizeUrl if

        missing). Data has a 2-3 day delay (endDate is clamped accordingly). Max
        89 days,

        defaults to last 30 days.


        NOT exposed: impressions (Studio thumbnail impressions) and
        impressionsClickThroughRate.

        YouTube Analytics API v2 does not expose these for any principal type,
        not channel

        owners, not Partner Program channels, not content owners with CMS
        access. The only way

        to get them is Studio CSV export. This is a Google-side limitation.


        <!-- aisa-pricing:start -->

        当前未提供请求参考价格；请使用接口支持的报价功能确认费用。 最终费用以账户适用价格及实际结算为准。

        <!-- aisa-pricing:end -->
      operationId: get_aisa_social_apis_v1_social_analytics_youtube__b123b1
      parameters:
        - description: One of your social accounts (acc_...).
          in: query
          name: accountId
          required: true
          schema:
            pattern: ^acc_[0-9A-Za-z]{22}$
            type: string
        - description: >-
            Comma-separated list. Defaults to
            "views,estimatedMinutesWatched,subscribersGained,subscribersLost".


            Live YouTube Analytics v2 metrics:
              - views
              - estimatedMinutesWatched
              - averageViewDuration          (ratio - weighted mean computed across days)
              - subscribersGained
              - subscribersLost

            AIsa-synthesized from daily follower snapshots (cross-platform
            parity):
              - followers_gained
              - followers_lost
          in: query
          name: metrics
          required: false
          schema:
            type: string
        - description: Start date (YYYY-MM-DD). Defaults to 30 days ago.
          in: query
          name: fromDate
          required: false
          schema:
            format: date
            type: string
        - description: >-
            End date (YYYY-MM-DD). Defaults to today. YouTube Analytics has a
            2-3 day delay,

            so the fetch is internally clamped to 3 days ago; any requested
            range extending

            beyond that returns zero values for the tail days. The response's
            dateRange.until

            field reflects your requested value.
          in: query
          name: toDate
          required: false
          schema:
            format: date
            type: string
        - description: Alias of fromDate, kept for existing callers
          in: query
          name: since
          required: false
          schema:
            format: date
            type: string
        - description: Alias of toDate, kept for existing callers
          in: query
          name: until
          required: false
          schema:
            format: date
            type: string
        - description: |-
            "total_value" (default) returns aggregated totals.
            "time_series" returns per-day values in the "values" array.
          in: query
          name: metricType
          required: false
          schema:
            default: total_value
            enum:
              - time_series
              - total_value
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                description: >-
                  Shared account-insights response envelope used by every
                  platform-level

                  analytics endpoint
                  (/apis/v1/social/analytics/{facebook|instagram|youtube|linkedin|tiktok}/*).

                  The name is historical - the shape was first shipped for
                  Instagram and every

                  new platform endpoint reuses it for response-shape
                  consistency. The platform

                  field echoes back which platform served the response.
                properties:
                  accountId:
                    description: One of your social accounts (acc_...).
                    pattern: ^acc_[0-9A-Za-z]{22}$
                    type: string
                  breakdown:
                    description: >-
                      Breakdown dimension used (only present when breakdown was
                      requested)
                    type: string
                  dataDelay:
                    type: string
                  dateRange:
                    properties:
                      since:
                        format: date
                        type: string
                      until:
                        format: date
                        type: string
                    type: object
                  metricType:
                    enum:
                      - time_series
                      - total_value
                    type: string
                  metrics:
                    additionalProperties:
                      properties:
                        breakdowns:
                          description: >-
                            Breakdown values (only for total_value with
                            breakdown)
                          items:
                            properties:
                              dimension:
                                type: string
                              value:
                                type: number
                            type: object
                          type: array
                        currency:
                          description: >-
                            ISO 4217 currency of a monetary metric, or null when
                            the platform omitted it.

                            Always null on monetization_approximate_earnings,
                            which Meta returns as a bare number

                            with no currency; always present on
                            content_monetization_earnings.
                          type:
                            - string
                            - 'null'
                        total:
                          description: Sum or aggregate value for the metric
                          type: number
                        unit:
                          description: >-
                            Present on monetary metrics only. The scale of
                            "total" and of every "values[].value", exactly as
                            the platform returned them.


                            - "micro_amount": the platform returned an object
                            carrying a micro amount; values are that integer,
                            summed, unconverted. AIsa publishes no divisor
                            because Meta documents none: divide by the scale you
                            verified against the Page's own Meta Business Suite
                            export. On Facebook Page insights this is always
                            content_monetization_earnings.

                            - "unspecified": the platform returned a bare number
                            with no unit metadata, passed through as-is; the
                            platform does not state whether it is major or minor
                            currency units. On Facebook Page insights this is
                            always monetization_approximate_earnings.
                          enum:
                            - micro_amount
                            - unspecified
                          type: string
                        values:
                          description: >-
                            Daily values (for time_series, and always on
                            monetary metrics)
                          items:
                            properties:
                              date:
                                format: date
                                type: string
                              value:
                                type: number
                            type: object
                          type: array
                      type: object
                    description: >-
                      Object keyed by metric name.


                      - For time_series: each metric has "total" (number) and
                      "values" (array of {date, value}).

                      - For total_value: each metric has "total" (number) and
                      optionally "breakdowns" (array of {dimension, value}).


                      **Monetary metrics** also carry "unit" and "currency".
                      AIsa never rescales money: "total" and every
                      "values[].value" are the platform's raw numbers in the
                      stated unit.


                      Monetary metrics keep "values" even on
                      metricType=total_value, because their "total" is the sum
                      of the daily buckets the platform returned over the range.
                      Keep the series to reconcile that sum against the
                      platform's own reporting before invoicing on it.


                      A metric that could not be served is absent from this
                      object and listed in "unavailableMetrics" instead, so an
                      unavailable metric is never reported as a zero.
                    type: object
                  platform:
                    description: Platform that served this response.
                    enum:
                      - facebook
                      - instagram
                      - youtube
                      - linkedin
                      - tiktok
                    type: string
                  success:
                    type: boolean
                  unavailableMetrics:
                    description: >-
                      Requested metrics that could not be served. Present only
                      when at least one metric is unavailable, absent otherwise.


                      Each listed metric is OMITTED from "metrics" rather than
                      reported as 0, which is how an unavailable metric is
                      distinguished from a genuine zero. The request itself
                      still succeeds with HTTP 200.
                    items:
                      properties:
                        message:
                          description: >-
                            Platform-provided explanation when available (access
                            tokens redacted), otherwise AIsa copy.
                          type: string
                        metric:
                          description: The requested metric name.
                          type: string
                        reason:
                          description: >-
                            Why the metric is unavailable:


                            - "not_enrolled": the account is not enrolled in the
                            program behind this metric.

                            - "permission_missing": the connected user lacks
                            access to this metric.

                            - "unsupported_metric": the platform does not accept
                            this metric name on the API version AIsa uses.

                            - "no_data": the platform returned no bucket for
                            this metric over the requested range.

                            - "unreadable_value": the platform returned a value
                            shape AIsa cannot read, so no total is reported.

                            - "mixed_currency": readable values disagree on
                            currency or unit within the range.

                            - "upstream_error": any other platform failure.


                            "no_data" is the common case in practice. The others
                            are defensive: "not_enrolled" and
                            "unsupported_metric" in particular have not been
                            observed on live Facebook traffic, since a
                            non-enrolled Page returns zeros rather than an error
                            and metric names are validated before any platform
                            call.
                          enum:
                            - not_enrolled
                            - permission_missing
                            - unsupported_metric
                            - no_data
                            - unreadable_value
                            - mixed_currency
                            - upstream_error
                          type: string
                      type: object
                    type: array
                type: object
          description: Channel insights data
        default:
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type:
                          - string
                          - 'null'
                      details:
                        additionalProperties: {}
                        type:
                          - object
                          - 'null'
                      message:
                        type:
                          - string
                          - 'null'
                      param:
                        type:
                          - string
                          - 'null'
                      retryHint:
                        enum:
                          - never
                          - after_delay
                          - after_reconnect
                          - reconcile_first
                          - null
                        type:
                          - string
                          - 'null'
                      retryable:
                        type:
                          - boolean
                          - 'null'
                      type:
                        type:
                          - string
                          - 'null'
                    type:
                      - object
                      - 'null'
                type: object
          description: Error. The code field is stable; see the error catalog.
components:
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.