IGPAPI
    Preparing search index...

    Interface RequestFeatures

    Explicit per-request wire capabilities, grouped by the app state they describe. Request builders set them in RequestContext.features; the platform edge derives the rest from the request and session state. A feature says the request may carry a header group; whether it is sent is the platform header resolver's decision, and its value the materializer's.

    interface RequestFeatures {
        ads?: { serving?: boolean };
        analytics?: {
            apiAnalytics?: boolean;
            criticalApi?: boolean;
            headFeedOrder?: boolean;
            prefetch?: boolean;
        };
        bloks?: { prismControl?: boolean };
        body?: { gzip?: boolean; present?: boolean };
        experiments?: { saltIds?: boolean };
        graphql?: { prefetch?: boolean; purpose?: boolean };
        identifiers?: {
            familyDevice?: boolean;
            machineId?: boolean;
            metaUsdid?: boolean;
            pigeonSession?: boolean;
        };
        integrity?: { attestation?: boolean };
        navigation?: { chain?: boolean };
        network?: { properties?: boolean };
        transport?: {
            appNetSession?: boolean;
            friendlyNameDefault?: boolean;
            graphqlClientLibrary?: boolean;
            tigonRetry?: boolean;
        };
        zero?: { networkInterface?: boolean; rmdMap?: boolean };
    }
    Index

    Properties

    ads?: { serving?: boolean }

    Ads delivery state the request reports.

    Type Declaration

    • Optional Readonlyserving?: boolean

      The request asks for a feed that can carry ads. The iOS 451 app sends its ads header group (x-ads-opt-out, x-cm-*, x-device-id, x-fb, x-messenger, x-whatsapp, family_device_id) only on such feeds (feed/timeline, feed/injected_reels_media, discover/topical_explore).

    analytics?: {
        apiAnalytics?: boolean;
        criticalApi?: boolean;
        headFeedOrder?: boolean;
        prefetch?: boolean;
    }

    How the app classifies the request in x-fb-request-analytics-tags.

    Type Declaration

    • Optional ReadonlyapiAnalytics?: boolean

      Whether the request carries the API-analytics header group (priority, x-fb-friendly-name, x-fb-request-analytics-tags). Defaults to present; false on the launcher/mobileconfig config-sync surface, which the app sends without the group.

    • Optional ReadonlycriticalApi?: boolean

      critical_api request category (feed surfaces).

    • Optional ReadonlyheadFeedOrder?: boolean

      request_feed_order: head in the application tags: the head load of a feed.

    • Optional Readonlyprefetch?: boolean

      The prefetch analytics purpose (the default purpose is fetch).

    bloks?: { prismControl?: boolean }

    Bloks rendering state the request reports.

    Type Declaration

    • Optional ReadonlyprismControl?: boolean

      The neutral control palette of the Bloks prism theme instead of the active (indigo) theme. Set on session-start jobs that the app still issues to the main host (e.g. push/register), which therefore cannot be marked session-start scope without changing their host.

    body?: { gzip?: boolean; present?: boolean }

    Request payload shape; derived by the edge from the request itself.

    experiments?: { saltIds?: boolean }

    Experiment (QE) state the request carries.

    Type Declaration

    • Optional ReadonlysaltIds?: boolean

      x-ig-salt-ids.

    graphql?: { prefetch?: boolean; purpose?: boolean }

    GraphQL request intent.

    Type Declaration

    • Optional Readonlyprefetch?: boolean

      The prefetch analytics purpose of the minimal GraphQL family.

    • Optional Readonlypurpose?: boolean

      x-graphql-request-purpose.

    identifiers?: {
        familyDevice?: boolean;
        machineId?: boolean;
        metaUsdid?: boolean;
        pigeonSession?: boolean;
    }

    Client identifiers the request stamps.

    Type Declaration

    • Optional ReadonlyfamilyDevice?: boolean

      x-ig-family-device-id.

    • Optional ReadonlymachineId?: boolean

      x-mid.

    • Optional ReadonlymetaUsdid?: boolean

      x-meta-usdid.

    • Optional ReadonlypigeonSession?: boolean

      x-pigeon-session-id.

    integrity?: { attestation?: boolean }

    Device integrity proofs the request carries.

    Type Declaration

    • Optional Readonlyattestation?: boolean

      x-ig-attest-params.

    navigation?: { chain?: boolean }

    Navigation state the request reports.

    Type Declaration

    • Optional Readonlychain?: boolean

      x-ig-nav-chain; derived from the recorded navigation when not set.

    network?: { properties?: boolean }

    Device network state the request reports.

    Type Declaration

    • Optional Readonlyproperties?: boolean

      x-fb-network-properties. The iOS 451 app reports it on every API request except the sessionless config sync, which declares false.

    transport?: {
        appNetSession?: boolean;
        friendlyNameDefault?: boolean;
        graphqlClientLibrary?: boolean;
        tigonRetry?: boolean;
    }

    Transport-level capabilities the app toggles per request. These do not produce a TypeScript-materialized header: the native transport owns the header, and the declared flag only opts it out.

    Type Declaration

    • Optional ReadonlyappNetSession?: boolean

      x-fb-appnetsession-nid / -sid. The iOS transport profile emits the pair by default and the Android profile emits it on cellular (see transportClientOptions); false suppresses it for requests the app sends without it. iOS 451: the first requests of an app start (/rmd, IGOneLinkMiddlewarePageQuery, feed/reels_tray, feed/timeline, SUBSDataQuery) and the sessionless launcher/mobileconfig config sync. Android 448: feed/reels_tray, feed/timeline and the sessionless launcher/mobileconfig config sync — the shared SESSIONLESS_CONFIG_SYNC_FEATURES set covers its every sender, both cold-start calls and the password-key fallback (the reference capture also lacks the pair on launcher/sync_ep_config, which the library does not send).

    • Optional ReadonlyfriendlyNameDefault?: boolean

      The transport's URL-derived default x-fb-friendly-name. The transport emits it for any /api/v1 request the caller does not set one on; false suppresses the default. Wired from the analytics.apiAnalytics facet, so launcher/mobileconfig (which the app sends without a friendly name) opts out through the same feature.

    • Optional ReadonlygraphqlClientLibrary?: boolean

      x-graphql-client-library. The transport injects pando on GraphQL URLs when the request sets no value; false suppresses that default for the GraphQL calls the app sends outside its Pando client — in the iOS 451 captures OdinTigonDataTask and api/v1/wwwgraphql/ig/query/.

    • Optional ReadonlytigonRetry?: boolean

      x-tigon-is-retry. The transport emits it by default; false suppresses it for requests the app issues without the Tigon retry marker — currently the Direct pending-requests preview poll in the 448 Android capture.

    zero?: { networkInterface?: boolean; rmdMap?: boolean }

    Zero-rating / routing-map state the request reports.

    Type Declaration

    • Optional ReadonlynetworkInterface?: boolean

      zero-http-network-interface; derived from the zero-campaign state when not set. A later, separate state from the routing map: the 448 capture carries x-fb-rmd before the interface appears.

    • Optional ReadonlyrmdMap?: boolean

      x-fb-rmd; derived from routing-map state when not set.