Skip to main content

Text Message Videos

Generate engaging iPhone-style text conversation videos perfect for storytelling, drama, and entertainment content.

Overview

Text Message videos recreate the familiar iPhone Messages interface with:
  • Realistic iPhone message bubbles
  • Character voices for each participant
  • Background gameplay footage
  • Perfect for viral storytelling and drama content

Basic Usage

import { GigaReels } from "@gigareels/sdk";

const client = new GigaReels("your-api-key");

const task = await client.templates.brainrot.iMessage({
	prompt:
		"Create a conversation between two roommates where one discovers the other has been eating their leftover pizza",
	characterPack: "family-guy",
	backgroundVideoPack: "subway-surfers",
	enableImages: true,
	webhookUrl: "https://your-app.com/webhook",
});

console.log("Text message video started:", task.taskId);

Parameters

prompt
string
required
Description of the conversation scenario you want to create (10-1000 characters)
characterPack
string
required
Character pack for the conversation voices
backgroundVideoPack
string
required
Background video to play behind the messages
enableImages
boolean
default:"false"
Whether to include reaction images/GIFs in messages
webhookUrl
string
URL to receive completion notification

Content Types

Drama & Relationships

Perfect for relationship drama and interpersonal conflicts:
await client.templates.brainrot.iMessage({
  prompt: "A conversation where someone finds out their best friend is dating their ex-boyfriend behind their back",
  characterPack: "drama-voices",
  backgroundVideoPack: "minecraft-parkour"
});

await client.templates.brainrot.iMessage({
  prompt: "Text exchange between two people who matched on a dating app but then realize they work together",
  characterPack: "young-adults",
  backgroundVideoPack: "subway-surfers"
});

Comedy & Humor

Create funny conversations and awkward situations:
await client.templates.brainrot.iMessage({
  prompt: "Roommates texting about who ate the last slice of pizza, escalating into a full investigation",
  characterPack: "comedy-duo",
  backgroundVideoPack: "satisfying-videos"
});

await client.templates.brainrot.iMessage({
  prompt: "Text conversation about weird noises coming from the apartment upstairs at 3 AM",
  characterPack: "family-guy", 
  backgroundVideoPack: "minecraft-parkour"
});

Educational & Informative

Use conversations to teach or explain concepts:
await client.templates.brainrot.iMessage({
  prompt: "Student texting their friend explaining why they can't come to study group because of increasingly absurd excuses",
  characterPack: "student-voices",
  backgroundVideoPack: "minecraft-parkour"
});

Best Practices

Conversation Writing

Write conversations that feel like real text exchanges:Good:
  • Use abbreviations and emojis naturally
  • Include typos and autocorrect fails
  • Show realistic timing and response patterns
  • Include “typing…” indicators conceptually
Avoid:
  • Perfect grammar and spelling
  • Unrealistic long responses
  • Formal language that doesn’t match texting style
Structure conversations with dramatic arcs: 1. Setup: Establish the situation 2. Rising Action: Build tension or confusion 3. Climax: Peak moment of drama/comedy 4. Resolution: Satisfying conclusion or cliffhanger Example flow: - Normal conversation starts - Misunderstanding occurs - Escalation and drama - Truth revealed or funny resolution
When enableImages is true, conversations become more engaging:
  • Reaction GIFs at key moments
  • Emoji reactions to messages
  • Images that support the story
  • Screenshots or memes referenced in conversation

Character Voice Selection

🎭 Drama Voices

Best for: Serious conversations, relationship drama, family conflicts Character Packs: drama-voices, young-adults, family-voices Voice Style: Emotional, authentic, relatable

😂 Comedy Voices

Best for: Funny situations, awkward moments, absurd conversations Character Packs: family-guy, comedy-duo, rick-and-morty Voice Style: Comedic timing, exaggerated reactions

👨‍👩‍👧‍👦 Family Voices

Best for: Parent-child conversations, sibling interactions Character Packs: family-voices, parent-teen, siblings Voice Style: Age-appropriate, realistic family dynamics

🎓 Student Voices

