> ## 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 a creative.



## OpenAPI

````yaml /openapi/adm.openapi.en-dev.json post /api/manager/creatives
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/creatives:
    post:
      tags:
        - Creatives
      summary: Create a creative.
      operationId: handle_create_creative_api_manager_creatives_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreativeCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreativeResponse'
          description: Successful Response
        '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:
    CreativeCreate:
      example:
        advertiser_id: 019e1c11-6be3-78d0-b981-b953ca39de37
        height: 250
        name: 메인 배너 소재
        status: active
        type: banner
        width: 300
      properties:
        advertiser_domain:
          anyOf:
            - type: string
            - type: 'null'
          description: Advertiser domain using this creative.
          title: Advertiser Domain
        advertiser_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: Advertiser ID using this creative.
          title: Advertiser Id
        banner:
          anyOf:
            - $ref: '#/components/schemas/BannerInput'
            - type: 'null'
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Optional description of the creative.
          title: Description
        end_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: End Date
        ext:
          default: {}
          description: extension for the creative
          title: Ext
        height:
          default: 0
          minimum: 0
          title: Height
          type: integer
        name:
          minLength: 1
          title: Name
          type: string
        native:
          anyOf:
            - $ref: '#/components/schemas/NativeInput'
            - type: 'null'
        start_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Start Date
        status:
          $ref: '#/components/schemas/CreativeStatus'
          default: inactive
          description: Status of the creative.
        type:
          $ref: '#/components/schemas/CreativeType'
        video:
          anyOf:
            - $ref: '#/components/schemas/Video'
            - type: 'null'
          description: Video creative content.
        width:
          default: 0
          minimum: 0
          title: Width
          type: integer
      required:
        - name
        - type
      title: CreativeCreate
      type: object
    CreativeResponse:
      properties:
        advertiser_domain:
          anyOf:
            - type: string
            - type: 'null'
          description: Advertiser domain using this creative.
          title: Advertiser Domain
        advertiser_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: Advertiser ID using this creative.
          title: Advertiser Id
        banner:
          anyOf:
            - $ref: '#/components/schemas/BannerResponse'
            - type: 'null'
        created_at:
          format: date-time
          title: Created At
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Optional description of the creative.
          title: Description
        end_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: End Date
        ext:
          default: {}
          description: extension for the creative
          title: Ext
        height:
          description: Height of the creative in pixels.
          minimum: 0
          title: Height
          type: integer
        id:
          description: Unique identifier for the creative (UUID v7).
          format: uuid
          title: Id
          type: string
        name:
          description: Human-readable name of the creative.
          title: Name
          type: string
        native:
          anyOf:
            - $ref: '#/components/schemas/Native'
            - type: 'null'
          description: Native creative content
        'no':
          anyOf:
            - type: integer
            - type: 'null'
          title: 'No'
        owner_id:
          description: User ID of the admin/operator who created the creative.
          format: uuid
          title: Owner Id
          type: string
        start_date:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Start Date
        status:
          $ref: '#/components/schemas/CreativeStatus'
          default: inactive
          description: Status of the creative.
        type:
          $ref: '#/components/schemas/CreativeType'
          description: Type of the creative (e.g., "banner", "video", "native").
        updated_at:
          format: date-time
          title: Updated At
          type: string
        video:
          anyOf:
            - $ref: '#/components/schemas/Video'
            - type: 'null'
        width:
          description: Width of the creative in pixels.
          minimum: 0
          title: Width
          type: integer
      required:
        - id
        - created_at
        - updated_at
        - height
        - name
        - owner_id
        - type
        - width
      title: CreativeResponse
      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
    BannerInput:
      description: 쓰기/입력용 DTO — write 시점에만 URL 스킴을 검증한다.
      properties:
        ext:
          anyOf:
            - $ref: '#/components/schemas/BannerExt'
            - type: 'null'
        img:
          anyOf:
            - type: string
            - type: 'null'
          title: Img
        link:
          anyOf:
            - $ref: '#/components/schemas/LinkAsset'
            - type: 'null'
      title: BannerInput
      type: object
    NativeInput:
      description: 쓰기/입력용 DTO — write 시점에만 URL 스킴을 검증한다.
      properties:
        ext:
          anyOf:
            - $ref: '#/components/schemas/NativeInputExt'
            - type: 'null'
        fields:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ImageFieldInput'
          title: Fields
          type: object
        format_id:
          format: uuid
          title: Format Id
          type: string
        link:
          anyOf:
            - $ref: '#/components/schemas/LinkAsset'
            - type: 'null'
      required:
        - format_id
        - fields
      title: NativeInput
      type: object
    CreativeStatus:
      enum:
        - inactive
        - active
      title: CreativeStatus
      type: string
    CreativeType:
      enum:
        - banner
        - video
        - native
      title: CreativeType
      type: string
    Video:
      properties:
        adm:
          anyOf:
            - type: string
            - type: 'null'
          title: Adm
        api:
          anyOf:
            - items:
                maximum: 65535
                minimum: 0
                type: integer
              type: array
            - type: 'null'
          title: Api
        ctype:
          anyOf:
            - maximum: 65535
              minimum: 0
              type: integer
            - type: 'null'
          title: Ctype
        curl:
          anyOf:
            - type: string
            - type: 'null'
          title: Curl
        dur:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Dur
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        mime:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mime
      title: Video
      type: object
    BannerResponse:
      description: 읽기/응답용 DTO — 저장된 AdCOM Banner를 그대로 노출. 검증 없음.
      properties:
        ext:
          anyOf:
            - $ref: '#/components/schemas/BannerExt'
            - type: 'null'
        img:
          anyOf:
            - type: string
            - type: 'null'
          title: Img
        link:
          anyOf:
            - $ref: '#/components/schemas/LinkAsset'
            - type: 'null'
      title: BannerResponse
      type: object
    Native:
      properties:
        asset:
          anyOf:
            - items:
                $ref: '#/components/schemas/Asset'
              type: array
            - type: 'null'
          title: Asset
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        link:
          anyOf:
            - $ref: '#/components/schemas/LinkAsset'
            - type: 'null'
      title: Native
      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
    BannerExt:
      properties:
        alt:
          anyOf:
            - type: string
            - type: 'null'
          title: Alt
        impression_tracking_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Impression Tracking Url
        show_ad_badge:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Show Ad Badge
      title: BannerExt
      type: object
    LinkAsset:
      properties:
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        trkr:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Trkr
        url:
          title: Url
          type: string
        urlfb:
          anyOf:
            - type: string
            - type: 'null'
          title: Urlfb
      required:
        - url
      title: LinkAsset
      type: object
    NativeInputExt:
      properties:
        impression_tracking_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Impression Tracking Url
        metadata:
          anyOf:
            - type: string
            - type: 'null'
          title: Metadata
        show_ad_badge:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Show Ad Badge
      title: NativeInputExt
      type: object
    ImageFieldInput:
      properties:
        h:
          anyOf:
            - type: integer
            - type: 'null'
          title: H
        url:
          title: Url
          type: string
        w:
          anyOf:
            - type: integer
            - type: 'null'
          title: W
      required:
        - url
      title: ImageFieldInput
      type: object
    Asset:
      properties:
        data:
          anyOf:
            - $ref: '#/components/schemas/DataAsset'
            - type: 'null'
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Id
        image:
          anyOf:
            - $ref: '#/components/schemas/ImageAsset'
            - type: 'null'
        link:
          anyOf:
            - $ref: '#/components/schemas/LinkAsset'
            - type: 'null'
        req:
          anyOf:
            - $ref: '#/components/schemas/IsRequired'
            - type: 'null'
        title:
          anyOf:
            - $ref: '#/components/schemas/TitleAsset'
            - type: 'null'
        video:
          anyOf:
            - $ref: '#/components/schemas/VideoAsset'
            - type: 'null'
      title: Asset
      type: object
    DataAsset:
      properties:
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        len:
          anyOf:
            - type: integer
            - type: 'null'
          title: Len
        type:
          anyOf:
            - $ref: '#/components/schemas/NativeDataAssetType'
            - type: 'null'
        value:
          title: Value
          type: string
      required:
        - value
      title: DataAsset
      type: object
    ImageAsset:
      properties:
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        h:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: H
        type:
          anyOf:
            - $ref: '#/components/schemas/NativeImageAssetType'
            - type: 'null'
        url:
          title: Url
          type: string
        w:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: W
      required:
        - url
      title: ImageAsset
      type: object
    IsRequired:
      enum:
        - 0
        - 1
      title: IsRequired
      type: integer
    TitleAsset:
      properties:
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
        len:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Len
        text:
          title: Text
          type: string
      required:
        - text
      title: TitleAsset
      type: object
    VideoAsset:
      properties:
        adm:
          anyOf:
            - type: string
            - type: 'null'
          title: Adm
        curl:
          anyOf:
            - type: string
            - type: 'null'
          title: Curl
        ext:
          anyOf:
            - {}
            - type: 'null'
          title: Ext
      title: VideoAsset
      type: object
    NativeDataAssetType:
      enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 500
      title: NativeDataAssetType
      type: integer
    NativeImageAssetType:
      enum:
        - 1
        - 2
        - 3
        - 4
        - 500
      title: NativeImageAssetType
      type: integer
  securitySchemes:
    HTTPBearer:
      description: >-
        Bearer authentication. Pass the access token in the `Authorization:
        Bearer <token>` header.
      scheme: bearer
      type: http

````