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

    Variable PostingGalleryPickerScreenConst

    PostingGalleryPickerScreen: ScreenDefinition<
        "PostingGalleryPicker",
        "screen",
        { origin: "feed"
        | "reels-tab" },
        { creationSessionId: string; mode: "post"; origin: "feed" | "reels-tab" },
        PostingGalleryPickerState,
        never,
        MobileSession | MobileNavigation | MobileUserFlows | AndroidPostingMedia,
        {
            pickMedia: (
                self: ScreenHandle,
                state: PostingGalleryPickerState,
            ) => (
                ...args: [
                    files: readonly [
                        PostingPhotoInput
                        | PostingVideoInput,
                        PostingPhotoInput | PostingVideoInput,
                        PostingPhotoInput | PostingVideoInput,
                    ],
                ],
            ) => Effect<
                AssembledHandle<
                    "PostingPostEdit",
                    "screen",
                    {
                        creationSessionId: string;
                        media: | readonly [
                            {
                                byteLength: number;
                                height: number;
                                id: string;
                                kind: "photo";
                                mimeType: (...)
                                | (...)
                                | (...);
                                width: number;
                            },
                        ]
                        | readonly [
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                        ];
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        next: (
                            self: ScreenHandle,
                            state: {
                                creationSessionId: string;
                                media: readonly [(...)] | readonly [(...), (...), (...)];
                                origin: "feed" | "reels-tab";
                            },
                        ) => (
                            ...args: [],
                        ) => Effect<
                            AssembledHandle<
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                            >,

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError
                    | PostingMediaFormatError,
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            pickPhoto: (
                self: ScreenHandle,
                state: PostingGalleryPickerState,
            ) => (
                ...args: [photo: PostingPhotoInput],
            ) => Effect<
                AssembledHandle<
                    "PostingPostEdit",
                    "screen",
                    {
                        creationSessionId: string;
                        media: | readonly [
                            {
                                byteLength: number;
                                height: number;
                                id: string;
                                kind: "photo";
                                mimeType: (...)
                                | (...)
                                | (...);
                                width: number;
                            },
                        ]
                        | readonly [
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                        ];
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        next: (
                            self: ScreenHandle,
                            state: {
                                creationSessionId: string;
                                media: readonly [(...)] | readonly [(...), (...), (...)];
                                origin: "feed" | "reels-tab";
                            },
                        ) => (
                            ...args: [],
                        ) => Effect<
                            AssembledHandle<
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                            >,

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError
                    | PostingMediaFormatError,
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            pickPhotos: (
                self: ScreenHandle,
                state: PostingGalleryPickerState,
            ) => (
                ...args: [photos: readonly [PostingPhotoInput, PostingPhotoInput]],
            ) => Effect<
                AssembledHandle<
                    "PostingPostEdit",
                    "screen",
                    {
                        creationSessionId: string;
                        media: | readonly [
                            {
                                byteLength: number;
                                height: number;
                                id: string;
                                kind: "photo";
                                mimeType: (...)
                                | (...)
                                | (...);
                                width: number;
                            },
                        ]
                        | readonly [
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                            | {
                                byteLength: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            }
                            | {
                                byteLength: ...;
                                durationMs: ...;
                                height: ...;
                                id: ...;
                                kind: ...;
                                mimeType: ...;
                                width: ...;
                            },
                        ];
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        next: (
                            self: ScreenHandle,
                            state: {
                                creationSessionId: string;
                                media: readonly [(...)] | readonly [(...), (...), (...)];
                                origin: "feed" | "reels-tab";
                            },
                        ) => (
                            ...args: [],
                        ) => Effect<
                            AssembledHandle<
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                            >,

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),

                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError
                    | PostingMediaFormatError,
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            pickVideo: (
                self: ScreenHandle,
                state: PostingGalleryPickerState,
            ) => (
                ...args: [video: PostingVideoInput],
            ) => Effect<
                AssembledHandle<
                    "PostingReelEditor",
                    "screen",
                    {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        next: EditorNext;
                        openMusicBrowser: (
                            self: ScreenHandle,
                            state: {
                                assetId: string;
                                creationSessionId: string;
                                draftId: string;
                                entry: "reel-mode" | "post-mode";
                                media: {
                                    byteLength: number;
                                    durationMs: number;
                                    height: number;
                                    id: string;
                                    kind: "video";
                                    mimeType: "video/mp4";
                                    width: number;
                                };
                                origin: "feed"
                                | "reels-tab";
                            },
                        ) => (
                            ...args: [],
                        ) => Effect<
                            AssembledHandle<
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                                (...),
                            >,
                            (...) | (...) | (...) | (...) | (...) | (...) | (...) | (...),
                            (...) | (...) | (...) | (...) | (...) | (...) | (...),
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError
                    | PostingMediaFormatError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | ScreenStack
                | AndroidQuickPromotionStash
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            switchMode: (
                self: ScreenHandle,
                state: PostingGalleryPickerState,
            ) => (
                ...args: [mode: "reel" | "story"],
            ) => Effect<
                AssembledHandle<
                    "PostingCamera",
                    "screen",
                    {
                        cameraSessionId: string;
                        entry: "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel" | "story";
                        origin: "feed" | "reels-tab";
                    },
                    {
                        openGallery: (
                            self: ScreenHandle,
                            state: PostingCameraState,
                        ) => (
                            ...args: [],
                        ) => Effect<
                            PostingCameraGalleryHandle,
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...),
                            (...) | (...) | (...) | (...) | (...) | (...) | (...) | (...),
                        >;
                        switchMode: (
                            self: ScreenHandle,
                            state: PostingCameraState,
                        ) => ScreenEdgeBound<
                            ScreenEdgeShape<
                                PostingCameraScreenDefinition,
                                readonly [(...)],
                                "button",
                                AndroidScreens,
                            >,
                            (mode: "story") => Effect<(...), (...), (...)>,
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
        },
        Record<never, never>,
        never,
        never,
    > = ...

    GalleryPickerFragment:gallery_picker, the screen the feed's bottom-bar create button opens (Android 451): the person's photos and videos in a grid, under the mode selector that offers POST, STORY, REEL and LIVE. This is the POST mode's gallery; REEL and STORY open the creation camera instead (PostingCameraScreen).

    What a person does here is pick: one photo, several photos (the grid's Select mode, a carousel), or a video. Opening the screen sends no request: the app sends only Pigeon telemetry at the open.

    Actions: pickPhoto(photo) and pickPhotos(photos) open the post editor (PostingPostEditScreen) with the picked files — the bytes go to the process's media pool, the editor receives their descriptors; a photo in a format the app's picker does not offer is the typed PostingMediaFormatError. pickMedia(files) is the same Select mode with photos and videos mixed (at least two files; a carousel whose video child is encoded and uploaded with its poster frame); pickVideo(video) takes one video through the reel pipeline; switchMode(mode) moves the selector to REEL or STORY, which opens the creation camera (PostingCameraScreen).

    How it is reached: FeedTimelineScreen.openCreation() (the post mode, the default), the GalleryPickerFragment:gallery_picker:2:camera_tab_bar entry.

    No screenshot: the grid shows the test account's gallery.

    Guide: The gallery picker