AppLovin MAX Ad Unit Management API

The MAX Ad Unit Management API allows publishers to programmatically manage their MAX mediation configuration. It supports creating, listing, viewing, and editing ad units across iOS and Android apps; configuring ad network settings, frequency capping, bid floors, and segment-based waterfalls; running A/B experiments on waterfalls; and managing test devices. Authentication uses an Api-Key header containing a Management Key. Rate limit is 2,000 requests per hour.

OpenAPI Specification

applovin-max-ad-unit-management.yaml Raw ↑
openapi: 3.0.3
info:
  title: AppLovin MAX Ad Unit Management API
  version: v1
  x-generated-from: documentation
  x-source-url: https://support.axon.ai/en/max/advanced-features/ad-unit-management-api
  x-last-validated: '2026-05-05'
  description: |
    Programmatic management of AppLovin MAX ad units, waterfalls,
    experiments, and test devices. Authentication uses the `Api-Key` HTTP
    header. Rate limit: 2,000 requests per hour.
  contact:
    name: AppLovin Support
    url: https://support.axon.ai
servers:
  - url: https://o.applovin.com/mediation/v1
    description: AppLovin MAX mediation management host
security:
  - apiKeyHeader: []
tags:
  - name: Ad Units
    description: Ad unit lifecycle and configuration
  - name: Waterfalls
    description: Per-segment waterfall management
  - name: Experiments
    description: Ad unit A/B experiment management
  - name: Test Devices
    description: Test device management
