Variable ReelsViewerInputSchemaConst
ReelsViewerInputSchema: Union<
readonly [
Struct<
{
chaining: optionalKey<
Struct<
{
chainingSessionId: optionalKey<String>;
mediaPctWatched: optionalKey<Union<readonly [Number, String]>>;
rankingSessionId: optionalKey<String>;
},
>,
>;
index: Number;
reels: $Array<
Struct<
{
code: String;
id: String;
media_type: Number;
organic_tracking_token: optionalKey<String>;
pk: decodeTo<String, Union<readonly [Number, String]>, never, never>;
taken_at: optionalKey<Number>;
user: optionalKey<
Struct<{ id: optionalKey<(...)>; pk: optionalKey<(...)> }>,
>;
video_duration: optionalKey<Number>;
},
>,
>;
},
>,
Struct<
{
chainingPosition: optionalKey<Union<readonly [Number, String]>>;
chainingSeedMediaId: optionalKey<String>;
chainingSessionId: optionalKey<String>;
clientPosition: optionalKey<Union<readonly [Number, String]>>;
friendsLane: optionalKey<Literal<false>>;
media: optionalKey<
Struct<
{
code: String;
id: String;
media_type: Number;
organic_tracking_token: optionalKey<String>;
pk: decodeTo<String, Union<readonly [Number, String]>, never, never>;
taken_at: optionalKey<Number>;
user: optionalKey<
Struct<{ id: optionalKey<(...)>; pk: optionalKey<(...)> }>,
>;
video_duration: optionalKey<Number>;
},
>,
>;
mediaPctWatched: optionalKey<Union<readonly [Number, String]>>;
rankingSessionId: optionalKey<String>;
storyRankingToken: optionalKey<String>;
},
>,
],
> = ...
How the viewer was opened, a sum of two entries: one reel (or none — the bottom-bar tab, which sends the stream's first page) as the single input, or a list opened on the tapped index. The list entry is tried first; the single input's fields are all optional, so an object carrying
reelsmust match the list entry and not fall through to it.