igpapi — Instagram private API Simulator for Node.js (API reference) 4.14.0
    Preparing search index...

    Variable DirectInboxScreenConst

    DirectInboxScreen: ScreenDefinition<
        "DirectInbox",
        "tab",
        undefined,
        {
            threads: readonly {
                is_group: boolean;
                last_activity_at: string;
                muted: boolean;
                preview: readonly {
                    client_context?: string;
                    item_id: string;
                    item_type: string;
                    media?: | {
                        height: number;
                        media_type: 1;
                        pk: string;
                        url: string;
                        width: number;
                    }
                    | {
                        height: number;
                        media_type: 2;
                        pk: string;
                        url: string;
                        width: number;
                    }
                    | {
                        media_type: 8;
                        pk: string;
                        slides: readonly { media_type: (...)
                        | (...); pk: string; url: string }[];
                    };
                    text?: string;
                    timestamp: string;
                    user_id: string;
                }[];
                thread_id: string;
                thread_title: string;
                thread_v2_id: string;
                users: readonly {
                    fbid_v2?: string;
                    full_name: string;
                    pk: string;
                    username: string;
                }[];
            }[];
        },
        Record<never, never>,
        IgApiError | RequestError | ParseError | TransportError | SchemaError,

            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | AndroidDirectSurface,
        {
            openNewMessage: (
                self: ScreenHandle,
                state: Record<never, never>,
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    ScreenDefinition<
                        "DirectRecipientPicker",
                        "screen",
                        { mode: "group"; searchSessionId: string }
                        | undefined,
                        {
                            recipients: readonly {
                                full_name: string;
                                pk: string;
                                username: string;
                            }[];
                            searchSessionId: string;
                            threads: readonly {
                                is_group: boolean;
                                muted?: boolean;
                                preview: readonly {
                                    client_context?: ...;
                                    item_id: ...;
                                    item_type: ...;
                                    media?: ...;
                                    text?: ...;
                                    timestamp: ...;
                                    user_id: ...;
                                }[];
                                thread_id: string;
                                thread_title: string;
                                thread_v2_id?: string;
                                users: readonly {
                                    fbid_v2?: ...;
                                    full_name: ...;
                                    pk: ...;
                                    username: ...;
                                }[];
                            }[];
                        },
                        { mode: "default"
                        | "group"; searchSessionId: string },

                            | IgCheckpointError
                            | IgAccountSuspendedError
                            | IgAccountDisabledError
                            | IgLoginRequiredError
                            | IgUserLoggedOutError,
                        | GraphqlJsonHttp
                        | MobileApplication
                        | MobileNavigation
                        | AndroidDirectSurface,
                        {
                            createGroup: (
                                self: ScreenHandle,
                                state: { mode: "default" | "group"; searchSessionId: string },
                            ) => (
                                ...args: [rows: readonly (...)[]],
                            ) => Effect<
                                AssembledHandle<
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                >,
                                (...) | (...) | (...) | (...) | (...) | (...) | (...) | (...) | (...),

                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...),
                            >;
                            openCreatedThread: ActionEdge<
                                (
                                    self: ScreenHandle,
                                    state: { mode: (...) | (...); searchSessionId: string },
                                ) => ScreenEdgeBound<
                                    ScreenEdgeShape<(...), (...), (...), (...)>,
                                    (...args: ...) => ...,
                                >,
                            >;
                            search: (
                                self: ScreenHandle,
                                state: { mode: "default" | "group"; searchSessionId: string },
                            ) => (
                                ...args: [query: string],
                            ) => Effect<
                                (...) & (...),
                                (...) | (...) | (...) | (...) | (...) | (...),
                                (...) | (...) | (...),
                            >;
                            startGroupChat: (
                                self: ScreenHandle,
                                state: { mode: "default" | "group"; searchSessionId: string },
                            ) => ScreenEdgeBound<
                                (
                                    ScreenEdgeShape<ScreenDefinition<"DirectRecipientPicker", "screen", { readonly mode: "group"; readonly searchSessionId: string; } | undefined, { readonly recipients: readonly { readonly pk: string; readonly username: string; readonly full_name: string; }[]; readonly threads: readonly { ...; }[]; readonly searchSessi...
                                ),
                                () => Effect<(...), (...), (...)>,
                            >;
                        },
                        {
                            recipients: {
                                at: "recipients";
                                item: ScreenItemDefinition<
                                    "DirectRecipient",
                                    { full_name: string; pk: string; username: string },
                                    { full_name: string; pk: string; username: string },
                                    { userId: string },
                                    never,
                                    never,
                                    { openThread: (self: ..., state: ...) => ... },
                                    undefined,
                                    never,
                                >;
                                key: "pk";
                                source: ScreenItemNodes;
                            };
                            threads: {
                                at: "threads";
                                item: ScreenItemDefinition<
                                    "DirectPickerThread",
                                    {
                                        is_group: boolean;
                                        muted?: (...)
                                        | (...)
                                        | (...);
                                        preview: readonly (...)[];
                                        thread_id: string;
                                        thread_title: string;
                                        thread_v2_id?: (...) | (...);
                                        users: readonly (...)[];
                                    },
                                    {
                                        is_group: boolean;
                                        muted?: (...)
                                        | (...)
                                        | (...);
                                        preview: readonly (...)[];
                                        thread_id: string;
                                        thread_title: string;
                                        thread_v2_id?: (...) | (...);
                                        users: readonly (...)[];
                                    },
                                    {
                                        thread: {
                                            is_group: ...;
                                            muted?: ...;
                                            preview: ...;
                                            thread_id: ...;
                                            thread_title: ...;
                                            thread_v2_id?: ...;
                                            users: ...;
                                        };
                                    },
                                    never,
                                    never,
                                    { openThread: (self: ..., state: ...) => ... },
                                    undefined,
                                    never,
                                >;
                                key: "thread_id";
                                source: ScreenItemNodes;
                            };
                        },
                        never,
                        never,
                    >,
                    [],
                    "button",
                    AndroidScreens,
                >,
                () => Effect<
                    AssembledHandle<
                        "DirectRecipientPicker",
                        "screen",
                        {
                            recipients: readonly {
                                full_name: string;
                                pk: string;
                                username: string;
                            }[];
                            searchSessionId: string;
                            threads: readonly {
                                is_group: boolean;
                                muted?: (...)
                                | (...)
                                | (...);
                                preview: readonly (...)[];
                                thread_id: string;
                                thread_title: string;
                                thread_v2_id?: (...) | (...);
                                users: readonly (...)[];
                            }[];
                        },
                        {
                            createGroup: (
                                self: ScreenHandle,
                                state: { mode: (...) | (...); searchSessionId: string },
                            ) => (...args: [rows: ...]) => Effect<(...), (...), (...)>;
                            openCreatedThread: ActionEdge<
                                (
                                    self: ScreenHandle,
                                    state: { mode: ...; searchSessionId: ... },
                                ) => ScreenEdgeBound<(...), (...)>,
                            >;
                            search: (
                                self: ScreenHandle,
                                state: { mode: (...) | (...); searchSessionId: string },
                            ) => (...args: [query: ...]) => Effect<(...), (...), (...)>;
                            startGroupChat: (
                                self: ScreenHandle,
                                state: { mode: (...) | (...); searchSessionId: string },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<(...), (...), (...), (...)>,
                                () => ...,
                            >;
                        },
                        {
                            recipients: {
                                at: "recipients";
                                item: ScreenItemDefinition<
                                    "DirectRecipient",
                                    { full_name: ...; pk: ...; username: ... },
                                    { full_name: ...; pk: ...; username: ... },
                                    { userId: ... },
                                    never,
                                    never,
                                    { openThread: ... },
                                    undefined,
                                    never,
                                >;
                                key: "pk";
                                source: ScreenItemNodes;
                            };
                            threads: {
                                at: "threads";
                                item: ScreenItemDefinition<
                                    "DirectPickerThread",
                                    {
                                        is_group: ...;
                                        muted?: ...;
                                        preview: ...;
                                        thread_id: ...;
                                        thread_title: ...;
                                        thread_v2_id?: ...;
                                        users: ...;
                                    },
                                    {
                                        is_group: ...;
                                        muted?: ...;
                                        preview: ...;
                                        thread_id: ...;
                                        thread_title: ...;
                                        thread_v2_id?: ...;
                                        users: ...;
                                    },
                                    { thread: ... },
                                    never,
                                    never,
                                    { openThread: ... },
                                    undefined,
                                    never,
                                >;
                                key: "thread_id";
                                source: ScreenItemNodes;
                            };
                        },
                        ScreenHandle,
                        "required",
                        true,
                        never,
                        AndroidScreens,
                    >,
                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | ScreenStack
                    | ScreenCatalog
                    | AndroidDirectSurface,
                >,
            >;
        },
        {
            threads: {
                at: "threads";
                item: ScreenItemDefinition<
                    "DirectInboxThread",
                    {
                        is_group: boolean;
                        last_activity_at: string;
                        muted: boolean;
                        preview: readonly {
                            client_context?: string;
                            item_id: string;
                            item_type: string;
                            media?: | {
                                height: number;
                                media_type: 1;
                                pk: string;
                                url: string;
                                width: number;
                            }
                            | {
                                height: number;
                                media_type: 2;
                                pk: string;
                                url: string;
                                width: number;
                            }
                            | {
                                media_type: 8;
                                pk: string;
                                slides: readonly { media_type: ...; pk: ...; url: ... }[];
                            };
                            text?: string;
                            timestamp: string;
                            user_id: string;
                        }[];
                        thread_id: string;
                        thread_title: string;
                        thread_v2_id: string;
                        users: readonly {
                            fbid_v2?: string;
                            full_name: string;
                            pk: string;
                            username: string;
                        }[];
                    },
                    {
                        is_group: boolean;
                        last_activity_at: string;
                        muted: boolean;
                        preview: readonly {
                            client_context?: string;
                            item_id: string;
                            item_type: string;
                            media?: | {
                                height: number;
                                media_type: 1;
                                pk: string;
                                url: string;
                                width: number;
                            }
                            | {
                                height: number;
                                media_type: 2;
                                pk: string;
                                url: string;
                                width: number;
                            }
                            | {
                                media_type: 8;
                                pk: string;
                                slides: readonly { media_type: ...; pk: ...; url: ... }[];
                            };
                            text?: string;
                            timestamp: string;
                            user_id: string;
                        }[];
                        thread_id: string;
                        thread_title: string;
                        thread_v2_id: string;
                        users: readonly {
                            fbid_v2?: string;
                            full_name: string;
                            pk: string;
                            username: string;
                        }[];
                    },
                    {
                        thread: {
                            is_group: boolean;
                            muted?: boolean;
                            preview: readonly {
                                client_context?: string;
                                item_id: string;
                                item_type: string;
                                media?: | {
                                    height: number;
                                    media_type: 1;
                                    pk: string;
                                    url: string;
                                    width: number;
                                }
                                | {
                                    height: number;
                                    media_type: 2;
                                    pk: string;
                                    url: string;
                                    width: number;
                                }
                                | { media_type: 8; pk: string; slides: readonly (...)[] };
                                text?: string;
                                timestamp: string;
                                user_id: string;
                            }[];
                            thread_id: string;
                            thread_title: string;
                            thread_v2_id?: string;
                            users: readonly {
                                fbid_v2?: string;
                                full_name: string;
                                pk: string;
                                username: string;
                            }[];
                        };
                    },
                    never,
                    never,
                    {
                        open: (
                            self: ScreenHandle,
                            state: {
                                thread: {
                                    is_group: boolean;
                                    muted?: boolean;
                                    preview: readonly {
                                        client_context?: (...) | (...);
                                        item_id: string;
                                        item_type: string;
                                        media?: (...) | (...) | (...) | (...);
                                        text?: (...) | (...);
                                        timestamp: string;
                                        user_id: string;
                                    }[];
                                    thread_id: string;
                                    thread_title: string;
                                    thread_v2_id?: string;
                                    users: readonly {
                                        fbid_v2?: (...)
                                        | (...);
                                        full_name: string;
                                        pk: string;
                                        username: string;
                                    }[];
                                };
                            },
                        ) => ScreenEdgeBound<
                            ScreenEdgeShape<
                                ScreenDefinition<
                                    "DirectThread",
                                    "screen",
                                    | { kind: ...; send_attribution?: ...; thread: ... }
                                    | { kind: ...; recipient: ...; send_attribution?: ... }
                                    | {
                                        kind: ...;
                                        target_user_ids: ...;
                                        thread_id: ...;
                                        thread_v2_id: ...;
                                    },
                                    {
                                        media: readonly (...)[];
                                        messages: readonly (...)[];
                                        thread: {
                                            is_group: ...;
                                            muted?: ...;
                                            thread_id: ...;
                                            thread_title: ...;
                                            thread_v2_id?: ...;
                                        };
                                        users: readonly (...)[];
                                    },
                                    | {
                                        has_messages: ...;
                                        is_group: ...;
                                        ordinal_reserved?: ...;
                                        participants: ...;
                                        peer_user_fbid?: ...;
                                        peer_user_id?: ...;
                                        send_attribution?: ...;
                                        thread_id: ...;
                                        thread_title: ...;
                                        thread_v2_id?: ...;
                                    }
                                    | {
                                        has_messages: ...;
                                        is_group: ...;
                                        lead_user_id?: ...;
                                        ordinal_reserved?: ...;
                                        participants: ...;
                                        send_attribution?: ...;
                                        thread_id: ...;
                                        thread_title: ...;
                                        thread_v2_id?: ...;
                                    },
                                    | IgApiError
                                    | RequestError
                                    | ParseError
                                    | TransportError
                                    | ScreenDataError
                                    | DirectInboxSeqIdUnknownError
                                    | DirectThreadNotFoundByParticipantsError,
                                    | PlainJsonApiHttp
                                    | MobileSession
                                    | MobileDevice
                                    | GraphqlJsonHttp
                                    | MobileApplication
                                    | MobileNavigation
                                    | MobileUserFlows
                                    | AndroidQuickPromotionStash,
                                    {
                                        openCustomizeChat: (self: ..., state: ...) => ...;
                                        openThreadDetails: (self: ..., state: ...) => ...;
                                        sendMessage: (self: ..., state: ...) => ...;
                                    },
                                    {
                                        media: {
                                            at: ...;
                                            by: ...;
                                            key: ...;
                                            source: ...;
                                            variants: ...;
                                        };
                                        messages: { at: ...; item: ...; key: ...; source: ... };
                                        participants: { at: ...; item: ...; key: ...; source: ... };
                                    },
                                    never,
                                    never,
                                >,
                                [],
                                "inbox",
                                AndroidScreens,
                            >,
                            () => Effect<
                                AssembledHandle<
                                    "DirectThread",
                                    "screen",
                                    { media: ...; messages: ...; thread: ...; users: ... },
                                    { openCustomizeChat: ...; openThreadDetails: ...; sendMessage: ... },
                                    { media: ...; messages: ...; participants: ... },
                                    ScreenHandle,
                                    "required",
                                    true,
                                    never,
                                    AndroidScreens,
                                >,

                                    | IgApiError
                                    | RequestError
                                    | ParseError
                                    | TransportError
                                    | ScreenDataError
                                    | ScreenEnterConcurrentError
                                    | ScreenEdgeInputError
                                    | DirectInboxSeqIdUnknownError
                                    | DirectThreadNotFoundByParticipantsError,
                                | PlainJsonApiHttp
                                | MobileSession
                                | MobileDevice
                                | GraphqlJsonHttp
                                | MobileApplication
                                | MobileNavigation
                                | MobileUserFlows
                                | ScreenStack
                                | AndroidQuickPromotionStash
                                | ScreenCatalog,
                            >,
                        >;
                    },
                    undefined,
                    never,
                >;
                key: "thread_v2_id";
                source: ScreenItemNodes;
            };
        },
        never,
        never,
    > = ...

    DirectInboxFragment:direct_inbox, the Direct tab (Android 451). The tab's open is one burst in the app's order:

    • while the feed is still in front, three queries together — the pending inbox (the message-requests badge), the Direct privacy settings and the viewer's Spotify account link (MobileRequestContext.Session plus the Direct surface's x-msgr-region);
    • then the tab switch (direct_inbox:2:main_direct, the chain every later request of the burst carries) and the saved replies (quick_reply/get, signed with the thread modification token, reply type and viewer);
    • the recommended-users panel's empty state 1.1 s after the saved replies, then the inbox snapshot (direct_v2/inbox/) with the Meta AI persona prefetch (IGDirectFetchKaiPersona, bot_id the Meta AI bot) together 0.49 s later. The inbox screen asks its empty state a second time when the snapshot's answer lands (10 ms after it);
    • about 1 s later the search warm start (IGDirectSearchInitiateWarmStartQuery, the picker's own open on the 1:1 run), and 0.3 s after it the stories lookup (feed/get_latest_reel_media/) for the people of the stored head.

    With a stored head (the app's local inbox store, DirectInboxCache) the snapshot is the filtered first page after the stored cursor (prefetch_filtered_first_page), and the person's stories are the stored threads' participants; without one the snapshot is the initial page (thread_message_limit=5) and no stories lookup is sent.

    mode is a fact of the presented profile, read by directInboxFeed itself: the 451 profile sends mode=2, the 448 profile sends none.

    The answer's seq_id is adopted into the session by the feed producer (directInboxFeed's request, which decodes and records it), not by this screen: the app's "New message" and the profile's Message button report it as the participant lookup's seq_id (the lookup sends the inbox answer's sequence), and the screens read it from that one source, never from an input. The post-login launch burst runs the same producer, so a session that never opened this tab still holds the number.

    Guide: The Direct inbox