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

# Share the Page with a partner business

> Accounts. Acts in public on your connected account; needs social:publish. Audited. Ids are yours: accounts acc_..., profiles prf_..., posts pst_...; every other object id is checked against your accounts before the call.

Grants a partner business portfolio tasks on the Facebook Page behind this account.

With `ADVERTISE`, the partner can run ads for the Page from ad accounts in its own portfolio. This is how an integrator advertises for an end user without touching the end user's ad accounts.

### Responses

- `422`: the Page is outside any business portfolio. Meta only lets a user token share a Page that a portfolio owns, so claim it into one at business.facebook.com first.
- `200` with `alreadyShared: true` and the tasks the partner currently holds: the portfolio already has access. Meta refuses a second grant instead of replacing its tasks.

To change a partner's tasks, revoke and grant again.

### After the grant

The partner assigns its own people to the Page with `POST /apis/v1/ads/page-users`; Meta does not assign partner admins automatically.

The Instagram professional account linked to the Page is returned in `page` so the partner can reference it. Meta exposes no API to share Instagram accounts; that is done in Business Settings.

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

## 请求规范

* **方法与路径:** POST /apis/v1/social/accounts/\{accountId}/business-partners
* **可用状态:** enabled
* **请求 URL 模板:** `https://api.aisa.one/apis/v1/social/accounts/{accountId}/business-partners`
* **accountId:** path; 必填
* **Runtime 事实版本:** 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd

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

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

```json theme={null}
{
  "operationId": "post_aisa_social_apis_v1_social_accounts_accounti_31b011",
  "method": "POST",
  "path": "/apis/v1/social/accounts/{accountId}/business-partners",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [
    {
      "description": "One of your social accounts (acc_...).",
      "in": "path",
      "name": "accountId",
      "required": true,
      "schema": {
        "pattern": "^acc_[0-9A-Za-z]{22}$",
        "type": "string"
      }
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "example": {
          "businessId": "1234567890123",
          "permittedTasks": [
            "ADVERTISE",
            "ANALYZE"
          ]
        },
        "schema": {
          "properties": {
            "businessId": {
              "description": "Meta business portfolio id of the partner (numeric string).",
              "type": "string"
            },
            "permittedTasks": {
              "description": "Tasks granted on the Page, Meta's permitted_tasks vocabulary. Defaults to ADVERTISE and ANALYZE. The bare names are what Business Settings shows; the PROFILE_PLUS_ names are the New Pages Experience tasks and the only way to grant FACEBOOK_ACCESS or REVENUE. Granting MANAGE also yields MANAGE_LEADS.",
              "items": {
                "enum": [
                  "MANAGE",
                  "CREATE_CONTENT",
                  "MODERATE",
                  "MESSAGING",
                  "ADVERTISE",
                  "ANALYZE",
                  "MODERATE_COMMUNITY",
                  "MANAGE_JOBS",
                  "PAGES_MESSAGING",
                  "PAGES_MESSAGING_SUBSCRIPTIONS",
                  "READ_PAGE_MAILBOXES",
                  "VIEW_MONETIZATION_INSIGHTS",
                  "MANAGE_LEADS",
                  "CASHIER_ROLE",
                  "GLOBAL_STRUCTURE_MANAGEMENT",
                  "PROFILE_PLUS_FULL_CONTROL",
                  "PROFILE_PLUS_MANAGE",
                  "PROFILE_PLUS_FACEBOOK_ACCESS",
                  "PROFILE_PLUS_CREATE_CONTENT",
                  "PROFILE_PLUS_MODERATE",
                  "PROFILE_PLUS_MODERATE_DELEGATE_COMMUNITY",
                  "PROFILE_PLUS_MESSAGING",
                  "PROFILE_PLUS_ADVERTISE",
                  "PROFILE_PLUS_ANALYZE",
                  "PROFILE_PLUS_REVENUE",
                  "PROFILE_PLUS_MANAGE_LEADS",
                  "PROFILE_PLUS_CREATIVE_MANAGEMENT",
                  "PROFILE_PLUS_CREATOR_MANAGEMENT",
                  "PROFILE_PLUS_GLOBAL_STRUCTURE_MANAGEMENT"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "businessId"
          ],
          "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"
      }
    }
  }
}
```

## 费用与请求规则

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

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


## OpenAPI