Best for: School/college scenarios, friend groups, young adult issues Character Packs: student-voices, young-adults, college-friends Voice Style: Casual, modern slang, peer-to-peer

Advanced Examples

Multi-Character Group Chat

async function createGroupChatDrama() {
	const task = await client.templates.brainrot.iMessage({
		prompt: `Create a group chat conversation with 4 friends planning a surprise party. 
    One person accidentally invites the birthday person to the planning chat. 
    Show the panic, quick thinking, and cover-up attempts that follow.`,
		characterPack: "young-adults",
		backgroundVideoPack: "subway-surfers",
		enableImages: true,
	});

	return task;
}

Escalating Conversation

async function createEscalatingDrama() {
	const task = await client.templates.brainrot.iMessage({
		prompt: `Two roommates start with a simple text about who should buy groceries. 
    It escalates through passive-aggressive comments, bringing up old grievances, 
    and eventually someone threatens to move out. 
    End with a funny resolution when they realize they're arguing over a $3 gallon of milk.`,
		characterPack: "comedy-duo",
		backgroundVideoPack: "minecraft-parkour",
	});

	return task;
}

Mystery/Suspense Format

async function createMysteryConversation() {
	const task = await client.templates.brainrot.iMessage({
		prompt: `Person texts their friend about weird things happening in their apartment: 
    food disappearing, furniture moved, strange sounds. 
    Friend helps them investigate through text, considering everything from ghosts to break-ins. 
    Plot twist: it's their sleepwalking roommate who's been doing everything.`,
		characterPack: "drama-voices",
		backgroundVideoPack: "satisfying-videos",
		enableImages: true,
	});

	return task;
}

Batch Story Series

Create a series of connected conversations:
async function createStoryArc() {
	const episodePrompts = [
		"Episode 1: Two friends make plans to start a business selling cookies",
		"Episode 2: Their first day of business goes terribly wrong with burnt cookies and angry customers",
		"Episode 3: They pivot to selling the story of their failed business and accidentally go viral",
		"Episode 4: Fame goes to their heads and they start fighting over creative control",
		"Episode 5: They reconcile and decide to just be friends who occasionally bake together",
	];

	const tasks = await Promise.all(
		episodePrompts.map(prompt =>
			client.templates.brainrot.iMessage({
				prompt,
				characterPack: "young-adults",
				backgroundVideoPack: "minecraft-parkour",
				enableImages: true,
				webhookUrl: "https://your-app.com/webhook",
			})
		)
	);

	console.log(`📱 Created ${tasks.length} episodes of the story arc`);
	return tasks;
}

Platform Optimization

TikTok & Instagram Reels

Optimize for short-form vertical content:
async function createTikTokConversation() {
	const task = await client.templates.brainrot.iMessage({
		prompt:
			"Quick, punchy conversation: Person asking their friend to lie to their parents about where they are, but the friend is terrible at lying and makes it obvious",
		characterPack: "young-adults",
		backgroundVideoPack: "subway-surfers",
	});

	// Auto-upload with TikTok-optimized title
	if (task.outputUrl) {
		await client.socialMedia.uploadToTikTok({
			videoUrl: task.outputUrl,
			title: "When your friend is the worst liar 😭 #texting #friends #drama #relatable",
			username: "your_user_id",
			privacy_level: "PUBLIC_TO_EVERYONE",
		});
	}
}

YouTube Shorts

For slightly longer-form content:
async function createYouTubeConversation() {
	const task = await client.templates.brainrot.iMessage({
		prompt:
			"Longer conversation: College student trying to convince their parents they need more money for 'textbooks' but parent is getting suspicious and starts asking detailed questions",
		characterPack: "family-voices",
		backgroundVideoPack: "minecraft-parkour",
		enableImages: true,
	});

	return task;
}

Error Handling & Validation

import { GigaReels, ValidationError } from "@gigareels/sdk";

