OptionaladsOptionalaymhAccounts the device may have (AYMH), sent as
client_input_params.aymh_accounts on send_login_request. Device-local
saved-account state, empty on a first login. Optional: absent renders []
(the Genymotion captures); the AVD fresh capture carries one blank entry.
OptionalbatteryThe battery percentage the device reports (0–100), sent as
battery_level on the feed surfaces (feed/timeline,
discover/topical_explore) and on igtv/channel. A device fact the library
cannot measure: absent, every request reads the one shared fallback
(batteryLevelOf in mobile.device.ts: a value simulated from the device
id and the clock), so the surfaces cannot disagree about one device.
OptionalcloudThe Meta cloud trust token stored on the device (two upper-case UUIDs
written back to back, 72 characters), sent by iOS as x-cloud-trust-token.
Optional: how the app derives it on a new device is not recorded, so a
device without it sends no header rather than an invented token.
OptionalcurrentThe keyboard language currently in use (ru-RU), iOS x-ig-device-languages.
OptionaldeviceThe device's hardware decode capability block (hw_av1_dec, chip_name,
core_count, …) as the device holds it; the request that sends it
(clips/discover/stream's device_status) serializes it. The library
models no hardware: absent renders an empty object.
OptionalfamilyPersisted flag: whether the family device id / app-scoped device id pair
has already been synced with the server. A fresh install syncs it once
(FamilyDeviceIDAppScopedDeviceIDSyncMutation); a device that already ran
the sync skips it. Absent means not yet synced (fresh), matching the
Genymotion fresh and cold captures; the warm AVD capture declares it true.
OptionalflashAndroid runtime-permission grants the account-recovery search screen offers
as client_input_params.flash_call_permissions_status. Device state the
library cannot query. Optional: absent renders every permission DENIED
(the login capture's spelling); the recovery recording's device granted
READ_PHONE_STATE.
OptionalgmsGoogle Mobile Services incoming-call-retriever eligibility, sent as
client_input_params.gms_incoming_call_retriever_eligibility on
send_login_request. The 448 login-home action script picks eligible /
not_eligible from a device GMS signal the library cannot query, so it is
device state. Optional: absent renders eligible (the Genymotion
captures); the AVD fresh capture reports not_eligible.
OptionalhasWhether the app holds the camera permission, sent as the timeline's has_camera_permission; absent renders 1.
OptionalisWhether the device is charging, sent as is_charging; absent reads the one shared fallback (isChargingOf), like batteryLevel.
OptionalisDevice foldable state, sent as x-ig-is-foldable. Optional: absent when the
caller does not model the device's fold posture; the Android header layer
renders false then. The AVD fresh capture's device is foldable (true);
the Genymotion captures report false.
OptionalkeyboardThe configured keyboard language (ru-RU), iOS x-ig-device-languages.
OptionalnetworkThe network the device is on, the single source of every network-dependent
wire value (see MobileNetwork). Absent means the default network,
cellular LTE (read it through networkOf): the device generators set it,
and snapshots made before the field existed restore without it.
A device is on a client network, Wi-Fi or cellular LTE. A capture may be recorded on a network the client state does not model (the emulator's Ethernet NIC); that is not a value of this field — the capture tooling attaches it to the device it renders with, out of band.
OptionalnetworkOptional telephony/network profile. Request builders emit it as
si_device_param_network_info only when present.
OptionalpushLazily populated on first Android push registration. See EnsurePushHpkeIdentity.
OptionalradioThe body radio_type, derived from network (radioTypeOf): a
second spelling of the one network fact, kept so a restored device carries
it without re-settling. Absent when the network has no captured body
spelling (the capture-only Ethernet view), and then no builder sends it.
OptionalsystemThe device's system languages in the user's order (['ru-ID', 'id-ID']),
sent by iOS in x-ig-device-languages. Optional: without it the iOS layer
sends the system locale alone.
OptionalsystemThe system locale of the device (ru-ID: Russian language, Indonesian
region), not the app language (language, ru_RU). iOS sends it as
x-ig-device-locale. Optional: without it the iOS header layer renders the
app language in that spelling.
OptionaltimezoneIANA timezone name (TimeZone.getDefault().getID()), sent as
device_timezone_name on feed-surface requests. Optional: absent when the
caller does not model a zone name.
OptionalusdidLazily populated on first USDID-related operation. See EnsureUsdidIdentity.
Whether the device opted out of ad tracking (the tracking permission denied, "Allow Apps to Request to Track" off): iOS sends it as
x-ads-opt-out(1opted out,0allowed). A device fact, not a session one, and not derivable — how the app maps the permission to the header is not recorded. Optional: absent renders0(tracking allowed).