paths:
  /ad_units:
    get:
      operationId: listAdUnits
      summary: List Ad Units
      description: List active ad unit summaries.
      tags:
        - Ad Units
      parameters:
        - name: fields
          in: query
          required: false
          description: Comma-separated optional fields to include.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: Array of ad unit summaries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdUnitSummary'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ad_unit:
    post:
      operationId: createAdUnit
      summary: Create Ad Unit
      description: Create a new ad unit for a given app and platform.
      tags:
        - Ad Units
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - platform
                - package_name
                - ad_format
              properties:
                name:
                  type: string
                platform:
                  type: string
                  enum:
                    - ios
                    - android
                package_name:
                  type: string
                  description: Bundle identifier (iOS) or package name (Android).
                ad_format:
                  type: string
                  enum:
                    - INTER
                    - BANNER
                    - REWARD
                    - MREC
                    - NATIVE
                template_size:
                  type: string
                  description: Template size; native ads only.
      responses:
        '200':
          description: Created ad unit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdUnit'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ad_unit/{ad_unit_id}:
    get:
      operationId: getAdUnit
      summary: Get Ad Unit
      description: Retrieve a single ad unit and its requested fields.
      tags:
        - Ad Units
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
        - name: fields
          in: query
          required: false
          description: |
            Comma-delimited list of optional fields. Supported values:
            `ad_network_settings`, `disabled_ad_network_settings`,
            `frequency_capping_settings`, `bid_floors`, `segments`,
            `banner_refresh_settings`, `mrec_refresh_settings`.
          schema:
            type: string
      responses:
        '200':
          description: Ad unit configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdUnit'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: updateAdUnit
      summary: Update Ad Unit
      description: |
        Apply changes to the ad unit. Only fields included in the request
        body are updated; omitted fields are left unchanged.
      tags:
        - Ad Units
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdUnit'
      responses:
        '200':
          description: Updated ad unit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdUnit'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ad_unit/{ad_unit_id}/{segment_id}:
    get:
      operationId: getAdUnitWaterfall
      summary: Get Ad Unit Waterfall
      description: Retrieve the waterfall configuration for a segment.
      tags:
        - Waterfalls
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
        - $ref: '#/components/parameters/SegmentId'
      responses:
        '200':
          description: Waterfall configuration for the segment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Waterfall'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: updateAdUnitWaterfall
      summary: Update Ad Unit Waterfall
      description: Create, edit, promote, or remove a waterfall for a segment.
      tags:
        - Waterfalls
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
        - $ref: '#/components/parameters/SegmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Waterfall'
      responses:
        '200':
          description: Updated waterfall.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Waterfall'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ad_unit_experiment/{ad_unit_id}:
    get:
      operationId: getAdUnitExperiment
      summary: Get Ad Unit Experiment
      tags:
        - Experiments
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
      responses:
        '200':
          description: Experiment configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdUnitExperiment'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: upsertAdUnitExperiment
      summary: Upsert Ad Unit Experiment
      description: |
        Create, update, promote, or deprecate an ad unit experiment. To
        create, omit or null the `id` field. To promote or deprecate, set
        `promote: true` or `deprecate: true`.
      tags:
        - Experiments
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdUnitExperiment'
      responses:
        '200':
          description: Created or updated experiment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdUnitExperiment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ad_unit_experiment/{ad_unit_id}/{segment_id}:
    get:
      operationId: getAdUnitExperimentWaterfall
      summary: Get Ad Unit Experiment Waterfall
      tags:
        - Experiments
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
        - $ref: '#/components/parameters/SegmentId'
      responses:
        '200':
          description: Experiment waterfall.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Waterfall'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: updateAdUnitExperimentWaterfall
      summary: Update Ad Unit Experiment Waterfall
      tags:
        - Experiments
      parameters:
        - $ref: '#/components/parameters/AdUnitId'
        - $ref: '#/components/parameters/SegmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Waterfall'
      responses:
        '200':
          description: Updated experiment waterfall.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Waterfall'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /test_devices:
    get:
      operationId: listTestDevices
      summary: List Test Devices
      tags:
        - Test Devices
      responses:
        '200':
          description: All test devices (enabled and disabled).
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TestDevice'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /test_device:
    post:
      operationId: createTestDevice
      summary: Create Test Device
      tags:
        - Test Devices
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestDevice'
      responses:
        '200':
          description: Created test device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestDevice'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /test_device/{test_device_id}:
    get:
      operationId: getTestDevice
      summary: Get Test Device
      tags:
        - Test Devices
      parameters:
        - $ref: '#/components/parameters/TestDeviceId'
      responses:
        '200':
          description: Test device configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestDevice'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: updateTestDevice
      summary: Update Test Device
      tags:
        - Test Devices
      parameters:
        - $ref: '#/components/parameters/TestDeviceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestDevice'
      responses:
        '200':
          description: Updated test device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestDevice'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      in: header
      name: Api-Key
      description: Management Key from AppLovin dashboard (Account > General > Keys).
  parameters:
    AdUnitId:
      name: ad_unit_id
      in: path
      required: true
      description: Ad unit identifier.
      schema:
        type: string
    SegmentId:
      name: segment_id
      in: path
      required: true
      description: Segment identifier scoped under the ad unit.
      schema:
        type: string
    TestDeviceId:
      name: test_device_id
      in: path
      required: true
      description: Test device identifier.
      schema:
        type: string
  schemas:
    AdUnit:
      type: object
      description: |
        MAX ad unit configuration. x-schema-source: documentation
      properties:
        id:
          type: string
        name:
          type: string
        platform:
          type: string
          enum:
            - ios
            - android
        package_name:
          type: string
        ad_format:
          type: string
          enum:
            - INTER
            - BANNER
            - REWARD
            - MREC
            - NATIVE
        template_size:
          type: string
        has_active_experiment:
          type: boolean
        disabled:
          type: boolean
        ad_network_settings:
          type: array
          items:
            $ref: '#/components/schemas/AdNetworkSetting'
        disabled_ad_network_settings:
          type: array
          items:
            $ref: '#/components/schemas/AdNetworkSetting'
        frequency_capping_settings:
          type: array
          items:
            $ref: '#/components/schemas/FrequencyCappingSetting'
        bid_floors:
          type: array
          items:
            $ref: '#/components/schemas/BidFloor'
        segments:
          type: array
          items:
            $ref: '#/components/schemas/Segment'
        banner_refresh_settings:
          type: object
          additionalProperties: true
        mrec_refresh_settings:
          type: object
          additionalProperties: true
    AdUnitSummary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        platform:
          type: string
        ad_format:
          type: string
        package_name:
          type: string
        disabled:
          type: boolean
    AdNetworkSetting:
      type: object
      properties:
        ad_network:
          type: string
        ad_network_ad_units:
          type: array
          items:
            $ref: '#/components/schemas/AdNetworkAdUnit'
        cpm:
          type: number
        country_targeting_type:
          type: string
          enum:
            - INCLUDE
            - EXCLUDE
        countries:
          type: array
          items:
            type: string
    AdNetworkAdUnit:
      type: object
      properties:
        ad_network_ad_unit_id:
          type: string
        country_targeting_type:
          type: string
          enum:
            - INCLUDE
            - EXCLUDE
        countries:
          type: array
          items:
            type: string
        cpm:
          type: number
    FrequencyCappingSetting:
      type: object
      properties:
        type:
          type: string
          enum:
            - time
            - session
        day_limit:
          type: integer
        minute_frequency:
          type: integer
        session_limit:
          type: integer
        country_targeting_type:
          type: string
          enum:
            - INCLUDE
            - EXCLUDE
        countries:
          type: array
          items:
            type: string
    BidFloor:
      type: object
      properties:
        country_group_name:
          type: string
        cpm:
          type: number
        countries:
          type: object
          additionalProperties:
            type: number
    Segment:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        id_type:
          type: string
        device_type:
          type: string
        segment_keys:
          type: array
          items:
            type: string
    Waterfall:
      type: object
      properties:
        ad_unit_id:
          type: string
        segment_id:
          type: string
        ad_network_settings:
          type: array
          items:
            $ref: '#/components/schemas/AdNetworkSetting'
        bid_floors:
          type: array
          items:
            $ref: '#/components/schemas/BidFloor'
    AdUnitExperiment:
      type: object
      properties:
        id:
          type: string
        ad_unit_id:
          type: string
        experiment_name:
          type: string
        promote:
          type: boolean
        deprecate:
          type: boolean
        ad_network_settings:
          type: array
          items:
            $ref: '#/components/schemas/AdNetworkSetting'
      required:
        - experiment_name
    TestDevice:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        device_id:
          type: string
          description: IDFA or GAID.
        disabled:
          type: boolean
        network:
          type: string
      required:
        - name
        - device_id
        - disabled
        - network
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
      required:
        - code
  responses:
    BadRequest:
      description: Validation error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid Api-Key header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Authenticated but not allowed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'