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

# Create multiple catalog items.

> Creates up to 1,000 items in one request, each validated as `POST /catalogs` would.

Each item succeeds or fails on its own, and the response is 200 either way, so always check `failed`. An item with an existing `id` or `metadata` not matching `schema` is listed there with the reason while the others are created; fix and resend only the failed items.

Request schema validation failures reject the whole request with 422, before any item is processed. Examples include more than 1,000 items, missing required fields, invalid `status` or `schema` values, non-string IDs, or `metadata` that is not an object. Once the request passes this validation, item-level failures are returned in `failed`.



## OpenAPI

````yaml /openapi/adm.openapi.en-dev.json post /api/manager/catalogs/batch-create
openapi: 3.1.0
info:
  description: >
    ## Introduction

    The Data Management APIs comprehensively oversees the **diverse data** used
    by advertising and recommendation systems, ensuring that the Decision API
    runs accurately and efficiently.


    From registering, updating, and deleting campaigns and placements to **log
    and statistics analysis**, it provides the insights necessary for effective
    system operation.


    The resulting data and metrics are used by the Decision API to **optimize ad
    and content decisions**, ultimately boosting the overall performance of the
    advertising and recommendation system.
  title: Data Management APIs
  version: dev
servers: []
security: []
tags:
  - description: >-
      Authentication endpoints. All roles (admin, operator, advertiser) use
      these to log in, refresh tokens, and manage their own credentials.
    name: Auth
  - description: >-
      Advertiser account management. Operators and admins onboard advertisers,
      manage their budgets, and deactivate accounts. Advertisers can only read
      their own profile and balance — they cannot create, delete, or modify
      another advertiser's account.
    name: Advertisers
  - description: >-
      Internal user (operator / admin) account management. Admin only. Covers
      creating operator accounts, changing roles, toggling activation status,
      and hard-deleting accounts. Operators have no access to this resource.
    name: Users
  - description: >-
      The AdUnit Management API provides comprehensive functionalities for
      managing ad units and related resources. AdUnits are organized in a
      hierarchical path structure derived from their code and parent path. Only
      admin and operator roles have access — advertisers cannot access raw
      inventory. References:
      [Placement](https://docs.aiderx.io/guides/about-a2/en/placement)
    name: AdUnit
  - description: >-
      Ad catalog management. CRUD for ad catalogs plus public shared-view access
      via a share link.
    name: Ad Catalogs
  - description: >-
      Ad source (demand partner) management. CRUD for external ad sources that
      supply demand to ad units.
    name: AdSource
  - description: >-
      Allocation management. An allocation binds a line item to a serving target
      such as an ad unit. Covers CRUD, status counts, and single-allocation
      lookup.
    name: Allocations
  - description: >-
      Associated items pool (admin). Bulk upsert/delete and lookup of
      associated-items pools used by the recommendation pipeline.
    name: AssociatedItemsPool
  - description: >-
      Custom targeting segment management. CRUD and bulk operations for custom
      targeting segments.
    name: Custom Targeting Segment
  - description: Audit log access. Read the system audit log of administrative actions.
    name: Audit Logs
  - description: >-
      Creative block list. List, block, and unblock creatives to exclude them
      from serving.
    name: Blocked Creative
  - description: Catalog item management. List and update catalog (product/data) items.
    name: Catalogs
  - description: >-
      Creative asset management. Operators and admins manage creatives;
      advertisers see only their own. Deletion is blocked while any line-item
      association (LICA) still exists.
    name: Creatives
  - description: >-
      Dashboard aggregates. Summary data, inventory, and line-item metric
      rollups for the console dashboard.
    name: Dashboard
  - description: Experiment management. CRUD for A/B and optimization experiments.
    name: Experiment
  - description: >-
      External creative inspection. Read-only access to creatives ingested from
      external demand sources.
    name: External Creative
  - description: >-
      Third-party integration management. Manage integration sources (external
      data/serving connectors), probe connectivity, and read public
      (sensitive-config-redacted) configs.
    name: Integration
  - description: >-
      Line Item–Creative Associations (LICA). Associates creatives with line
      items, including batch create and delete (max 100, partial failure
      allowed) and dashboard counts.
    name: LICAs
  - description: License information. Read available license features and usage metrics.
    name: License
  - description: >-
      Line item management within an order. Covers create, update, delete, batch
      operations (max 100, partial failure allowed), and status transitions. A
      line item defines budget, goal, schedule, and targeting under its parent
      order.
    name: LineItems
  - description: Media library. List, upload, and delete media files used by creatives.
    name: Media Library
  - description: >-
      Metric query endpoints. Retrieve aggregated metrics for ad units,
      creatives, line items, and related entities.
    name: Metric
  - description: >-
      Advertiser order management. Operators and admins create and manage orders
      that group line items under a single budget; advertisers can read their
      own. Includes batch operations (max 100) and draft-only deletion rules.
    name: Orders
  - description: >-
      Placement management. A placement maps ad units to a serving surface.
      Endpoints cover CRUD and replacing the ad units bound to a placement.
    name: Placements
  - description: >-
      System settings. Read and update system configuration, including site
      logo, public URL, TLS, and access-token regeneration.
    name: Settings
  - description: System resources. Public static resources such as the site logo.
    name: System
  - description: >-
      Operational/developer control endpoints. Low-level ext patches and health
      checks intended for internal operation, not general API consumers.
    name: developer
  - description: >-
      Operational allocation control. Update allocation ext or force-update
      status (admin only).
    name: developer/control/allocations
  - description: >-
      Ad-serving monitoring (operational). Read ad-serving status, ad-unit
      monitoring history, and alerts.
    name: developer/monitoring
  - description: Internal health and probe endpoints.
    name: internal
  - description: >-
      Manager-level utility endpoints (e.g. service health) not tied to a
      specific resource.
    name: manager
  - description: Manage mappings between ad units, native formats, and native styles.
    name: Ad Unit Native Style
  - description: Manage custom targeting keys, including lifecycle and bulk operations.
    name: Custom Targeting Key
  - description: >-
      Manage values belonging to custom targeting keys, including lifecycle and
      bulk operations.
    name: Custom Targeting Value
  - description: Manage native formats and the fields that define each format.
    name: Native Format
  - description: List templates available for native styles.
    name: Native Style Template
  - description: Manage native rendering styles.
    name: Native Style
paths:
  /api/manager/catalogs/batch-create:
    post:
      tags:
        - Catalogs
      summary: Create multiple catalog items.
      description: >-
        Creates up to 1,000 items in one request, each validated as `POST
        /catalogs` would.


        Each item succeeds or fails on its own, and the response is 200 either
        way, so always check `failed`. An item with an existing `id` or
        `metadata` not matching `schema` is listed there with the reason while
        the others are created; fix and resend only the failed items.


        Request schema validation failures reject the whole request with 422,
        before any item is processed. Examples include more than 1,000 items,
        missing required fields, invalid `status` or `schema` values, non-string
        IDs, or `metadata` that is not an object. Once the request passes this
        validation, item-level failures are returned in `failed`.
      operationId: handle_batch_create_catalogs_api_manager_catalogs_batch_create_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogBatchCreate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogBatchCreateResponse'
          description: 'Per-item result: created items and the ones that failed.'
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPExceptionResponse'
          description: Forbidden
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
        - HTTPBearer: []
components:
  schemas:
    CatalogBatchCreate:
      example:
        items:
          - id: '1001'
            metadata:
              brand: brand1
              ext:
                price: 25000
              id: '1001'
              title: product1
            schema: creative.catalog
            source: manual
            status: active
          - id: '1002'
            metadata:
              brand: brand1
              ext:
                price: 18000
              id: '1002'
              title: product2
            schema: creative.catalog
            source: manual
            status: active
      properties:
        items:
          description: >-
            Items to create, each shaped as the `POST /catalogs` body. Up to
            1,000.
          items:
            $ref: '#/components/schemas/CatalogCreate'
          maxItems: 1000
          title: Items
          type: array
      required:
        - items
      title: CatalogBatchCreate
      type: object
    CatalogBatchCreateResponse:
      example:
        failed:
          - id: '1002'
            reason: Already exists.
        succeeded:
          - created_at: '2026-10-20T00:00:00Z'
            id: '1001'
            metadata:
              brand: brand1
              ext:
                price: 25000
              id: '1001'
              title: product1
            schema: creative.catalog
            source: manual
            status: active
            updated_at: '2026-10-20T00:00:00Z'
      properties:
        failed:
          description: Items that were not created, with the reason.
          items:
            $ref: '#/components/schemas/CatalogBatchFailedItem'
          title: Failed
          type: array
        succeeded:
          description: Items that were created.
          items:
            $ref: '#/components/schemas/CatalogResponse'
          title: Succeeded
          type: array
      required:
        - succeeded
        - failed
      title: CatalogBatchCreateResponse
      type: object
    HTTPExceptionResponse:
      properties:
        detail:
          description: Detailed explanation for the exception
          title: Detail
          type: string
      required:
        - detail
      title: HTTPExceptionResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    CatalogCreate:
      description: |-
        Request schema for creating a catalog item.

        `metadata` must satisfy the shape `schema` names.
      example:
        id: '1001'
        metadata:
          brand: brand1
          ext:
            price: 25000
          id: '1001'
          title: product1
        schema: creative.catalog
        source: manual
        status: active
      properties:
        id:
          description: >-
            ID of the item, sent as a string even when numeric (`"1001"`, not
            `1001`).
          title: Id
          type: string
        metadata:
          anyOf:
            - additionalProperties: false
              properties:
                brand:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Brand of the item.
                  title: Brand
                category:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Category the item belongs to.
                  title: Category
                created_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Created datetime of the item.
                  title: Created At
                ext:
                  anyOf:
                    - {}
                    - type: 'null'
                  description: >-
                    Per-site extension slot for anything outside the standard
                    fields.
                  title: Ext
                id:
                  description: Item identifier, matching `catalogs.id`.
                  title: Id
                  type: string
                link:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the item's detail page.
                  title: Link
                seller_name:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Seller of the item.
                  title: Seller Name
                thumbnail:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the representative image.
                  title: Thumbnail
                title:
                  description: Title of the item.
                  title: Title
                  type: string
                updated_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Updated datetime of the item.
                  title: Updated At
              required:
                - id
                - title
              title: creative.catalog
              type: object
            - additionalProperties: false
              properties:
                author:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Author of the series.
                  title: Author
                catch_copy:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: One-line promotional copy.
                  title: Catch Copy
                category:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Category the series belongs to.
                  title: Category
                created_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Created datetime of the series.
                  title: Created At
                description:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Description of the series.
                  title: Description
                end_date:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: When the series stops being served.
                  title: End Date
                exclusion_tags:
                  anyOf:
                    - items:
                        type: string
                      type: array
                    - type: 'null'
                  description: Tags used to exclude the series.
                  title: Exclusion Tags
                ext:
                  anyOf:
                    - {}
                    - type: 'null'
                  description: >-
                    Per-site extension slot for anything outside the standard
                    fields.
                  title: Ext
                id:
                  description: Series identifier, matching `catalogs.id`.
                  title: Id
                  type: string
                link:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the series detail page.
                  title: Link
                rating:
                  anyOf:
                    - type: integer
                    - type: 'null'
                  description: Rating, e.g. an age rating.
                  title: Rating
                start_date:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: When the series starts being served.
                  title: Start Date
                tags:
                  anyOf:
                    - items:
                        type: string
                      type: array
                    - type: 'null'
                  description: Tags used for display and classification.
                  title: Tags
                thumbnail:
                  description: URL of the representative image.
                  title: Thumbnail
                  type: string
                title:
                  description: Title of the series.
                  title: Title
                  type: string
                updated_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Updated datetime of the series.
                  title: Updated At
              required:
                - id
                - thumbnail
                - title
              title: webtoon
              type: object
          description: >-
            Attributes of the item, in the shape the `schema` value names: use
            the variant titled with that value. `metadata.id` must equal `id`,
            and anything outside the listed fields goes under `ext`.
          title: Metadata
        schema:
          $ref: '#/components/schemas/CatalogSchema'
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
        status:
          $ref: '#/components/schemas/CatalogStatus'
      required:
        - id
        - status
        - schema
        - metadata
      title: CatalogCreate
      type: object
    CatalogBatchFailedItem:
      description: An item the batch could not apply, and why.
      properties:
        id:
          description: ID of the catalog item.
          title: Id
          type: string
        reason:
          description: >-
            Why the item failed, e.g. `Already exists.`, `Invalid value.`, `Not
            found.`
          title: Reason
          type: string
      required:
        - id
        - reason
      title: CatalogBatchFailedItem
      type: object
    CatalogResponse:
      description: Response schema for a catalog item.
      example:
        created_at: '2026-10-20T00:00:00Z'
        id: '1001'
        metadata:
          brand: brand1
          ext:
            price: 25000
          id: '1001'
          title: product1
        schema: creative.catalog
        source: manual
        status: active
        updated_at: '2026-10-20T00:00:00Z'
      properties:
        created_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Created At
        id:
          title: Id
          type: string
        metadata:
          anyOf:
            - properties:
                brand:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Brand of the item.
                  title: Brand
                category:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Category the item belongs to.
                  title: Category
                created_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Created datetime of the item.
                  title: Created At
                ext:
                  anyOf:
                    - {}
                    - type: 'null'
                  description: >-
                    Per-site extension slot for anything outside the standard
                    fields.
                  title: Ext
                id:
                  description: Item identifier, matching `catalogs.id`.
                  title: Id
                  type: string
                link:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the item's detail page.
                  title: Link
                seller_name:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Seller of the item.
                  title: Seller Name
                thumbnail:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the representative image.
                  title: Thumbnail
                title:
                  description: Title of the item.
                  title: Title
                  type: string
                updated_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Updated datetime of the item.
                  title: Updated At
              required:
                - id
                - title
              title: creative.catalog
              type: object
            - properties:
                author:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Author of the series.
                  title: Author
                catch_copy:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: One-line promotional copy.
                  title: Catch Copy
                category:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Category the series belongs to.
                  title: Category
                created_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Created datetime of the series.
                  title: Created At
                description:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: Description of the series.
                  title: Description
                end_date:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: When the series stops being served.
                  title: End Date
                exclusion_tags:
                  anyOf:
                    - items:
                        type: string
                      type: array
                    - type: 'null'
                  description: Tags used to exclude the series.
                  title: Exclusion Tags
                ext:
                  anyOf:
                    - {}
                    - type: 'null'
                  description: >-
                    Per-site extension slot for anything outside the standard
                    fields.
                  title: Ext
                id:
                  description: Series identifier, matching `catalogs.id`.
                  title: Id
                  type: string
                link:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: URL of the series detail page.
                  title: Link
                rating:
                  anyOf:
                    - type: integer
                    - type: 'null'
                  description: Rating, e.g. an age rating.
                  title: Rating
                start_date:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: When the series starts being served.
                  title: Start Date
                tags:
                  anyOf:
                    - items:
                        type: string
                      type: array
                    - type: 'null'
                  description: Tags used for display and classification.
                  title: Tags
                thumbnail:
                  description: URL of the representative image.
                  title: Thumbnail
                  type: string
                title:
                  description: Title of the series.
                  title: Title
                  type: string
                updated_at:
                  anyOf:
                    - format: date-time
                      type: string
                    - type: 'null'
                  description: Updated datetime of the series.
                  title: Updated At
              required:
                - id
                - thumbnail
                - title
              title: webtoon
              type: object
          description: >-
            Attributes of the item, in the shape the `schema` value names: read
            it as the variant titled with that value.
          title: Metadata
        schema:
          title: Schema
          type: string
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
        status:
          $ref: '#/components/schemas/CatalogStatus'
        updated_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Updated At
      required:
        - id
        - status
        - schema
        - metadata
      title: CatalogResponse
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    CatalogSchema:
      enum:
        - creative.catalog
        - webtoon
      title: CatalogSchema
      type: string
    CatalogStatus:
      enum:
        - active
        - inactive
      title: CatalogStatus
      type: string
  securitySchemes:
    HTTPBearer:
      description: >-
        Bearer authentication. Pass the access token in the `Authorization:
        Bearer <token>` header.
      scheme: bearer
      type: http

````

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