````yaml reference-contracts/zh/aisa-social.json POST /apis/v1/social/accounts/{accountId}/business-partners
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/accounts/{accountId}/business-partners:
    post:
      summary: Share the Page with a partner business
      description: >-
        Accounts. Acts in public on your connected account; needs
        social:publish. Audited. Ids are yours: accounts acc_..., profiles
        prf_..., posts pst_...; every other object id is checked against your
        accounts before the call.


        Grants a partner business portfolio tasks on the Facebook Page behind
        this account.


        With `ADVERTISE`, the partner can run ads for the Page from ad accounts
        in its own portfolio. This is how an integrator advertises for an end
        user without touching the end user's ad accounts.


        ### Responses


        - `422`: the Page is outside any business portfolio. Meta only lets a
        user token share a Page that a portfolio owns, so claim it into one at
        business.facebook.com first.

        - `200` with `alreadyShared: true` and the tasks the partner currently
        holds: the portfolio already has access. Meta refuses a second grant
        instead of replacing its tasks.


        To change a partner's tasks, revoke and grant again.


        ### After the grant


        The partner assigns its own people to the Page with `POST
        /apis/v1/ads/page-users`; Meta does not assign partner admins
        automatically.


        The Instagram professional account linked to the Page is returned in
        `page` so the partner can reference it. Meta exposes no API to share
        Instagram accounts; that is done in Business Settings.


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

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

        <!-- aisa-pricing:end -->
      operationId: post_aisa_social_apis_v1_social_accounts_accounti_31b011
      parameters:
        - description: One of your social accounts (acc_...).
          in: path
          name: accountId
          required: true
          schema:
            pattern: ^acc_[0-9A-Za-z]{22}$
            type: string
      requestBody:
        content:
          application/json:
            example:
              businessId: '1234567890123'
              permittedTasks:
                - ADVERTISE
                - ANALYZE
            schema:
              properties:
                businessId:
                  description: Meta business portfolio id of the partner (numeric string).
                  type: string
                permittedTasks:
                  description: >-
                    Tasks granted on the Page, Meta's permitted_tasks
                    vocabulary. Defaults to ADVERTISE and ANALYZE. The bare
                    names are what Business Settings shows; the PROFILE_PLUS_
                    names are the New Pages Experience tasks and the only way to
                    grant FACEBOOK_ACCESS or REVENUE. Granting MANAGE also
                    yields MANAGE_LEADS.
                  items:
                    enum:
                      - MANAGE
                      - CREATE_CONTENT
                      - MODERATE
                      - MESSAGING
                      - ADVERTISE
                      - ANALYZE
                      - MODERATE_COMMUNITY
                      - MANAGE_JOBS
                      - PAGES_MESSAGING
                      - PAGES_MESSAGING_SUBSCRIPTIONS
                      - READ_PAGE_MAILBOXES
                      - VIEW_MONETIZATION_INSIGHTS
                      - MANAGE_LEADS
                      - CASHIER_ROLE
                      - GLOBAL_STRUCTURE_MANAGEMENT
                      - PROFILE_PLUS_FULL_CONTROL
                      - PROFILE_PLUS_MANAGE
                      - PROFILE_PLUS_FACEBOOK_ACCESS
                      - PROFILE_PLUS_CREATE_CONTENT
                      - PROFILE_PLUS_MODERATE
                      - PROFILE_PLUS_MODERATE_DELEGATE_COMMUNITY
                      - PROFILE_PLUS_MESSAGING
                      - PROFILE_PLUS_ADVERTISE
                      - PROFILE_PLUS_ANALYZE
                      - PROFILE_PLUS_REVENUE
                      - PROFILE_PLUS_MANAGE_LEADS
                      - PROFILE_PLUS_CREATIVE_MANAGEMENT
                      - PROFILE_PLUS_CREATOR_MANAGEMENT
                      - PROFILE_PLUS_GLOBAL_STRUCTURE_MANAGEMENT
                    type: string
                  type: array
              required:
                - businessId
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  alreadyShared:
                    description: Always true on this response.
                    type: boolean
                  page:
                    properties:
                      business:
                        description: >-
                          Business portfolio that owns the Page; null when the
                          Page is outside any portfolio.
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        type:
                          - object
                          - 'null'
                      id:
                        description: Facebook Page id.
                        type: string
                      instagramBusinessAccount:
                        description: >-
                          Instagram professional account linked to the Page;
                          null when none is linked.
                        properties:
                          id:
                            type: string
                          username:
                            type: string
                        type:
                          - object
                          - 'null'
                      name:
                        type: string
                    type: object
                  partner:
                    properties:
                      businessId:
                        type: string
                      permittedTasks:
                        description: Tasks the partner currently holds.
                        items:
                          type: string
                        type: array
                    type: object
                type: object
          description: The portfolio already had access; nothing changed
        '201':
          content:
            application/json:
              schema:
                properties:
                  page:
                    properties:
                      business:
                        description: >-
                          Business portfolio that owns the Page; null when the
                          Page is outside any portfolio.
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                        type:
                          - object
                          - 'null'
                      id:
                        description: Facebook Page id.
                        type: string
                      instagramBusinessAccount:
                        description: >-
                          Instagram professional account linked to the Page;
                          null when none is linked.
                        properties:
                          id:
                            type: string
                          username:
                            type: string
                        type:
                          - object
                          - 'null'
                      name:
                        type: string
                    type: object
                  partner:
                    properties:
                      businessId:
                        type: string
                      permittedTasks:
                        items:
                          type: string
                        type: array
                    type: object
                type: object
          description: Page shared
        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.