Core Technology — Traffic Quality Detection

Device Quality API

Real-time device quality evaluation for programmatic advertising. Assess device signals before bidding to maximize ROI and filter fraudulent traffic.

Core Formula

bid_price = bid_floor × quality_score

Dynamically adjust bid price based on device quality assessment

How It Works

The Device Quality API evaluates device signals in real-time before bidding, enabling intelligent bid decisions that maximize advertising ROI

1. Bid Request

Ad Exchange sends bid request with device & placement info

2. Data Parsing

Parse OpenRTB fields and map to internal semantic structure

3. Quality Evaluation

AI model evaluates device quality and calculates quality_score

4. Bid Calculation

Calculate final bid price: bid_floor × quality_score

5. Decision

Return BID or SKIP decision with risk level and reason codes

Quality Score Impact on Bidding

LOW RISK 1.2x

Premium Device

High-end device, stable network, good viewability metrics. Worth bidding higher to win the impression.

bid_floor: $10.00
quality_score: 1.2
bid_price: $12.00
decision: BID ✓
MEDIUM RISK 0.7x

Average Device

Moderate device quality, some risk signals detected. Bid conservatively below floor price.

bid_floor: $10.00
quality_score: 0.7
bid_price: $7.00
decision: BID ⚠
HIGH RISK 0.0x

Suspicious Device

Fraudulent signals detected — emulator, bot, or invalid traffic. Skip this impression entirely.

bid_floor: $10.00
quality_score: 0.0
bid_price: $0.00
decision: SKIP ✗

Multi-Dimensional Signal Analysis

Our API evaluates device quality across multiple signal dimensions, providing comprehensive and accurate quality assessment

Hardware Profile

Evaluate device hardware characteristics including brand, model, and device type to identify premium vs low-quality devices.

brand hardware_profile.brand
model hardware_profile.model
device_type hardware_profile.device_type

OS Profile

Analyze operating system family and version to detect outdated or suspicious OS configurations.

os_family os_profile.os_family
os_version os_profile.os_version

Geo Profile

Verify geographic location data including coordinates and country code to detect location spoofing.

latitude / longitude geo_profile
country_code geo_profile.country_code

Network Profile

Assess network conditions including carrier and connection type to evaluate traffic quality and user context.

carrier_code network_profile.carrier_code
connection_type network_profile.connection_type

Screen Profile

Validate screen dimensions to detect emulators and ensure ad creative renders properly on the device.

screen_width screen_profile.screen_width
screen_height screen_profile.screen_height

Placement & Delivery

Evaluate ad placement characteristics including size, position, interstitial flag, and viewability metrics.

placement size & position placement_profile
bid_floor & viewability delivery_profile

OpenRTB Field Mapping

Seamless translation from standard OpenRTB bid request fields to our semantic Device Quality API structure

OpenRTB Field Device Quality API Field Description
device.uadevice_profile.user_agentUser agent string
device.geo.latgeo_profile.latitudeLatitude
device.geo.longeo_profile.longitudeLongitude
device.geo.countrygeo_profile.country_codeCountry code (ISO 3166-1)
device.carriernetwork_profile.carrier_codeCarrier / ISP code
device.connectiontypenetwork_profile.connection_typeConnection type (WiFi, 4G, 5G...)
device.languagelocale_profile.languageDevice language
device.makehardware_profile.brandDevice manufacturer
device.modelhardware_profile.modelDevice model
device.devicetypehardware_profile.device_typeDevice type (phone, tablet...)
device.osos_profile.os_familyOS family (android, ios...)
device.osvos_profile.os_versionOS version
device.ifadevice_id_profile.advertising_idAdvertising ID (GAID/IDFA)
device.wscreen_profile.screen_widthScreen width in pixels
device.hscreen_profile.screen_heightScreen height in pixels
OpenRTB Field Device Quality API Field Description
app.nameapplication_profile.app_nameApplication name
app.verapplication_profile.app_versionApplication version
app.bundleapplication_profile.app_bundleApp bundle ID (e.g. com.app.name)
app.publisher.idpublisher_profile.publisher_idPublisher identifier
OpenRTB Field Device Quality API Field Description
imp[i].banner.wplacement_profile.placement_widthAd placement width
imp[i].banner.hplacement_profile.placement_heightAd placement height
imp[i].banner.posplacement_profile.placement_positionAd position on page
imp[i].tagidplacement_profile.tag_idPlacement tag identifier
imp[i].instlplacement_profile.is_interstitialIs interstitial ad
imp[i].bidfloordelivery_profile.bid_floorMinimum bid price
imp[i].clickbrowserdelivery_profile.open_in_browser_on_clickOpen in browser on click
imp[i].displaymanagerrendering_profile.display_managerDisplay manager name
imp[i].displaymanagerverrendering_profile.display_manager_versionDisplay manager version
imp[i].securesecurity_profile.is_secureRequires HTTPS
imp[i].metric[j].typequality_metrics.metric_typeMetric type (e.g. viewability)
imp[i].metric[j].valuequality_metrics.metric_valueMetric value (0-1)
imp[i].metric[j].vendorquality_metrics.metric_vendorMetric vendor

