> ## 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

# Run a Google Analytics (GA4) report

> 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.

Runs a report on a connected GA4 property through Google's Data API (`runReport`).

Pick any GA4 dimensions and metrics; filters and ordering use Google's own shapes.

### Caching and quota

Identical requests on the same property are cached for 10 minutes.

Google meters each property by quota tokens. When it is used up the request returns 429 until Google refills it (hourly quotas within the hour, daily ones at midnight Pacific time).

<!-- 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:** POST /apis/v1/social/analytics/googleanalytics/report
* **Availability:** enabled
* **Request URL template:** `https://api.aisa.one/apis/v1/social/analytics/googleanalytics/report`
* **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": "post_aisa_social_apis_v1_social_analytics_googlea_7e75f2",
  "method": "POST",
  "path": "/apis/v1/social/analytics/googleanalytics/report",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "example": {
          "accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
          "dateRanges": [
            {
              "endDate": "yesterday",
              "startDate": "30daysAgo"
            }
          ],
          "dimensions": [
            "sessionDefaultChannelGroup"
          ],
          "metrics": [
            "sessions",
            "activeUsers",
            "keyEvents"
          ],
          "orderBys": [
            {
              "desc": true,
              "metric": {
                "metricName": "sessions"
              }
            }
          ]
        },
        "schema": {
          "properties": {
            "accountId": {
              "description": "One of your social accounts (acc_...).",
              "pattern": "^acc_[0-9A-Za-z]{22}$",
              "type": "string"
            },
            "currencyCode": {
              "description": "ISO 4217 code for currency metrics. Defaults to the property currency.",
              "type": "string"
            },
            "dateRanges": {
              "description": "Defaults to the last 28 days (`28daysAgo` to `yesterday`).",
              "items": {
                "properties": {
                  "endDate": {
                    "description": "YYYY-MM-DD, today, yesterday or NdaysAgo.",
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "startDate": {
                    "description": "YYYY-MM-DD, today, yesterday or NdaysAgo.",
                    "type": "string"
                  }
                },
                "required": [
                  "endDate",
                  "startDate"
                ],
                "type": "object"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "dimensionFilter": {
              "additionalProperties": true,
              "description": "A Google FilterExpression on dimensions, in Google's own shape.",
              "type": "object"
            },
            "dimensions": {
              "description": "GA4 dimension API names, e.g. `date`, `sessionSource`, `pagePath`. List them with GET /apis/v1/social/analytics/googleanalytics/metadata.",
              "items": {
                "type": "string"
              },
              "maxItems": 9,
              "type": "array"
            },
            "keepEmptyRows": {
              "type": "boolean"
            },
            "limit": {
              "description": "Rows to return. Defaults to Google's default (10000).",
              "maximum": 10000,
              "minimum": 1,
              "type": "integer"
            },
            "metricFilter": {
              "additionalProperties": true,
              "description": "A Google FilterExpression on metrics, in Google's own shape.",
              "type": "object"
            },
            "metrics": {
              "description": "GA4 metric API names, e.g. `sessions`, `activeUsers`, `keyEvents`, `totalRevenue`.",
              "items": {
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "offset": {
              "description": "Row offset for paging through a report larger than `limit`.",
              "minimum": 0,
              "type": "integer"
            },
            "orderBys": {
              "description": "Google OrderBy objects, e.g. `{ \"metric\": { \"metricName\": \"sessions\" }, \"desc\": true }`.",
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "maxItems": 10,
              "type": "array"
            }
          },
          "required": [
            "accountId",
            "metrics"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "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 POST /apis/v1/social/analytics/googleanalytics/report
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/googleanalytics/report:
    post:
      summary: Run a Google Analytics (GA4) report
      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.


        Runs a report on a connected GA4 property through Google's Data API
        (`runReport`).


        Pick any GA4 dimensions and metrics; filters and ordering use Google's
        own shapes.


        ### Caching and quota


        Identical requests on the same property are cached for 10 minutes.


        Google meters each property by quota tokens. When it is used up the
        request returns 429 until Google refills it (hourly quotas within the
        hour, daily ones at midnight Pacific time).


        <!-- 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: post_aisa_social_apis_v1_social_analytics_googlea_7e75f2
      parameters: []
      requestBody:
        content:
          application/json:
            example:
              accountId: acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3
              dateRanges:
                - endDate: yesterday
                  startDate: 30daysAgo
              dimensions:
                - sessionDefaultChannelGroup
              metrics:
                - sessions
                - activeUsers
                - keyEvents
              orderBys:
                - desc: true
                  metric:
                    metricName: sessions
            schema:
              properties:
                accountId:
                  description: One of your social accounts (acc_...).
                  pattern: ^acc_[0-9A-Za-z]{22}$
                  type: string
                currencyCode:
                  description: >-
                    ISO 4217 code for currency metrics. Defaults to the property
                    currency.
                  type: string
                dateRanges:
                  description: Defaults to the last 28 days (`28daysAgo` to `yesterday`).
                  items:
                    properties:
                      endDate:
                        description: YYYY-MM-DD, today, yesterday or NdaysAgo.
                        type: string
                      name:
                        type: string
                      startDate:
                        description: YYYY-MM-DD, today, yesterday or NdaysAgo.
                        type: string
                    required:
                      - endDate
                      - startDate
                    type: object
                  maxItems: 4
                  minItems: 1
                  type: array
                dimensionFilter:
                  additionalProperties: true
                  description: >-
                    A Google FilterExpression on dimensions, in Google's own
                    shape.
                  type: object
                dimensions:
                  description: >-
                    GA4 dimension API names, e.g. `date`, `sessionSource`,
                    `pagePath`. List them with GET
                    /apis/v1/social/analytics/googleanalytics/metadata.
                  items:
                    type: string
                  maxItems: 9
                  type: array
                keepEmptyRows:
                  type: boolean
                limit:
                  description: Rows to return. Defaults to Google's default (10000).
                  maximum: 10000
                  minimum: 1
                  type: integer
                metricFilter:
                  additionalProperties: true
                  description: A Google FilterExpression on metrics, in Google's own shape.
                  type: object
                metrics:
                  description: >-
                    GA4 metric API names, e.g. `sessions`, `activeUsers`,
                    `keyEvents`, `totalRevenue`.
                  items:
                    type: string
                  maxItems: 10
                  minItems: 1
                  type: array
                offset:
                  description: Row offset for paging through a report larger than `limit`.
                  minimum: 0
                  type: integer
                orderBys:
                  description: >-
                    Google OrderBy objects, e.g. `{ "metric": { "metricName":
                    "sessions" }, "desc": true }`.
                  items:
                    additionalProperties: true
                    type: object
                  maxItems: 10
                  type: array
              required:
                - accountId
                - metrics
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                description: >-
                  Google Analytics Data API report, passed through as Google
                  returns it. Every value in `rows` is a string; read
                  `metricHeaders[].type` to parse metrics.
                properties:
                  accountId:
                    description: One of your social accounts (acc_...).
                    pattern: ^acc_[0-9A-Za-z]{22}$
                    type: string
                  dimensionHeaders:
                    items:
                      properties:
                        name:
                          type: string
                      type: object
                    type: array
                  metadata:
                    additionalProperties: true
                    description: >-
                      Google report metadata (currency, time zone, sampling and
                      thresholding flags).
                    type: object
                  metricHeaders:
                    items:
                      properties:
                        name:
                          type: string
                        type:
                          description: >-
                            Google metric type, e.g. TYPE_INTEGER, TYPE_FLOAT,
                            TYPE_SECONDS, TYPE_CURRENCY.
                          type: string
                      type: object
                    type: array
                  propertyId:
                    description: Numeric GA4 property ID.
                    type: string
                  propertyQuota:
                    additionalProperties: true
                    description: >-
                      Google quota left on this property after the request
                      (tokens per day and per hour, concurrent requests). Cached
                      responses carry the quota from when they were fetched.
                    type: object
                  rowCount:
                    description: Total rows matching the request, across all pages.
                    type: integer
                  rows:
                    items:
                      properties:
                        dimensionValues:
                          items:
                            properties:
                              value:
                                type: string
                            type: object
                          type: array
                        metricValues:
                          items:
                            properties:
                              value:
                                type: string
                            type: object
                          type: array
                      type: object
                    type: array
                type: object
          description: Report rows from Google
        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.
      x-codeSamples:
        - lang: text
          label: Reference example
          source: >-
            # Fixed reference example. Playground inputs do not update this
            sample.

            curl --request POST \
              --url https://api.aisa.one/apis/v1/social/analytics/googleanalytics/report \
              --header 'Authorization: Bearer <token>' \
              --header 'Content-Type: application/json' \
              --data '{
              "accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
              "dateRanges": [
                {
                  "endDate": "yesterday",
                  "startDate": "30daysAgo"
                }
              ],
              "dimensions": [
                "sessionDefaultChannelGroup"
              ],
              "metrics": [
                "sessions",
                "activeUsers",
                "keyEvents"
              ],
              "orderBys": [
                {
                  "desc": true,
                  "metric": {
                    "metricName": "sessions"
                  }
                }
              ]
            }'
components:
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

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