> ## 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 Facebook Page 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 page-level Facebook insights (media views, views, post engagements, video metrics, follower counts). The response shape matches /apis/v1/social/analytics/instagram/account-insights, so the same client handling works across platforms.

Max 89 days, defaults to last 30 days.

### Metric names

Metric names track the current (post-November 2025) Meta Graph API. These legacy metrics were deprecated by Meta on November 15, 2025 and are NOT accepted by this endpoint:

- page_impressions
- page_fans
- page_fan_adds
- page_fan_removes

Use the replacements below. Because Meta did not provide direct adds/removes replacements, AIsa synthesizes followers_gained / followers_lost from the daily follower snapshotter.

<!-- aisa-pricing:start -->
A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Request contract

* **Method and path:** GET /apis/v1/social/analytics/facebook/page-insights
* **Availability:** enabled
* **Request URL template:** `https://api.aisa.one/apis/v1/social/analytics/facebook/page-insights`
* **accountId:** query; required
* **metrics:** query; optional
* **fromDate:** query; optional
* **toDate:** query; optional
* **since:** query; optional
* **until:** query; optional
* **metricType:** query; optional
* **Runtime facts:** 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd

[Complete OpenAPI definition](https://aisa.one/docs/reference-contracts/aisa-social.json)

Effective request and pricing declaration (including authentication and referenced schemas):

```json theme={null}
{
  "operationId": "get_aisa_social_apis_v1_social_analytics_facebook_ee35af",
  "method": "GET",
  "path": "/apis/v1/social/analytics/facebook/page-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 of metrics. Defaults to \"page_media_view,page_post_engagements,page_follows,followers_gained,followers_lost\".\n\n**Live Meta metrics** (current names, post-Nov-2025):\n\n- page_media_view (replaces deprecated page_impressions)\n- page_views_total\n- page_post_engagements\n- page_video_views\n- page_video_view_time\n- page_follows (replaces deprecated page_fans)\n\n**AIsa-synthesized** from daily follower snapshots (filling the Nov-2025 gap left by the page_fan_adds / page_fan_removes deprecation):\n\n- followers_gained\n- followers_lost\n\n**Monetization** (opt-in, not in the defaults):\n\n- content_monetization_earnings: an object per day, always with unit \"micro_amount\" and an ISO 4217 \"currency\".\n- monetization_approximate_earnings: a bare number per day; unit is always \"unspecified\" and \"currency\" always null.\n\nEach monetization metric costs its own Graph call, so requesting both adds two calls. Values are approximate and Meta restates them later. The two are on different scales and not comparable. Both keep daily \"values\" on every metricType and are never rescaled by AIsa.\n\nEarnings are Page-level daily buckets and \"total\" is their sum. Meta does not document whether a bucket is that day's earnings or a running total, and every Page measured so far earned exactly 0.\n\nReconcile \"total\" against the Page's Meta export before relying on it (daily \"values\" are always returned for this).\n\nPer-post lifetime earnings: GET /apis/v1/social/analytics/facebook/post-earnings.\n\nA Page not enrolled in monetization, or that earned nothing, returns normal daily buckets of 0 in \"metrics\" (Meta does not distinguish them), so a 0 total does NOT mean the Page is enrolled.\n\n\"unavailableMetrics\" covers the narrower case where Meta returned no bucket at all (\"no_data\") or rejected the request; the metric is then omitted from \"metrics\" rather than reported as 0.",
      "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.",
      "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 only.\n\"time_series\" returns daily 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"
      }
    }
  }
}
```

## Cost and request rules

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.


## OpenAPI

````yaml reference-contracts/aisa-social.json GET /apis/v1/social/analytics/facebook/page-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/facebook/page-insights:
    get:
      summary: Get Facebook Page 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 page-level Facebook insights (media views, views, post
        engagements, video metrics, follower counts). The response shape matches
        /apis/v1/social/analytics/instagram/account-insights, so the same client
        handling works across platforms.


        Max 89 days, defaults to last 30 days.


        ### Metric names


        Metric names track the current (post-November 2025) Meta Graph API.
        These legacy metrics were deprecated by Meta on November 15, 2025 and
        are NOT accepted by this endpoint:


        - page_impressions

        - page_fans

        - page_fan_adds

        - page_fan_removes


        Use the replacements below. Because Meta did not provide direct
        adds/removes replacements, AIsa synthesizes followers_gained /
        followers_lost from the daily follower snapshotter.


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

        A request reference price is not currently available; use a request
        quote where supported. Account-specific pricing and final settlement may
        differ.

        <!-- aisa-pricing:end -->
      operationId: get_aisa_social_apis_v1_social_analytics_facebook_ee35af
      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 of metrics. Defaults to
            "page_media_view,page_post_engagements,page_follows,followers_gained,followers_lost".


            **Live Meta metrics** (current names, post-Nov-2025):


            - page_media_view (replaces deprecated page_impressions)

            - page_views_total

            - page_post_engagements

            - page_video_views

            - page_video_view_time

            - page_follows (replaces deprecated page_fans)


            **AIsa-synthesized** from daily follower snapshots (filling the
            Nov-2025 gap left by the page_fan_adds / page_fan_removes
            deprecation):


            - followers_gained

            - followers_lost


            **Monetization** (opt-in, not in the defaults):


            - content_monetization_earnings: an object per day, always with unit
            "micro_amount" and an ISO 4217 "currency".

            - monetization_approximate_earnings: a bare number per day; unit is
            always "unspecified" and "currency" always null.


            Each monetization metric costs its own Graph call, so requesting
            both adds two calls. Values are approximate and Meta restates them
            later. The two are on different scales and not comparable. Both keep
            daily "values" on every metricType and are never rescaled by AIsa.


            Earnings are Page-level daily buckets and "total" is their sum. Meta
            does not document whether a bucket is that day's earnings or a
            running total, and every Page measured so far earned exactly 0.


            Reconcile "total" against the Page's Meta export before relying on
            it (daily "values" are always returned for this).


            Per-post lifetime earnings: GET
            /apis/v1/social/analytics/facebook/post-earnings.


            A Page not enrolled in monetization, or that earned nothing, returns
            normal daily buckets of 0 in "metrics" (Meta does not distinguish
            them), so a 0 total does NOT mean the Page is enrolled.


            "unavailableMetrics" covers the narrower case where Meta returned no
            bucket at all ("no_data") or rejected the request; the metric is
            then omitted from "metrics" rather than reported as 0.
          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.
          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 only.
            "time_series" returns daily 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: Page 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.