API Reference

Complete request and response examples for the Device Quality evaluation endpoint

POST /v1/device-quality/evaluate
Content-Type: application/x-protobuf Accept: application/json

Request Body (JSON)

{
  "context": {
    "request_id": "req-001",
    "request_source": "sdk",
    "timestamp_ms": 1775606400123
  },
  "device_profile": {
    "user_agent": "Mozilla/5.0...",
    "geo_profile": {
      "latitude": 25.14,
      "longitude": 75.86,
      "country_code": "IND"
    },
    "network_profile": {
      "carrier_code": "70227",
      "connection_type": 6
    },
    "locale_profile": {
      "language": "en"
    },
    "hardware_profile": {
      "brand": "Vivo",
      "model": "V2356",
      "device_type": 4
    },
    "os_profile": {
      "os_family": "android",
      "os_version": "15"
    },
    "device_id_profile": {
      "advertising_id": "xxx"
    },
    "screen_profile": {
      "screen_width": 384,
      "screen_height": 860
    }
  },
  "application_profile": {
    "app_name": "FreeReels",
    "app_version": "2.2.30",
    "app_bundle": "com.freereels.app",
    "publisher_profile": {
      "publisher_id": "pub-xxx"
    }
  },
  "exposure_signals": [
    {
      "placement_profile": {
        "placement_width": 384,
        "placement_height": 785,
        "placement_position": 7,
        "tag_id": "tag-1",
        "is_interstitial": true
      },
      "delivery_profile": {
        "bid_floor": 10.0,
        "open_in_browser_on_click": true
      },
      "rendering_profile": {
        "display_manager": "GoogleMobileAds",
        "display_manager_version": "24.8.0"
      },
      "security_profile": {
        "is_secure": true
      },
      "quality_metrics": [
        {
          "metric_type": "viewability",
          "metric_value": 0.97,
          "metric_vendor": "EXCHANGE"
        }
      ]
    }
  ]
}

Response Body (JSON)

{
  "request_id": "req-001",
  "results": [
    {
      "tag_id": "tag-1",
      "bid_floor": 10.0,
      "quality_score": 1.2,
      "bid_price": 12.0,
      "risk_level": "LOW",
      "reason_codes": ["GOOD_DEVICE"],
      "recommended_to_bid": true,
      "decision": "BID",
      "model_version": "v2.1.0"
    }
  ],
  "summary": {
    "total_exposure_count": 1,
    "eligible_exposure_count": 1,
    "trace_id": "trace-abc-123"
  }
}

Response Fields Explained

quality_score

Core quality coefficient (X). Multiplied by bid_floor to get final bid price. >1.0 = premium, <1.0 = discount, 0 = skip.

bid_price

Final recommended bid price = bid_floor × quality_score.

risk_level

Risk assessment: LOW (safe), MEDIUM (caution), HIGH (likely fraud).

reason_codes

Array of rule codes explaining the quality assessment (e.g. GOOD_DEVICE, EMULATOR_DETECTED).

decision

Final recommendation: BID (participate in auction) or SKIP (abandon this impression).

Request Data Architecture

The API request is organized into three major signal groups, each containing structured sub-profiles for comprehensive device evaluation

device_profile

Who is the user? What device are they on? Where are they?

hardware_profile brand, model, type
os_profile family, version
geo_profile lat, lon, country
network_profile carrier, conn type
screen_profile width, height
device_id_profile advertising_id
locale_profile language

application_profile

Which app is the user in? Who published it?

app_name e.g. FreeReels
app_version e.g. 2.2.30
app_bundle com.freereels.app
publisher_profile publisher_id

exposure_signals[]

What's the ad opportunity? How much is it worth?

placement_profile size, position, tag
delivery_profile bid_floor, click
rendering_profile display manager
security_profile is_secure
quality_metrics[] viewability, etc.

Ready to Optimize Your Bidding Strategy?

Integrate the Device Quality API to start making smarter bidding decisions, reduce wasted ad spend, and maximize your advertising ROI.