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

    Variable DirectThreadInputSchemaConst

    DirectThreadInputSchema: Union<
        readonly [
            Struct<
                {
                    kind: Literal<"thread">;
                    send_attribution: optionalKey<
                        Literals<
                            readonly [
                                "inbox",
                                "inbox_new_message",
                                "direct_thread_creation_omnipicker",
                                "message_button",
                            ],
                        >,
                    >;
                    thread: Struct<
                        {
                            is_group: Boolean;
                            muted: optionalKey<Boolean>;
                            preview: $Array<
                                Struct<
                                    {
                                        client_context: optionalKey<String>;
                                        item_id: String;
                                        item_type: String;
                                        media: optionalKey<Union<(...)>>;
                                        text: optionalKey<String>;
                                        timestamp: String;
                                        user_id: String;
                                    },
                                >,
                            >;
                            thread_id: String;
                            thread_title: String;
                            thread_v2_id: optionalKey<String>;
                            users: $Array<
                                Struct<
                                    {
                                        fbid_v2: optionalKey<String>;
                                        full_name: String;
                                        pk: String;
                                        username: String;
                                    },
                                >,
                            >;
                        },
                    >;
                },
            >,
            Struct<
                {
                    kind: Literal<"recipient">;
                    recipient: String;
                    send_attribution: optionalKey<
                        Literals<
                            readonly [
                                "inbox",
                                "inbox_new_message",
                                "direct_thread_creation_omnipicker",
                                "message_button",
                            ],
                        >,
                    >;
                },
            >,
            Struct<
                {
                    kind: Literal<"created">;
                    target_user_ids: $Array<String>;
                    thread_id: String;
                    thread_v2_id: String;
                },
            >,
        ],
    > = ...

    What a thread is opened with, a sum of its three entries:

    • thread: a conversation that exists, opened from a list row — the inbox's or the "New message" picker's thread row (its long id, whether it is a group, its people and the messages it previews; the join-requests query belongs to a group only);
    • created: the group the picker's group-mode createGroup created — the identity above; the screen loads the conversation with the app's thread query (IGDirectGetThreadQuery), so the opening sends what the app sends;
    • recipient: a person the inbox's "New message" picker chose. The participant lookup's answer names the conversation that is opened (in 1:1 a hidden, empty one); an answer without a conversation is DirectThreadNotFoundByParticipantsError. The seq_id the lookup sends is session state (MobileSessionState.directInboxSeqId), read by the screen and never carried by the input; a session that holds none fails with the typed DirectInboxSeqIdUnknownError. send_attribution is the attribution the message reports (direct_thread_creation_omnipicker from the picker, message_button from the profile, inbox from a thread the inbox opened).