async function safeConversationGeneration(conversationPrompt) {
	try {
		// Validate prompt
		if (conversationPrompt.length < 20) {
			throw new Error("Conversation prompt too short - needs more context");
		}

		if (!conversationPrompt.includes("conversation") && !conversationPrompt.includes("text")) {
			console.warn(
				"⚠️  Consider adding 'conversation' or 'text' to your prompt for better results"
			);
		}

		const task = await client.templates.brainrot.iMessage({
			prompt: conversationPrompt,
			characterPack: "young-adults",
			backgroundVideoPack: "subway-surfers",
			enableImages: true,
		});

		console.log("✅ Text conversation video started:", task.taskId);
		return task;
	} catch (error) {
		if (error instanceof ValidationError) {
			console.error("❌ Validation failed:", error.message);
		} else {
			console.error("❌ Generation failed:", error.message);
		}
		throw error;
	}
}

Content Ideas Generator

const conversationTemplates = {
	drama: [
		"Two friends arguing over [topic] that reveals deeper friendship issues",
		"Someone discovers their [relationship] has been [betrayal] through text evidence",
		"Group chat where [secret] gets accidentally revealed",
		"Conversation where someone has to deliver [bad news] to [person]",
	],

	comedy: [
		"Roommates texting about [everyday situation] that gets absurdly complicated",
		"Person trying to [excuse] but their friend won't let them off the hook",
		"Two people having completely different conversations without realizing it",
		"Someone autocorrects into an embarrassing situation with [person]",
	],

	relatable: [
		"Student texting parent about [college situation] while trying to sound responsible",
		"Friends planning [event] but everything goes wrong in the planning stage",
		"Person asking for advice about [situation] and getting terrible suggestions",
		"Conversation about [modern life problem] that everyone can relate to",
	],
};

function generateConversationIdea(category) {
	const templates = conversationTemplates[category] || conversationTemplates.comedy;
	const template = templates[Math.floor(Math.random() * templates.length)];

	// Add specific details to make it more engaging
	const topics = {
		"[topic]": ["who should pay for dinner", "which movie to watch", "whose turn to clean"],
		"[relationship]": ["best friend", "romantic partner", "sibling"],
		"[betrayal]": ["talking behind their back", "stealing their ideas", "dating their ex"],
		"[secret]": ["surprise party plans", "crush information", "embarrassing story"],
		"[bad news]": ["test failure", "job rejection", "relationship breakup"],
		"[person]": ["parent", "boss", "crush", "ex"],
		"[everyday situation]": ["missing food", "loud neighbors", "WiFi problems"],
		"[excuse]": ["skip work", "avoid plans", "get out of trouble"],
		"[college situation]": ["needing money", "failing a class", "party gone wrong"],
		"[event]": ["road trip", "birthday party", "study session"],
		"[modern life problem]": [
			"social media drama",
			"dating app confusion",
			"work from home issues",
		],
	};

	let filledTemplate = template;
	Object.entries(topics).forEach(([placeholder, options]) => {
		if (filledTemplate.includes(placeholder)) {
			const choice = options[Math.floor(Math.random() * options.length)];
			filledTemplate = filledTemplate.replace(placeholder, choice);
		}
	});

	return filledTemplate;
}

// Usage
const idea = generateConversationIdea("drama");
console.log("💡 Conversation idea:", idea);

Use Cases

// Daily drama series
const dailyDrama = await client.templates.brainrot.iMessage({
  prompt: "Person discovers their roommate has been using their Netflix account to watch exclusively cooking shows and now their algorithm is ruined",
  characterPack: "young-adults",
  backgroundVideoPack: "subway-surfers"
});

// Relatable content
const relatable = await client.templates.brainrot.iMessage({
  prompt: "College student texting their parent asking for money for 'textbooks' but the parent starts asking for ISBN numbers and receipts",
  characterPack: "family-voices",
  backgroundVideoPack: "minecraft-parkour"
});

Next Steps

1

Plan Your Conversations

Outline the dramatic arc and key moments of your conversation
2

Choose Appropriate Voices

Select character packs that match your content tone and audience
3

Test Different Scenarios

Try various conversation types to see what resonates with your audience
4

Optimize for Platforms

Adjust conversation length and style for each social media platform

Start Creating Conversations

Generate your first text message video and explore other render types for more content options.