MOLOCO Decision API

The Decision API from MOLOCO — 4 operation(s) for decision.

Operations 4

POST /rmp/decision/v1/platforms/{platform_id}/brand-auction DecideAdBrands #
POST /rmp/decision/v1/platforms/{platform_id}/display-auction DecideAdDisplay #
POST /rmp/decision/v1/platforms/{platform_id}/product-auction DecideAdProducts #
POST /rmp/decision/v1/platforms/{platform_id}/reserved-display-ads DecideAdReservedDisplay #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/moloco-decision-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

moloco-decision-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Moloco Decision API
  version: '1.0'
  contact:
    name: Moloco Inc.
    url: https://www.molocoads.com
  description: 'Operations tagged Decision across 2 of this provider''s published API definitions: mcm-decision-api.json, moloco-commerce-media-decision-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://sandbox-dcsn.mcm-api.moloco.com
security:
- ApiKeyAuth: []
tags:
- name: Decision
paths:
  /rmp/decision/v1/platforms/{platform_id}/brand-auction:
    post:
      summary: DecideAdBrands
      description: Request brand ads by auction. Server host may vary by platform. Moloco's staff will provide accurate host information.
      operationId: RmpDecisionApi_DecideAdBrands
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionBrandsResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionBrandsInput'
        required: true
      tags:
      - Decision
    servers:
    - url: https://sandbox-dcsn.mcm-api.moloco.com
  /rmp/decision/v1/platforms/{platform_id}/display-auction:
    post:
      summary: DecideAdDisplay
      description: Request display ads by auction. Server host may vary by platform. Moloco's staff will provide accurate host information.
      operationId: RmpDecisionApi_DecideAdDisplay
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionDisplayResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionDisplayInput'
        required: true
      tags:
      - Decision
    servers:
    - url: https://sandbox-dcsn.mcm-api.moloco.com
  /rmp/decision/v1/platforms/{platform_id}/product-auction:
    post:
      summary: DecideAdProducts
      description: Request product ads by auction. Server host may vary by platform. Moloco's staff will provide accurate host information.
      operationId: RmpDecisionApi_DecideAdProducts
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionProductsResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionProductsInput'
        required: true
      tags:
      - Decision
    servers:
    - url: https://sandbox-dcsn.mcm-api.moloco.com
  /rmp/decision/v1/platforms/{platform_id}/reserved-display-ads:
    post:
      summary: DecideAdReservedDisplay
      description: Request reserved display ads. Server host may vary by platform. Moloco's staff will provide accurate host information.
      operationId: RmpDecisionApi_DecideAdReservedDisplay
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicDecisionReservedDisplayResponse'
        '400':
          description: Bad request. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '401':
          description: Unauthorized. The request does not have valid authentication credentials for the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '403':
          description: Permission denied. The caller does not have permission to execute the specified operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '404':
          description: Not found. One or more resources required to perform the request does not exist. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too many requests either by platform or by user. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '500':
          description: Internal server error. Detailed cause can be found in the response message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: platform_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicDecisionReservedDisplayInput'
        required: true
      tags:
      - Decision
    servers:
    - url: https://sandbox-dcsn.mcm-api.moloco.com
