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

# Update a blog article

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

Partial-updates an article. Supported on Shopify (`shopify`), WordPress (`wordpress`), Wix (`wix`) and Webflow (`webflow`).

Send any subset of the create fields: `title`, `bodyHtml`, `handle`, `tags`, `author`, `excerpt`, `image`, `seo`, `isPublished`, `publishDate`. At least one field is required (an empty body returns 400).

### Publishing

`isPublished` and `publishDate` behave as on create:

- `isPublished: false` unpublishes back to a draft.
- A future `publishDate` schedules publication natively on the platform.
- Omitting both fields preserves the current WordPress or Wix status.

Omitting `image` preserves the current featured image; removal is not supported.

### Platform limits

- **WordPress**: rejects `seo` and does not support SEO-plugin/custom-field, category, or custom-post-type writes.
- **Webflow**: an edit to a published item goes live immediately, `isPublished: false` unpublishes it, and a future `publishDate` returns 400.

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

## 请求规范

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

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

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

```json theme={null}
{
  "operationId": "patch_aisa_social_apis_v1_social_accounts_account_1bfa6c",
  "method": "PATCH",
  "path": "/apis/v1/social/accounts/{accountId}/blogs/{blogId}/articles/{articleId}",
  "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"
      }
    },
    {
      "description": "Platform-native blog/site id returned by the list operation.",
      "in": "path",
      "name": "blogId",
      "required": true,
      "schema": {
        "pattern": "^[A-Za-z0-9_-]{1,64}$",
        "type": "string"
      }
    },
    {
      "description": "Platform-native article id: numeric on Shopify and WordPress, a GUID on Wix, a 24-character hex item id on Webflow. Other formats return 400.",
      "in": "path",
      "name": "articleId",
      "required": true,
      "schema": {
        "pattern": "^[A-Za-z0-9_-]{1,64}$",
        "type": "string"
      }
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "example": {},
        "schema": {
          "description": "At least one field is required.",
          "properties": {
            "author": {
              "description": "Shopify author display name, numeric WordPress user id serialized as a string, or Wix site member id. Assigning another WordPress user may require elevated capability. Wix posts without one go to the site's default author.",
              "type": "string"
            },
            "bodyHtml": {
              "description": "Article body as HTML.",
              "type": "string"
            },
            "excerpt": {
              "description": "Short summary shown in blog listings.",
              "type": "string"
            },
            "fieldData": {
              "additionalProperties": true,
              "description": "Webflow only (other platforms answer 400). The collection's own fields that the Blogs API does not map, keyed by field slug, in Webflow's value format (a Reference is an item id, an Image is { url, alt }).\n\n- Required by collections with required fields of their own. A create that leaves one empty answers 400 listing them.\n- A slug the API already fills (name, slug, body, summary, image, tags, author, date) or one the collection lacks answers 400.",
              "type": "object"
            },
            "handle": {
              "description": "URL slug of the article.",
              "type": "string"
            },
            "image": {
              "description": "Featured image from a public URL. WordPress downloads it into the media library and Wix imports it into the Media Manager; JPEG, PNG, GIF and WebP are accepted up to 10 MB. Omit to preserve it; null removal is not supported.",
              "properties": {
                "altText": {
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "isPublished": {
              "description": "Set false to move to draft or true to publish. On WordPress and Wix false takes priority over a future publishDate; omission preserves status unless publishDate is sent (edits to a published Wix post go live).",
              "type": "boolean"
            },
            "publishDate": {
              "description": "ISO 8601 datetime with offset (or Z). A future date schedules publication natively on the platform.",
              "format": "date-time",
              "type": "string"
            },
            "seo": {
              "description": "Shopify and Wix. Search-engine overrides: Shopify global title_tag and description_tag metafields, Wix post SEO title and meta description. WordPress rejects this field.",
              "properties": {
                "description": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tags": {
              "description": "Replaces the full tag-name list. WordPress and Wix resolve existing names case-insensitively and create missing tags (Wix allows up to 30).",
              "items": {
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 100,
              "type": "array"
            },
            "title": {
              "minLength": 1,
              "type": "string"
            }
          },
          "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 PATCH /apis/v1/social/accounts/{accountId}/blogs/{blogId}/articles/{articleId}
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}/blogs/{blogId}/articles/{articleId}:
    patch:
      summary: Update a blog article
      description: >-
        Blogs. 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.


        Partial-updates an article. Supported on Shopify (`shopify`), WordPress
        (`wordpress`), Wix (`wix`) and Webflow (`webflow`).


        Send any subset of the create fields: `title`, `bodyHtml`, `handle`,
        `tags`, `author`, `excerpt`, `image`, `seo`, `isPublished`,
        `publishDate`. At least one field is required (an empty body returns
        400).


        ### Publishing


        `isPublished` and `publishDate` behave as on create:


        - `isPublished: false` unpublishes back to a draft.

        - A future `publishDate` schedules publication natively on the platform.

        - Omitting both fields preserves the current WordPress or Wix status.


        Omitting `image` preserves the current featured image; removal is not
        supported.


        ### Platform limits


        - **WordPress**: rejects `seo` and does not support
        SEO-plugin/custom-field, category, or custom-post-type writes.

        - **Webflow**: an edit to a published item goes live immediately,
        `isPublished: false` unpublishes it, and a future `publishDate` returns
        400.


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

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

        <!-- aisa-pricing:end -->
      operationId: patch_aisa_social_apis_v1_social_accounts_account_1bfa6c
      parameters:
        - description: One of your social accounts (acc_...).
          in: path
          name: accountId
          required: true
          schema:
            pattern: ^acc_[0-9A-Za-z]{22}$
            type: string
        - description: Platform-native blog/site id returned by the list operation.
          in: path
          name: blogId
          required: true
          schema:
            pattern: ^[A-Za-z0-9_-]{1,64}$
            type: string
        - description: >-
            Platform-native article id: numeric on Shopify and WordPress, a GUID
            on Wix, a 24-character hex item id on Webflow. Other formats return
            400.
          in: path
          name: articleId
          required: true
          schema:
            pattern: ^[A-Za-z0-9_-]{1,64}$
            type: string
      requestBody:
        content:
          application/json:
            example: {}
            schema:
              description: At least one field is required.
              properties:
                author:
                  description: >-
                    Shopify author display name, numeric WordPress user id
                    serialized as a string, or Wix site member id. Assigning
                    another WordPress user may require elevated capability. Wix
                    posts without one go to the site's default author.
                  type: string
                bodyHtml:
                  description: Article body as HTML.
                  type: string
                excerpt:
                  description: Short summary shown in blog listings.
                  type: string
                fieldData:
                  additionalProperties: true
                  description: >-
                    Webflow only (other platforms answer 400). The collection's
                    own fields that the Blogs API does not map, keyed by field
                    slug, in Webflow's value format (a Reference is an item id,
                    an Image is { url, alt }).


                    - Required by collections with required fields of their own.
                    A create that leaves one empty answers 400 listing them.

                    - A slug the API already fills (name, slug, body, summary,
                    image, tags, author, date) or one the collection lacks
                    answers 400.
                  type: object
                handle:
                  description: URL slug of the article.
                  type: string
                image:
                  description: >-
                    Featured image from a public URL. WordPress downloads it
                    into the media library and Wix imports it into the Media
                    Manager; JPEG, PNG, GIF and WebP are accepted up to 10 MB.
                    Omit to preserve it; null removal is not supported.
                  properties:
                    altText:
                      type: string
                    url:
                      format: uri
                      type: string
                  required:
                    - url
                  type: object
                isPublished:
                  description: >-
                    Set false to move to draft or true to publish. On WordPress
                    and Wix false takes priority over a future publishDate;
                    omission preserves status unless publishDate is sent (edits
                    to a published Wix post go live).
                  type: boolean
                publishDate:
                  description: >-
                    ISO 8601 datetime with offset (or Z). A future date
                    schedules publication natively on the platform.
                  format: date-time
                  type: string
                seo:
                  description: >-
                    Shopify and Wix. Search-engine overrides: Shopify global
                    title_tag and description_tag metafields, Wix post SEO title
                    and meta description. WordPress rejects this field.
                  properties:
                    description:
                      type: string
                    title:
                      type: string
                  type: object
                tags:
                  description: >-
                    Replaces the full tag-name list. WordPress and Wix resolve
                    existing names case-insensitively and create missing tags
                    (Wix allows up to 30).
                  items:
                    minLength: 1
                    type: string
                  maxItems: 100
                  type: array
                title:
                  minLength: 1
                  type: string
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  article:
                    description: An article inside a blog on the connected platform.
                    properties:
                      author:
                        description: >-
                          Shopify author display name, numeric WordPress user id
                          serialized as a string, or Wix site member id. Wix
                          posts without one are attributed to the site's default
                          author.
                        type:
                          - string
                          - 'null'
                      blogId:
                        description: Platform-native id of the blog the article belongs to.
                        type: string
                      bodyHtml:
                        description: >-
                          Article body as HTML. Wix stores rich content,
                          converted from and to HTML; Wix lists return null (get
                          the article for its body).
                        type:
                          - string
                          - 'null'
                      createdAt:
                        description: >-
                          Creation time when the platform exposes one. WordPress
                          returns null because its core date is the editable
                          publication date.
                        format: date-time
                        type:
                          - string
                          - 'null'
                      excerpt:
                        description: Short summary shown in blog listings.
                        type:
                          - string
                          - 'null'
                      handle:
                        description: URL slug of the article.
                        type: string
                      id:
                        description: >-
                          Platform-native article/post id: numeric on Shopify
                          and WordPress, a GUID on Wix, a hex item id on
                          Webflow.
                        type: string
                      image:
                        description: Featured image.
                        properties:
                          altText:
                            type:
                              - string
                              - 'null'
                          url:
                            type: string
                        type:
                          - object
                          - 'null'
                      isPublished:
                        description: >-
                          False while the article is a draft or its publish date
                          is still in the future.
                        type: boolean
                      platform:
                        enum:
                          - shopify
                          - wordpress
                          - wix
                          - webflow
                        type: string
                      publishDate:
                        description: >-
                          WordPress and Wix. Scheduled publication time in UTC
                          when status is `future`; null for other statuses and
                          omitted for Shopify.
                        format: date-time
                        type:
                          - string
                          - 'null'
                      publishedAt:
                        description: >-
                          Publication time. On WordPress this is present only
                          when status is `publish`; null for drafts,
                          pending/private posts, and scheduled posts.
                        format: date-time
                        type:
                          - string
                          - 'null'
                      status:
                        description: >-
                          WordPress and Wix. Post status (`future` = scheduled,
                          `pending` = in review on Wix); omitted for Shopify.
                        enum:
                          - publish
                          - future
                          - draft
                          - pending
                          - private
                        type: string
                      tags:
                        description: >-
                          Tag names. On WordPress and Wix, missing tag names are
                          created and matching is case-insensitive.
                        items:
                          type: string
                        type: array
                      title:
                        type: string
                      updatedAt:
                        description: >-
                          Last modification time. WordPress returns modified_gmt
                          as UTC.
                        format: date-time
                        type:
                          - string
                          - 'null'
                      url:
                        description: >-
                          WordPress and Wix. Public URL of the article while it
                          is published; null for drafts and scheduled posts, and
                          on a Wix site that is not published yet.
                        type:
                          - string
                          - 'null'
                    type: object
                  platform:
                    enum:
                      - shopify
                      - wordpress
                      - wix
                      - webflow
                    type: string
                type: object
          description: Article updated
        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.