> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bily.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Edit Performance Max Asset Group

> Rename, pause, enable, remove, update destination URLs or replace reviewed advertiser text for a Performance Max asset group. Text edits require includeTextAssets=true and its current fingerprint. New paused text and removals requiring temporary link activation need the group to start and finish paused. Respect committed placement minimums and capacities; verify separate create/remove phases before restoring reviewed link states. Preserve shared assets, automatic text, other creative links, signals and feed filters. Verify every phase without replay or hidden group activation. Group removal is irreversible; budget belongs to the parent campaign. This is an execution endpoint. For a reviewed user change, save its supported capability/body as an immutable action draft, review it, and explicitly publish that draft. Check action-jobs/capabilities before staging; a catalog entry alone does not make it stageable.



## OpenAPI

````yaml /openapi.json post /platform/{resourceUrl}/actions/manage-google-asset-group
openapi: 3.1.0
info:
  title: Bily API
  version: 1.0.0
  description: >-
    Discover stores, read analytics and commerce data, inspect connections, and
    run explicitly authorized actions with the Bily API.
  contact:
    name: Bily support
    email: support@bily.ai
servers:
  - url: https://app.bily.ai/api/customer/v1
    description: Production
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Identity
    description: Discover the identity and organizations attached to a key.
  - name: Stores
    description: Discover stores within an organization.
  - name: Store data
    description: Read store profiles, readiness, catalogs, and connected accounts.
  - name: Commerce
    description: Run scoped commerce reads and explicitly approved GraphQL mutations.
  - name: Analytics
    description: >-
      Read normalized advertising, attribution, product, customer, and cohort
      metrics.
  - name: Analytics SQL
    description: Run constrained read-only SQL over store-scoped Bily datasets.
  - name: Customer journeys
    description: Read customer touchpoints within an authenticated store scope.
  - name: Connections
    description: Inspect available connections, support, and advertising assets.
  - name: Supported actions
    description: Synchronize connections and update supported advertising assets.
  - name: Campaign actions
    description: Create or clone supported advertising campaign resources.
  - name: Ad drafts and jobs
    description: Save, review, publish and reconcile immutable advertising changes.
  - name: Creative library
    description: >-
      Analyze references and retain generated images separately from ad
      publication.
  - name: Tracking connections
    description: >-
      List and manage store-scoped tracking connections without returning
      credential secrets.
  - name: Tracking evidence
    description: >-
      Inspect installation, incoming receipts, reviewed events and destination
      evidence within one workspace.