components:
  schemas:
    publicDecisionProductsResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Identical with `request_id` of the corresponding request.
        decisions:
          type: array
          items:
            $ref: '#/components/schemas/publicProductDecision'
          description: The results of product decisions.
        invalid_input_warnings:
          type: array
          items:
            $ref: '#/components/schemas/v1InvalidInputWarning'
          description: Warnings of the invalid input that are impacting the ads serving
      required:
      - request_id
      additionalProperties: true
    DeduplicationSettingCriteria:
      type: string
      enum:
      - CRITERIA_DEFAULT
      - CRITERIA_NONE
      - CRITERIA_ITEM_ID
      - CRITERIA_AD_ACCOUNT_ID
      - CRITERIA_CAMPAIGN_ID
      - CRITERIA_LINE_ITEM_ID
      default: CRITERIA_DEFAULT
      description: "Criteria defines the attributes used to identify duplicate ads.\n\n - CRITERIA_DEFAULT: Uses the system default deduplication criteria. Currently defaults to CRITERIA_NONE.\n - CRITERIA_NONE: Does not deduplicate ads. Basic built-in deduplication always applies at the per_inventory level and cannot be disabled, even with CRITERIA_NONE. Examples include Item ID for DecideAdProducts, Campaign ID for DecideAdBrands and DecideAdDisplay, and Line Item ID for DecideAdReservedDisplay.\n - CRITERIA_ITEM_ID: Deduplicates ad responses by item ID. Applicable to the DecideAdProducts API only.\n - CRITERIA_AD_ACCOUNT_ID: Deduplicates ad responses by ad account ID. Applicable to the DecideAdBrands, DecideAdDisplay, and DecideAdReservedDisplay APIs only.\n - CRITERIA_CAMPAIGN_ID: Deduplicates ad responses by campaign ID. Applicable to the DecideAdBrands and DecideAdDisplay APIs only.\n - CRITERIA_LINE_ITEM_ID: Deduplicates ad responses by line item ID. Applicable to the DecideAdReservedDisplay API only."
    publicLandingPageProductListSetting:
      type: object
      description: ProductList option setting indicating that it should render product list page with responded items.
      additionalProperties: true
    publicBrandDecision:
      type: object
      properties:
        inventory_id:
          type: string
        ads:
          type: array
          items:
            $ref: '#/components/schemas/publicBrandAd'
          description: Ads to be displayed for the inventory.
      required:
      - inventory_id
      - ads
      additionalProperties: true
    v1Filtering:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/FilteringCategory'
        location:
          $ref: '#/components/schemas/v1FilteringLocation'
        brand:
          $ref: '#/components/schemas/FilteringBrand'
        delivery:
          $ref: '#/components/schemas/FilteringDelivery'
        price:
          $ref: '#/components/schemas/FilteringPrice'
        sale_price:
          $ref: '#/components/schemas/FilteringSalePrice'
        rating:
          $ref: '#/components/schemas/FilteringRating'
        review_count:
          $ref: '#/components/schemas/FilteringReviewCount'
        color:
          $ref: '#/components/schemas/FilteringColor'
        gender:
          $ref: '#/components/schemas/FilteringGender'
        size:
          $ref: '#/components/schemas/FilteringSize'
        material:
          $ref: '#/components/schemas/FilteringMaterial'
        pattern:
          $ref: '#/components/schemas/FilteringPattern'
        condition:
          $ref: '#/components/schemas/FilteringCondition'
        age_group:
          $ref: '#/components/schemas/FilteringAgeGroup'
      description: This field is used to filter ads based on a variety of criteria. Multiple filtering criteria are considered in an AND relationship. This means that an ad must meet all of the filtering criteria in order to be displayed. We support up to 5 simultaneous filtering criteria.
      additionalProperties: true
    v1InventoryItem:
      type: object
      properties:
        item_id:
          type: string
        item_group_id:
          type: string
      description: Item on the inventory page. e.g., Item being shown in a product detail page.
      required:
      - item_id
      additionalProperties: true
    publicAdAuctionResult:
      type: object
      properties:
        ad_account_id:
          type: string
          description: The ID of the owning ad account. The relationship among platform, ad account, and campaign is explained on https://mcm-docs.moloco.com/docs/2-solution-components. In short, a platform has many sellers, and each seller corresponds to an ad account. One ad account can own many ad campaigns.
        campaign_id:
          type: string
          description: The ID of the owning ad campaign. Refer to ad_account_id for relationship among platforms, ad accounts, and campaigns.
        win_price:
          $ref: '#/components/schemas/commonMoneyMicro'
        win_price_advertiser:
          $ref: '#/components/schemas/commonMoneyMicro'
        campaign_metadata:
          $ref: '#/components/schemas/v1CampaignMetadata'
      description: AdAuctionResult contains auction specific information of the ad such as ad_account_id and campaign_id.
      required:
      - ad_account_id
      - campaign_id
      additionalProperties: true
    publicReservedDisplayDecision:
      type: object
      properties:
        inventory_id:
          type: string
          description: Inventory ID which requested ads.
        ads:
          type: array
          items:
            $ref: '#/components/schemas/publicReservedDisplayAd'
          description: Reserved ads to be displayed for the inventory.
      required:
      - inventory_id
      additionalProperties: true
    v1User:
      type: object
      properties:
        user_id:
          type: string
          description: User identifier used by the platform. This should typically be the sign-in ID used within the platform, and is highly recommended to be hashed prior to being sent to Moloco. Please provide this value whenever available to achieve optimal performance. If the value is unknown for any reason, please leave empty and do not fill in a default or random value.
          maxLength: 128
        interests:
          type: array
          items:
            type: string
          description: Interests of the user. e.g. ["sports", "outdoor"]
      description: User who gets recommended products or product ads.
      additionalProperties: true
    CampaignMetadataAdOperationType:
      type: string
      enum:
      - AD_OPERATION_TYPE_DEFAULT
      - AD_OPERATION_TYPE_SELF_SERVED
      - AD_OPERATION_TYPE_MANAGED
      default: AD_OPERATION_TYPE_DEFAULT
    v1BrandInventory:
      type: object
      properties:
        inventory_id:
          type: string
          description: A unique identifier for the inventory that the platform manage. It is used for ad decision, analytics, reporting, ad decision etc. An inventory represents a place (a mobile screen, a web page, etc.) where your ads will be displayed. Common inventories in retail marketplaces include Home, Product detail page (PDP), Search Result Page (SRP), Category page, Checkout page.
        num_ads:
          type: integer
          format: int32
          description: Optional. Number of ads requested for the inventory. 1 by default.
        items:
          type: array
          items:
            type: string
          description: The main item ids of the page. For example, homepage inventories don't have any main items, and product-detail-page inventories have one main item.
        categories:
          type: array
          items:
            type: string
          description: 'Categories of the page: This contextual data is used for ML training and not for other purposes such as filtering. Each category string has a hierarchy separated by ''>''. For example, "Sports & Fitness > Athletic Clothing > Shoes" represents a category with three different levels of hierarchy.'
        search_query:
          type: string
          description: Search query string. It should be provided if the page of serving inventory is a search result page.
        video:
          $ref: '#/components/schemas/v1VideoInventory'
        targeting:
          $ref: '#/components/schemas/v1Targeting'
        filtering:
          $ref: '#/components/schemas/v1Filtering'
      description: Inventory where the brand ad will be displayed.
      required:
      - inventory_id
      additionalProperties: true
    v1SearchMetadata:
      type: object
      properties:
        synonyms:
          type: array
          items:
            type: string
          description: 'Synonyms of the search query. For the search query "car" as an example, a client can put the synonyms in this field like `"synonyms": ["vehicle", "automobile"]`.'
      description: Metadata of the search query. This field can be used to provide additional information about the search query which may improve the response quality of the search inventories.
      additionalProperties: true
    FilteringReviewCount:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Required. Only ads with review count greater than or equal to min review_count will be served.
        max:
          type: number
          format: double
          description: Required. Only ads with review count less than or equal to max review_count will be served.
      description: This field is used to filter ads based on review count.
      required:
      - min
      - max
      additionalProperties: true
    DeduplicationSettingMethod:
      type: string
      enum:
      - METHOD_DEFAULT
      - METHOD_WATERFALL
      - METHOD_INTERLEAVED
      default: METHOD_DEFAULT
      description: "Method defines how duplicate ads are resolved.\n\n - METHOD_DEFAULT: Uses the system default deduplication method. Currently defaults to METHOD_WATERFALL.\n - METHOD_WATERFALL: Resolves duplicate ads by prioritizing inventories that appear earlier in the request. When duplicate ads appear in multiple inventories, the ads are kept in the earliest inventory and removed from later inventories.\n - METHOD_INTERLEAVED: Resolves duplicate ads by prioritizing higher-ranking ads. A higher-ranking ad appears earlier in the response for its inventory. If duplicate ads have the same rank, the inventory that appears earlier in the decision request is prioritized. Ad rankings may shift after deduplication is applied."
    publicDecidedReservedAssetBanner:
      type: object
      properties:
        media_type:
          $ref: '#/components/schemas/commonMediaType'
        image_url:
          type: string
          description: Image URL of the banner. Only filled if banner media type is IMAGE
        alt_text:
          type: string
          description: Alternative text for the banner image.
      additionalProperties: true
    FilteringAgeGroup:
      type: object
      properties:
        age_groups:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given age groups will be served.
      description: This field is used to filter ads based on age groups.
      required:
      - age_groups
      additionalProperties: true
    v1DecidedProductAuctionResult:
      type: object
      properties:
        ad_account_id:
          type: string
          description: The ID of the owning ad account. The relationship among platform, ad account, and campaign is explained on https://mcm-docs.moloco.com/docs/2-solution-components. In short, a platform has many sellers, and each seller corresponds to an ad account. One ad account can own many ad campaigns.
        campaign_id:
          type: string
          description: The ID of the owning ad campaign. Refer to ad_account_id for relationship among platforms, ad accounts, and campaigns.
        win_price:
          $ref: '#/components/schemas/commonMoneyMicro'
        campaign_metadata:
          $ref: '#/components/schemas/v1CampaignMetadata'
        win_price_advertiser:
          $ref: '#/components/schemas/commonMoneyMicro'
      description: AuctionResult contains auction specific information of the item such as ad_account_id and campaign_id.
      required:
      - ad_account_id
      - campaign_id
      additionalProperties: true
    commonPersonalizationMode:
      type: string
      enum:
      - UNKNOWN_PERSONALIZATION_MODE
      - STANDARD
      - METRIC_ONLY
      - ID_LESS
      default: UNKNOWN_PERSONALIZATION_MODE
      description: "PersonalizationMode determines how user identification is handled in decision and event processing.\n\n - STANDARD: STANDARD means standard user processing with full user identification.\n - METRIC_ONLY: METRIC_ONLY means user data is used for metric collection only, not for personalization.\n - ID_LESS: ID_LESS means no user identification is used."
    v1publicCampaignLandingPageType:
      type: string
      enum:
      - UNKNOWN_LANDING_PAGE_TYPE
      - CUSTOM_URL
      - PRODUCT_DETAIL
      - PRODUCT_LIST
      - NONE
      default: UNKNOWN_LANDING_PAGE_TYPE
    FilteringRating:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Required. Only ads with rating greater than or equal to min rating will be served.
        max:
          type: number
          format: double
          description: Required. Only ads with rating less than or equal to max rating will be served.
      description: This field is used to filter ads based on rating.
      required:
      - min
      - max
      additionalProperties: true
    commonCurrency:
      type: string
      enum:
      - UNKNOWN_CURRENCY
      - USD
      - KRW
      - JPY
      - EUR
      - GBP
      - SEK
      - INR
      - THB
      - IDR
      - CNY
      - CAD
      - RUB
      - BRL
      - SGD
      - HKD
      - AUD
      - PLN
      - DKK
      - VND
      - MYR
      - PHP
      - TRY
      - VES
      - AED
      - CHF
      default: UNKNOWN_CURRENCY
      description: "Currency enumerates available currencies.\n\n - UNKNOWN_CURRENCY: Unknown currency.\n - USD: US Dollar.\n - KRW: Korean Won.\n - JPY: Japanese Yen.\n - EUR: EU Euro.\n - GBP: British Pound.\n - SEK: Swedish Krona.\n - INR: India Rupee.\n - THB: Thailand Baht.\n - IDR: Indonesia Rupiah.\n - CNY: China Yuan.\n - CAD: Canada Dollar.\n - RUB: Russia Ruble.\n - BRL: Brazil Real.\n - SGD: Singapore Dollar.\n - HKD: Hong Kong Dollar.\n - AUD: Autrailia Dollar.\n - PLN: Poland Zloty.\n - DKK: Denmark Krone.\n - VND: Viet Nam Dong.\n - MYR: Malaysia Ringgit.\n - PHP: Philippines Peso.\n - TRY: Turkey Lira.\n - VES: Venezuela Bolívar Soberano.\n - AED: United Arab Emirates Dirham.\n - CHF: Swiss Franc."
    publicDecidedReservedAssetMetadata:
      type: object
      properties:
        attributes:
          type: object
          additionalProperties:
            type: string
          description: Key-value metadata attributes.
      additionalProperties: true
    CustomItemContext:
      type: object
      properties:
        shipping_charge:
          $ref: '#/components/schemas/commonMoneyMicro'
        distance:
          type: number
          format: float
          description: Distance to the user from where this specific item is located. There is no requirement on the unit of distance as long as the implied unit is consistently used when communicating with Moloco.
        discount:
          $ref: '#/components/schemas/commonDiscount'
      additionalProperties: true
    commonDiscount:
      type: object
      properties:
        rate:
          type: number
          format: float
          description: Discount rate for the item (e.g., 0.15 for 15% discount). Applied before price_amount if both are non-zero.
        price_amount:
          $ref: '#/components/schemas/commonMoneyMicro'
      description: Discount from the original price defined either using rate or a price amount, or both.
      additionalProperties: true
    FilteringSize:
      type: object
      properties:
        sizes:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given sizes will be served.
      description: This field is used to filter ads based on sizes.
      required:
      - sizes
      additionalProperties: true
    TargetingKeyValue:
      type: object
      properties:
        key_id:
          type: string
          description: Key ID for the request
        value_ids:
          type: array
          items:
            type: string
          description: Value IDs for the key
      description: Key value sets for the ad request
      required:
      - key_id
      additionalProperties: true
    publicDecisionBrandsResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Identical with `request_id` of the corresponding request.
        decisions:
          type: array
          items:
            $ref: '#/components/schemas/publicBrandDecision'
          description: The results of brand decisions.
        invalid_input_warnings:
          type: array
          items:
            $ref: '#/components/schemas/v1InvalidInputWarning'
          description: Warnings of the invalid input that are impacting the ads serving
      required:
      - request_id
      additionalProperties: true
    v1LineItemMetadataField:
      type: string
      enum:
      - FIELD_UNKNOWN
      - ALIAS
      - AD_PAYER
      default: FIELD_UNKNOWN
    FilteringSalePrice:
      type: object
      properties:
        min_sale_price:
          type: number
          format: double
          description: Required. Only ads with sale price greater than or equal to min_sale_price will be served. Prices are in platform's default currency.
        max_sale_price:
          type: number
          format: double
          description: Required. Only ads with sale price less than or equal to max_sale_price will be served. Prices are in platform's default currency.
      description: This field is used to filter ads based on sale price.
      required:
      - min_sale_price
      - max_sale_price
      additionalProperties: true
    publicDecidedAssetHeadline:
      type: object
      properties:
        text:
          type: string
          description: Text content of the headline.
      additionalProperties: true
    publicDecisionReservedDisplayInput:
      type: object
      properties:
        request_id:
          type: string
          description: Unique identifier of the request. The client is responsible to create this value.
          maxLength: 128
        user:
          $ref: '#/components/schemas/v1User'
        device:
          $ref: '#/components/schemas/v1Device'
        custom_id:
          type: string
          description: Alternative ID to track users regardless of sign-in status or device. This ID should be provided as a third option following the user.user_id and device.persistent_id, and is highly recommended to be hashed prior to being sent to Moloco. This ID must be provided if both the user.user_id and device.persistent_id fields are left empty. Please do not fill in a default value, and instead randomize it if you must, but we recommend you send some ID that can be used to track users even if for a short time span. Please reach out to Moloco if you have further questions about this ID.
          maxLength: 128
        inventories:
          type: array
          items:
            $ref: '#/components/schemas/v1ReservedDisplayInventory'
        channel_type:
          $ref: '#/components/schemas/commonChannelType'
        domain:
          type: string
          description: Set domain to a value that can identify the domain portion of your website's URL. We recommend you keep the same value across your website and application if they share your backend.
        page_id:
          type: string
          description: "ID of the page where the ads will be displayed. It is a mandatory field if the Ad Placement (Inventory) is configured to use the PAGE_VIEW event type. \nIf the ad placement is configured to use this Event type, please ensure that the 'page_id' value is consistent with the value you’re passing via the User Event API. If the ad placement is not configured to use the PAGE_VIEW event type, it is not required to have a value for the 'page_id' parameter."
        personalization_mode:
          $ref: '#/components/schemas/commonPersonalizationMode'
        response_setting:
          $ref: '#/components/schemas/v1LineItemResponseSetting'
        deduplication_setting:
          $ref: '#/components/schemas/v1DeduplicationSetting'
      description: Request body for reserved display ads decision.
      required:
      - request_id
      - inventories
      additionalProperties: true
    FilteringMaterial:
      type: object
      properties:
        materials:
          type: array
          items:
            type: string
          description: Required. Only ads matching any of the given materials will be served.
      description: This field is used to filter ads based on materials.
      required:
      - materials
      additionalProperties: true
    v1FilteringLocation:
      type: object
      properties:
        locations:
          type: array
          items:
            type: string
          description: 'Each location is defined using a multi-level hierarchy, such as US>CA>Redwood. The list of locations provided is combined using OR logic to form a union, which is then used for location-based filtering. For example, if an ad is configured to show only to users in US > CA, and the incoming location values are {"US>CA", "US>WA"}, the ad will match. However, if the values are {"US>NY", "US>WA"}, the ad will not match because neither of them meets the filter condition.

            When an ad request includes a location filter, it will match not only that location but also all of its sub-locations. For example, if the request specifies "US>WA", it will match items in "US>WA>Seattle”" or "US>WA>Bellevue". This is because broader locations automatically include everything nested underne

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moloco/refs/heads/main/openapi/moloco-decision-api-openapi.yml