Test Runs

Raw lab measurement data for every test we run.

GET/test_runs

Returns raw lab measurement data. Each test run is a single execution of a specific test on a device, potentially with different variants (lens, lighting, display mode, etc.).

Parameters

Standard PostgREST filtering. Common filters:

FilterEffect
?device_id=eq.apple_iphone_17_pro_maxAll tests for a device
?definition_id=eq.camera_sharpnessAll sharpness tests across devices
?device_id=eq.apple_iphone_17_pro_max
&definition_id=eq.camera_dynamic_range
DR tests for one device
?variant=eq.Main AutoFilter by variant

Response Fields

FieldTypeDescription
test_idstringUnique test run identifier
device_idstringDevice identifier
brandstringManufacturer
modelstringDevice model
definition_idstringTest type (see list below)
variantstringTest variant (e.g., "Main Bright Auto", "Inner", "1x Mid Raw")
paramsobjectTest parameters (lighting, distance, etc.)
metricsobjectAll measured values — structure varies by test type

Available Test Types

Valid definition_id values, grouped by category:

Battery
battery_web_browsing_drainbattery_video_playback_200_nitsbattery_video_playback_max_brightnessbattery_gaming_drainbattery_standby_drain
Camera
camera_sharpnesscamera_colorcamera_dynamic_rangecamera_video_stabilization
Display
display_brightnessdisplay_hdr_brightnessdisplay_sustained_brightnessdisplay_hdr_tone_mappingdisplay_color_accuracydisplay_touch_latency
Performance
performance_geekbench_6performance_speedometerperformance_wild_life_extremeperformance_solar_bayperformance_ai
Speaker
speaker_frequency_rangespeaker_distortionspeaker_max_volume
Charging
charging_wiredcharging_wireless
Other
microphone_frequency_rangeconnectivity_transfer_speedbiometrics_fingerprintbiometrics_facial_recognition

Important Note on metrics

The metrics object structure varies by test type. Refer to the Data Dictionary for the complete field reference for each test type. Some metrics contain deeply nested data — for example, camera_sharpness has a per-patch array, camera_dynamic_range has 41 per-step objects, and charging_wired has a per-percent time series.

Example: Get Camera Sharpness for a Device

Terminal
curl "https://api.bandicootlab.com/rest/v1/test_runs?device_id=eq.apple_iphone_17_pro_max&definition_id=eq.camera_sharpness&limit=3" \
  -H "apikey: YOUR_API_KEY" \
  -H "Accept-Profile: api"

Example Response

Response — 200 (truncated)
[
  {
    "test_id": "tr_a1b2c3d4",
    "device_id": "apple_iphone_17_pro_max",
    "brand": "Apple",
    "model": "iPhone 17 Pro Max",
    "definition_id": "camera_sharpness",
    "variant": "Main Bright Auto",
    "params": {
      "lighting": "bright",
      "mode": "auto",
      "zoom": "1x"
    },
    "metrics": {
      "overall_score_lwph": 2847,
      "adjusted_score_lwph": 2614,
      "sharpness_center_lwph": 3102,
      "sharpness_mid_lwph": 2791,
      "sharpness_corner_lwph": 2248,
      "chromatic_aberration": 0.42,
      "all_patches": [
        {
          "patch_id": 1,
          "region": "center",
          "mtf50_lwph": 3156,
          "mtf30_lwph": 3412
        },
        {
          "patch_id": 2,
          "region": "center",
          "mtf50_lwph": 3048,
          "mtf30_lwph": 3301
        }
        // ... 173 more patches
      ]
    }
  },
  {
    "test_id": "tr_e5f6g7h8",
    "device_id": "apple_iphone_17_pro_max",
    "brand": "Apple",
    "model": "iPhone 17 Pro Max",
    "definition_id": "camera_sharpness",
    "variant": "Main Mid Auto",
    "params": {
      "lighting": "mid",
      "mode": "auto",
      "zoom": "1x"
    },
    "metrics": {
      "overall_score_lwph": 2203,
      "adjusted_score_lwph": 1987,
      "sharpness_center_lwph": 2456,
      "sharpness_mid_lwph": 2148,
      "sharpness_corner_lwph": 1804,
      "chromatic_aberration": 0.58,
      "all_patches": [
        // ... 175 patches
      ]
    }
  }
]

The full metrics structure for each test type is documented in the Data Dictionary.