Appearance
Share a carousel
What the person sees. They open a carousel post from a profile's grid, swipe to the slide they want, and tap the paper plane. The Direct share sheet opens with the conversations the app keeps on the device, and the carousel goes into the conversation they tap.

What you do. A carousel of a profile's posts feed is an item of ProfilePostsFeedScreen. Its swipeToSlide(index) picks the slide in front (the first when they never swiped); its share() opens the Direct share sheet, and the sheet's threads rows send with send().
ts
import { AndroidIgpapi, FeedTimelineScreen } from '@igpapi/android';
import { Effect } from 'effect';
import { readFile } from 'node:fs/promises';
const saved = JSON.parse(await readFile('session.json', 'utf8'));
await AndroidIgpapi.launch({
checkpoint: saved,
screen: FeedTimelineScreen,
main: feed =>
Effect.gen(function* () {
const tab = yield* feed.openSearchTab();
const field = yield* tab.openSearchInput();
const typed = yield* field.change('instagram');
const account = typed.results.find(result => result.id === 'SearchInputUserResult');
if (account === undefined || account.id !== 'SearchInputUserResult') return;
const profile = yield* account.openProfile();
const tile = profile.grid[0];
if (tile === undefined) return;
const posts = yield* tile.open();
// The post in front is the carousel; its slide in front is the child the share names.
const carousel = posts.current;
if (carousel === undefined || carousel.id !== 'ProfilePostsFeedCarousel') return;
const sheet = yield* carousel.share();
const conversation = sheet.threads[0];
if (conversation === undefined) return;
return yield* conversation.send();
}),
});The wire. POST api/v1/direct_v2/threads/broadcast/media_share/?media_type=video with carousel_share_child_media_id the slide in front, media_id the carousel's container id, and send_attribution=feed_contextual_profile — the Android 451 app's own form.


