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

    Variable FeedTimelineReelItemConst

    FeedTimelineReelItem: ScreenItemDefinition<
        "FeedTimelineReel",
        {
            key: string;
            media: {
                carousel_media?: readonly { pk: string }[];
                code: string;
                id: string;
                injected?: { ad_id?: string } | null;
                inventory_source?: string;
                logging_info_token?: string;
                media_type: number;
                mezql_token?: string;
                pk?: string;
                product_type?: string;
                taken_at?: number;
                user?: { pk: string; username: string };
            };
            position: number;
            type: "reel";
        },
        {
            key: string;
            media: {
                carousel_media?: readonly { pk: string }[];
                code: string;
                id: string;
                injected?: { ad_id?: string } | null;
                inventory_source?: string;
                logging_info_token?: string;
                media_type: number;
                mezql_token?: string;
                pk?: string;
                product_type?: string;
                taken_at?: number;
                user?: { pk: string; username: string };
            };
            position: number;
            type: "reel";
        },
        FeedTimelinePostState,
        never,
        never,
        {
            open: (
                self: ScreenHandle,
                state: FeedTimelinePostState,
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    ReelsViewerScreenDefinition,
                    readonly [
                        {
                            chainingPosition?: string
                            | number;
                            chainingSeedMediaId?: string;
                            chainingSessionId?: string;
                            clientPosition?: string | number;
                            mediaPctWatched?: string | number;
                            rankingSessionId?: string;
                            storyRankingToken?: string;
                        },
                    ],
                    "warm_start",
                    AndroidScreens,
                >,
                (
                    ...args: readonly [
                        {
                            chainingPosition?: string
                            | number;
                            chainingSeedMediaId?: string;
                            chainingSessionId?: string;
                            clientPosition?: string | number;
                            mediaPctWatched?: string | number;
                            rankingSessionId?: string;
                            storyRankingToken?: string;
                        },
                    ],
                ) => Effect<
                    AssembledHandle<
                        "ReelsViewer",
                        "tab",
                        {
                            entries: readonly {
                                key: string;
                                media: {
                                    code: ...;
                                    id: ...;
                                    media_type: ...;
                                    organic_tracking_token?: ...;
                                    pk: ...;
                                    taken_at?: ...;
                                    user?: ...;
                                    video_duration?: ...;
                                };
                                position: number;
                            }[];
                            next?: { maxId: string };
                            opensOnOneReel?: boolean;
                        },
                        { openCamera: ReelsViewerCameraEdge } & Omit<
                            ScreenFeedMembers<
                                { initial?: ...; maxId?: ... },
                                { at: ...; item: ...; key: ...; source: ... },
                                (...) | (...) | (...) | (...) | (...),
                                (...) | (...) | (...) | (...),
                            >,
                            "stream",
                        > & ScreenSwipeMembers<
                            { initial?: (...)
                            | (...); maxId?: (...) | (...) },
                            {
                                at: "entries";
                                item: ScreenItemDefinition<
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                    (...),
                                >;
                                key: "key";
                                source: { first: ...; next: ... };
                            },
                            ScreenFeedSwipeFailure<
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),
                                { at: ...; item: ...; key: ...; source: ... },
                            >,
                            ScreenFeedPageServices<
                                (...)
                                | (...)
                                | (...)
                                | (...),
                                { at: ...; item: ...; key: ...; source: ... },
                            >,
                        >,
                        ScreenFeedItems<
                            {
                                at: "entries";
                                item: ScreenItemDefinition<
                                    "ReelsViewerReel",
                                    { key: ...; media: ...; position: ... },
                                    { key: ...; media: ...; position: ... },
                                    ReelsViewerReelState,
                                    never,
                                    never,
                                    { like: ...; openComments: ...; unlike: ... },
                                    { facts: ... },
                                    never,
                                >;
                                key: "key";
                                source: { first: ScreenItemNodes; next: ScreenItemNodes };
                            },
                        >,
                        ScreenHandle,
                        "required",
                        true,
                        never,
                        AndroidScreens,
                    >,
                    | IgApiError
                    | RequestError
                    | ParseError
                    | TransportError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | NavigationWire
                    | MobileNavigation
                    | MobileUserFlows
                    | ScreenStack
                    | AndroidThrottlingDetector
                    | AndroidClientAddress
                    | ScreenCatalog,
                >,
            >;
        },
        undefined,
        never,
    > = ...

    One reel of the timeline (product_type: 'clips'): it opens the reels viewer (source warm_start, as the 450 app does) with the same verb a post opens with — open; the result type says where it led. The viewer's chaining session is the caller's: the app opens the viewer with one and the library plays no media, so a caller that holds the session (the seed, its id, the watched fraction) passes it on; {} opens the viewer without it. The reel the edge names is the viewer's first item and the viewer sends no page request on opening (the app has no first page of that entry's own).