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

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

Creates an article on the blog. Supported on Shopify (`shopify`), WordPress (`wordpress`), Wix (`wix`) and Webflow (`webflow`).

### Publishing behavior

- WordPress, Wix and Webflow default to a draft when both publishing fields are omitted.
- `isPublished: false` keeps the article as a draft and takes priority over a future `publishDate`.
- A future `publishDate` schedules publication natively on the platform. The platform publishes it at that time with no AIsa queue involved.
- `isPublished: true` publishes immediately when there is no future `publishDate`.
- WordPress native scheduling depends on the site's scheduler/WP-Cron.

### SEO

`seo.title` / `seo.description` map to:

- Shopify: the global `title_tag` and `description_tag` metafields (the fields Shopify themes read for the page title and meta description).
- Wix: the post's SEO title and meta description.

WordPress and Webflow reject `seo`; SEO plugin and custom-field writes are not supported.

### Webflow

Webflow has no scheduling API: a future `publishDate` returns 400 unless `isPublished: false` keeps a draft.

Fields map to the collection's own fields by type and slug:

- The body goes to its rich text field.
- `excerpt` goes to a summary field.
- `image` goes to an image field.
- `tags` and `author` go to tag and author reference fields.

Sending a field the collection does not have returns 400, as does a collection that requires a field the Blogs API cannot fill.

### Wix

Wix stores rich content. `bodyHtml` is converted on write (each top-level HTML element must fit 30,000 characters), and images in the body are imported into the site's Media Manager.

### Idempotency

Send an Idempotency-Key header to make retries safe. A retry with the same key and body replays the original 201 instead of creating a second article. A retry while the first request is still running returns 409; retry after a short backoff.

<!-- 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/accounts/\{accountId}/blogs/\{blogId}/articles
* **Availability:** enabled
* **Request URL template:** `https://api.aisa.one/apis/v1/social/accounts/{accountId}/blogs/{blogId}/articles`
* **accountId:** path; required
* **blogId:** path; required
* **Idempotency-Key:** header; 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": "post_aisa_social_apis_v1_social_accounts_accounti_9e8439",
  "method": "POST",
  "path": "/apis/v1/social/accounts/{accountId}/blogs/{blogId}/articles",
  "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": "Passed to the channel: a retry with the same key within 24 hours returns the first result instead of acting twice. AIsa never retries a write for you.",
      "in": "header",
      "name": "Idempotency-Key",
      "required": false,
      "schema": {
        "maxLength": 191,
        "minLength": 1,
        "type": "string"
      }
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "example": {
          "title": "example"
        },
        "schema": {
          "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\nRequired 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. Generated from the title when omitted.",
              "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.",
              "properties": {
                "altText": {
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "isPublished": {
              "description": "Set false for a draft or true to publish. On WordPress and Wix false takes priority over a future publishDate; omission with no date defaults to draft.",
              "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": "Tag names. 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"
            }
          },
          "required": [
            "title"
          ],
          "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/accounts/{accountId}/blogs/{blogId}/articles
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:
    post:
      summary: Create 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.


        Creates an article on the blog. Supported on Shopify (`shopify`),
        WordPress (`wordpress`), Wix (`wix`) and Webflow (`webflow`).


        ### Publishing behavior


        - WordPress, Wix and Webflow default to a draft when both publishing
        fields are omitted.

        - `isPublished: false` keeps the article as a draft and takes priority
        over a future `publishDate`.

        - A future `publishDate` schedules publication natively on the platform.
        The platform publishes it at that time with no AIsa queue involved.

        - `isPublished: true` publishes immediately when there is no future
        `publishDate`.

        - WordPress native scheduling depends on the site's scheduler/WP-Cron.


        ### SEO


        `seo.title` / `seo.description` map to:


        - Shopify: the global `title_tag` and `description_tag` metafields (the
        fields Shopify themes read for the page title and meta description).

        - Wix: the post's SEO title and meta description.


        WordPress and Webflow reject `seo`; SEO plugin and custom-field writes
        are not supported.


        ### Webflow


        Webflow has no scheduling API: a future `publishDate` returns 400 unless
        `isPublished: false` keeps a draft.


        Fields map to the collection's own fields by type and slug:


        - The body goes to its rich text field.

        - `excerpt` goes to a summary field.

        - `image` goes to an image field.

        - `tags` and `author` go to tag and author reference fields.


        Sending a field the collection does not have returns 400, as does a
        collection that requires a field the Blogs API cannot fill.


        ### Wix


        Wix stores rich content. `bodyHtml` is converted on write (each
        top-level HTML element must fit 30,000 characters), and images in the
        body are imported into the site's Media Manager.


        ### Idempotency


        Send an Idempotency-Key header to make retries safe. A retry with the
        same key and body replays the original 201 instead of creating a second
        article. A retry while the first request is still running returns 409;
        retry after a short backoff.


        <!-- 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_accounts_accounti_9e8439
      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: >-
            Passed to the channel: a retry with the same key within 24 hours
            returns the first result instead of acting twice. AIsa never retries
            a write for you.
          in: header
          name: Idempotency-Key
          required: false
          schema:
            maxLength: 191
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              title: example
            schema:
              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. Generated from the title when omitted.
                  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.
                  properties:
                    altText:
                      type: string
                    url:
                      format: uri
                      type: string
                  required:
                    - url
                  type: object
                isPublished:
                  description: >-
                    Set false for a draft or true to publish. On WordPress and
                    Wix false takes priority over a future publishDate; omission
                    with no date defaults to draft.
                  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: >-
                    Tag names. 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
              required:
                - title
              type: object
        required: true
      responses:
        '201':
          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 created
        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.