paths:
  /platform/{resourceUrl}/actions/manage-google-asset-group:
    post:
      tags:
        - Campaign actions
      summary: Edit Performance Max Asset Group
      description: >-
        Rename, pause, enable, remove, update destination URLs or replace
        reviewed advertiser text for a Performance Max asset group. Text edits
        require includeTextAssets=true and its current fingerprint. New paused
        text and removals requiring temporary link activation need the group to
        start and finish paused. Respect committed placement minimums and
        capacities; verify separate create/remove phases before restoring
        reviewed link states. Preserve shared assets, automatic text, other
        creative links, signals and feed filters. Verify every phase without
        replay or hidden group activation. Group removal is irreversible; budget
        belongs to the parent campaign. This is an execution endpoint. For a
        reviewed user change, save its supported capability/body as an immutable
        action draft, review it, and explicitly publish that draft. Check
        action-jobs/capabilities before staging; a catalog entry alone does not
        make it stageable.
      operationId: ads-manage-google-asset-group
      parameters:
        - name: resourceUrl
          in: path
          required: true
          description: Exact workspace URL returned by GET /context.
          schema:
            type: string
        - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdsManageGoogleAssetGroupInput'
      responses:
        '200':
          description: >-
            Request completed. Inspect the returned state and any verification
            fields.
          headers:
            x-request-id:
              schema:
                type: string
              description: Keep this identifier for diagnostics.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    OrganizationId:
      name: x-bily-organization-id
      in: header
      required: false
      description: >-
        An organization ID returned by GET /context or GET /organizations. Omit
        it when a scoped key supplies the organization. Otherwise provide it
        when no organization is selected.
      schema:
        type: string
        example: org_01J8W7T9G3E6ZQ4M2K5N8P1R0S
  schemas:
    AdsManageGoogleAssetGroupInput:
      type: object
      additionalProperties: false
      required:
        - adAccountId
        - sourceAuthority
        - payload
      properties:
        adAccountId:
          type: string
          pattern: ^[1-9]\d{0,19}$
        sourceAuthority:
          type: object
          additionalProperties: false
          required:
            - dataSourceAdAccountId
            - dataSourceConnectorId
          properties:
            dataSourceAdAccountId:
              type: string
              minLength: 1
            dataSourceConnectorId:
              type: string
              minLength: 1
        payload:
          type: object
          additionalProperties: false
          required:
            - campaignId
            - assetGroupId
            - expectedFingerprint
            - before
            - updates
          properties:
            campaignId:
              type: string
              pattern: ^[1-9]\d{0,19}$
            assetGroupId:
              type: string
              pattern: ^[1-9]\d{0,19}$
            includeTextAssets:
              type: boolean
              const: true
              description: >-
                Read and fingerprint all current text links before a text edit.
                Return this flag with the reviewed update.
            expectedFingerprint:
              type: string
              pattern: ^[a-f0-9]{64}$
            before:
              type: object
              additionalProperties: false
              required:
                - name
                - status
                - finalUrls
                - finalMobileUrls
                - path1
                - path2
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 128
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - PAUSED
                    - ARCHIVED
                finalUrls:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                    format: uri
                    pattern: ^https?://
                    maxLength: 4096
                finalMobileUrls:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                    format: uri
                    pattern: ^https?://
                    maxLength: 4096
                path1:
                  type: string
                  maxLength: 15
                path2:
                  type: string
                  maxLength: 15
            updates:
              type: object
              additionalProperties: false
              minProperties: 1
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 128
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - PAUSED
                    - ARCHIVED
                finalUrls:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                    format: uri
                    pattern: ^https?://
                    maxLength: 4096
                finalMobileUrls:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                    format: uri
                    pattern: ^https?://
                    maxLength: 4096
                path1:
                  type: string
                  maxLength: 15
                path2:
                  type: string
                  maxLength: 15
                textAssets:
                  type: array
                  maxItems: 25
                  description: >-
                    Complete desired advertiser text links. Requires
                    includeTextAssets and its current fingerprint. New PAUSED
                    text and removals requiring temporary link activation need a
                    currently PAUSED group that remains PAUSED. Preserve
                    required placement minimums. Commit and verify replacement
                    links before separate removals, then restore reviewed link
                    states; publish group status changes separately. Automatic
                    text and all other creative links stay untouched.
                  items:
                    type: object
                    additionalProperties: false
                    required:
                      - fieldType
                      - text
                      - status
                    properties:
                      fieldType:
                        type: string
                        enum:
                          - HEADLINE
                          - LONG_HEADLINE
                          - DESCRIPTION
                      text:
                        type: string
                        minLength: 1
                        maxLength: 90
                      status:
                        type: string
                        enum:
                          - ENABLED
                          - PAUSED
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          example: Store not found
        requestId:
          type: string
          description: Present on some server errors.
        details:
          description: Optional safe details for an action failure.
        retryAfter:
          type:
            - string
            - 'null'
      additionalProperties: true
  responses:
    BadRequest:
      description: The request path, query, or body is invalid.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication is missing or invalid.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The identity or API key is not allowed to perform this request.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The resource was not found in the caller's accessible scope.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: The request conflicts with the current resource state.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: The request rate is too high.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Bily could not complete the request.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadGateway:
      description: A dependent Bily operation was temporarily unavailable.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: >-
        Authentication or a required data source is temporarily unavailable.
        Honor Retry-After when present; do not interpret this as an invalid key
        or an empty dataset.
      headers:
        x-request-id:
          description: The request identifier selected or generated by Bily.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A server-side Bily API key created under Settings > AI tools > Access
        keys. Select the intended workspace before creating it.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bily API key
      description: An alternative way to send the same server-side Bily API key.

````

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