Use with AI

Make a texting video with your AI assistant

texting.video turns a small JSON "draft" (a conversation plus a theme and a few settings) into an animated video. Any chatbot can write that draft for you. You still pick the theme and export the video yourself, so you stay in control of the result.

Option 1: Any chatbot

Paste this system prompt into Claude, ChatGPT, or any other assistant, then describe the scene you want. It will reply with a JSON draft. Save that to a .json file and import it in the editor (the import icon above the message list), or paste it straight into the bulk editor.

You write scripts for texting.video, which turns a JSON "draft" into an animated fake-text-message video for TikTok/Reels/Shorts.

Output ONLY a JSON object of the form { "themeId": string, "dialogue": [...], "settings": {...} }. No prose, no markdown fences.

Rules:
- themeId is one of: imessage, sms, android, teams, discord, slack, terminal, jrpg, true_crime. Default "imessage".
- dialogue is ordered. The FIRST unique speaker appears on the left (the other person); the SECOND unique speaker appears on the right (the protagonist). Use "Me" for that side.
- Keep messages short and punchy, like real texting. 4-12 messages is ideal.
- Add emoji reactions with "reactions": ["😂"] on the bubble being reacted to (sparingly).
- For narration use { "type": "narrator", "text": "..." }; for a jump in time { "type": "time-gap", "label": "Three years later" }.
- To show messages being physically typed on an on-screen keyboard, set settings.animationStyle:"human" and pick a keyboard theme (imessage, sms, or android). Otherwise use "realistic".
- Put the other person's name in settings.contactName (1:1) or settings.channelName (group).

Example:
{
  "themeId": "imessage",
  "settings": {
    "animationStyle": "human",
    "humanTypingIntensity": "natural",
    "showKeyboard": true,
    "contactName": "Alex"
  },
  "dialogue": [
    {
      "speaker": "Alex",
      "text": "ok I just sent you the address"
    },
    {
      "speaker": "Me",
      "text": "wait this says it's a 3 hour drive??"
    },
    {
      "speaker": "Alex",
      "text": "yeah but the views are insane trust me",
      "reactions": [
        "😍"
      ]
    },
    {
      "speaker": "Me",
      "text": "you said that about the last hike"
    },
    {
      "speaker": "Alex",
      "text": "I personally spoke to every bee in the area",
      "reactions": [
        "😂"
      ]
    },
    {
      "speaker": "Me",
      "text": "fine but you're buying coffee"
    }
  ]
}

The same prompt is available as plain text at /for-llms.txt

Option 2: Create a link from the API

POST a draft and get back a link that opens the editor prefilled. Handy for scripts, bots, and automations. No account required.

curl -X POST https://texting.video/api/drafts \
  -H 'content-type: application/json' \
  -d '{"themeId":"imessage","settings":{"animationStyle":"human","humanTypingIntensity":"natural","showKeyboard":true,"contactName":"Alex"},"dialogue":[{"speaker":"Alex","text":"ok I just sent you the address"},{"speaker":"Me","text":"wait this says it's a 3 hour drive??"},{"speaker":"Alex","text":"yeah but the views are insane trust me","reactions":["😍"]},{"speaker":"Me","text":"you said that about the last hike"},{"speaker":"Alex","text":"I personally spoke to every bee in the area","reactions":["😂"]},{"speaker":"Me","text":"fine but you're buying coffee"}]}'
# -> { "id": "...", "url": "https://texting.video/app?d=..." }

Option 3: Connect via MCP

Add our remote Model Context Protocol server to Claude, Cursor, or any MCP client. Your assistant writes the scene and hands you a ready-to-render link, all inside the chat.

https://texting.video/mcp

Streamable HTTP. Tools: create_texting_video, list_themes, get_spec.

The draft format

A draft is { dialogue, themeId, settings }. The first unique speaker shows on the left (the other person); the second unique speaker shows on the right (you), so use "Me" for your side. Set animationStyle to "human" to show messages typed on an on-screen keyboard.

{
  "themeId": "imessage",
  "settings": {
    "animationStyle": "human",
    "humanTypingIntensity": "natural",
    "showKeyboard": true,
    "contactName": "Alex"
  },
  "dialogue": [
    {
      "speaker": "Alex",
      "text": "ok I just sent you the address"
    },
    {
      "speaker": "Me",
      "text": "wait this says it's a 3 hour drive??"
    },
    {
      "speaker": "Alex",
      "text": "yeah but the views are insane trust me",
      "reactions": [
        "😍"
      ]
    },
    {
      "speaker": "Me",
      "text": "you said that about the last hike"
    },
    {
      "speaker": "Alex",
      "text": "I personally spoke to every bee in the area",
      "reactions": [
        "😂"
      ]
    },
    {
      "speaker": "Me",
      "text": "fine but you're buying coffee"
    }
  ]
}

Themes you can use for themeId: imessage (keyboard), sms (keyboard), android (keyboard), teams, discord, slack, terminal, jrpg, true_crime.

The full machine-readable schema lives at /api/spec.

Ready to try it? Open the editor or read the plain-text version at /for-llms.txt.