MediaMath · AsyncAPI Specification

Mediamath Webhooks

Version

View Spec View on GitHub Programmatic AdvertisingDSPDemand-Side PlatformCampaign ManagementAdTechBiddingAudience SegmentsCreative ManagementReportingAnalyticsAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://apidocs.mediamath.com/guides/byoa/custom-bid-router/win-notification,
  https://apidocs.mediamath.com/guides/byoa/custom-bid-router/about,
  https://apidocs.mediamath.com/guides/byoa/custom-bid-router/request-and-response-examples,
  https://apidocs.mediamath.com/guides/server-to-server,
  https://github.com/MediaMath/bid-valuator-endpoint-java
asyncapi_published: false
note: >-
  MediaMath publishes no AsyncAPI document. It DOES operate a real
  provider-to-customer push surface: the Custom Bid Router delivers bid requests
  and win notifications to customer-hosted HTTPS endpoints, with a published
  protobuf schema and a documented latency budget. That surface is captured here
  as a webhook catalog rather than fabricated into an AsyncAPI document.

  This is not a conventional "webhook" product — there is no subscribe-by-URL
  self-service. Endpoints are registered through the BYOA Custom Bid Router
  configuration API and the traffic is real-time bidding, so the operational
  characteristics (400ms deadline, no retries, sampling) are unlike a normal
  event webhook and are recorded explicitly.

transport:
  protocol: HTTPS
  direction: MediaMath -> customer endpoint
  content_types:
    - application/json
    - application/protobuf
  note: Content type is fixed per endpoint at configuration time.

webhooks:
  - name: bid-request
    title: Custom Bid Router bid request
    description: >-
      MediaMath forwards live bid opportunities to a customer-operated Custom Bid
      Router endpoint, which returns a bid valuation. OpenRTB-shaped.
    docs: https://apidocs.mediamath.com/guides/byoa/custom-bid-router/about
    schema:
      format: protobuf
      file: null
      reference: https://github.com/MediaMath/bid-valuator-endpoint-java/blob/master/src/main/proto/google/openrtb/openrtb.proto
      note: Vendored google/openrtb/openrtb.proto in the reference endpoint implementation. Not copied into this repo — it is the IAB/Google OpenRTB schema, not a MediaMath-authored one.
    endpoint_type: bid
    latency_budget_ms: null
    retries: null
    logging: S3 delivery of bid request/response logs is configurable.
    logging_docs: https://apidocs.mediamath.com/guides/byoa/custom-bid-router/setting-up-s3-logs

  - name: win-notice
    title: Win Notification
    description: >-
      Delivered to configured Custom Bid Router endpoints within seconds of
      winning an auction, carrying auction, pricing, entity and user identifiers.
    docs: https://apidocs.mediamath.com/guides/byoa/custom-bid-router/win-notification
    endpoint_type: win
    schema:
      format: protobuf
      syntax: proto2
      message: com.mediamath.winnotice.WinNotification
      file: grpc/mediamath-winnotice.proto
      source: https://github.com/MediaMath/bid-valuator-endpoint-java/blob/master/src/main/proto/mediamath/winnotice/winnotice.proto
      fields:
        - name: ExchangeAuctionID
          type: string
          description: Exchange auction ID as received from the SSP.
        - name: AuctionID
          type: int64
          description: MediaMath-unique auction ID.
        - name: BidPriceCpm
          type: double
          description: Bid price at CPM level in USD.
        - name: ClearPriceCpm
          type: double
          description: CPM cost reported by the SSP after winning.
        - name: TotalSpend
          type: double
          description: Total spend CPM including all tracked fees.
        - name: MmUuid
          type: string
          description: Identifier for the user who received the ad.
        - name: AdvertiserID
          type: int64
        - name: CampaignID
          type: int64
        - name: StrategyID
          type: int64
        - name: CreativeID
          type: int64
        - name: BidTimestamp
          type: string
          description: Unix timestamp at second resolution, UTC.
    delivery:
      timing: within seconds of the win
      request_headers:
        - 'Content-Type: application/protobuf'
        - 'X-Timeout: 400'
      deadline_ms: 400
      deadline_behaviour: >-
        Custom Bid Router sets a 400ms deadline for the win-notification
        response. Exceeding it logs an error on the Grafana dashboard.
      retries: false
      retry_note: >-
        "Custom Bid Router does not implement a retry logic in case the Win
        Notification does not deliver successfully." A missed win notice is lost.
      s3_logging: false
      s3_logging_note: Logging to S3 is not supported for win notifications.
    sampling:
      default_rate: 100
      configurable: true
      scope: Adjustable collectively for all endpoints of an executor.
      example_call: >-
        PATCH https://api.byoa.mediamath.com/custombidrouter/{org_id}/executors/{id}
        with {"sample_rate": 75, "endpoint_type": "win"}
    configuration:
      registered_via: BYOA Custom Bid Router configuration API
      spec: openapi/mediamath-byoa-api-openapi.yml
      required_field: endpoint_type must be set to "win"

adjacent_data_surfaces:
  - name: Server-to-Server Data Distribution
    kind: batch/streaming ingest (customer -> MediaMath)
    docs: https://apidocs.mediamath.com/guides/server-to-server
    base: https://s2s-api.datasvc.mediamath.com
    note: Audience/segment data ingest, not an event push from MediaMath.
  - name: Audience Event Onboarding
    kind: real-time ingest (customer -> MediaMath)
    docs: https://apidocs.mediamath.com/guides/audience-onboarding
    base: https://ingest-default.prod.octane.mediamath.com
  - name: Bid Request Firehose (BOF)
    kind: streaming egress (MediaMath -> third-party consumer)
    docs: https://apidocs.mediamath.com/apis/bof-api-v1
    spec: openapi/mediamath-bof-config-api-openapi.yml
    note: >-
      Ingests bid opportunities from MediaMath bidders and filters/batches them
      to third parties per a consumer config. The config API is captured; the
      stream format itself is not published.
  - name: Log Level Data Service
    kind: batch file delivery
    docs: https://apidocs.mediamath.com/apis/log-level-data-service
  - name: Cloud File Transfer
    kind: batch file delivery
    docs: https://apidocs.mediamath.com/guides/cloud-file-transfer

gaps:
  - No AsyncAPI document for any of the push or streaming surfaces.
  - No general-purpose entity webhooks (campaign/strategy/creative state changes) — an agent cannot subscribe to platform events, only poll.
  - Win notifications have no retry and no dead-letter path; delivery is best-effort.