Hold on, let me think. <break time="1.5s" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out.
1. claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
2. Restart Claude Code
3. Paste this prompt: Generate audio: "Hold on, let me think. <break time="1.5s" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
1. codex plugin install runapi-mcp@agents
2. Restart Codex
3. Paste this prompt: Generate audio: "Hold on, let me think. <break time="1.5s" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
1. npx @runapi.ai/mcp init cursor
2. Restart Cursor
3. Paste this prompt: Generate audio: "Hold on, let me think. <break time="1.5s" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
1. npx @runapi.ai/mcp init windsurf
2. Restart Windsurf
3. Paste this prompt: Generate audio: "Hold on, let me think. <break time="1.5s" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
curl -X POST https://runapi.ai/api/v1/elevenlabs/text_to_sound \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "text-to-speech-multilingual-v2",
"text": "Hold on, let me think. <break time=\"1.5s\" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
}
JSON
import { ElevenlabsClient } from "@runapi.ai/elevenlabs";
const client = new ElevenlabsClient({
apiKey: process.env.RUNAPI_API_KEY,
});
const result = await client.textToSound.run({
"model": "text-to-speech-multilingual-v2",
"text": "Hold on, let me think. <break time=\"1.5s\" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
});
console.log(result.id);
require "runapi/elevenlabs"
client = RunApi::Elevenlabs::Client.new
result = client.text_to_sound.run(
model: "text-to-speech-multilingual-v2",
text: "Hold on, let me think. <break time=\"1.5s\" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out."
)
puts result.id
package main
import (
"context"
"fmt"
"log"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader("{\"model\":\"text-to-speech-multilingual-v2\",\"text\":\"Hold on, let me think. <break time=\\\"1.5s\\\" /> Alright, I've got it. The key to understanding this phenomenon is not in the data itself, but in what the data leaves out.\"}")
req, err := http.NewRequestWithContext(context.Background(), http.MethodPost, "https://runapi.ai/api/v1/elevenlabs/text_to_sound", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUNAPI_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}
text-to-speech-multilingual-v2/api/v1/elevenlabs/text_to_soundGet API Key
The old lighthouse keeper climbed the spiral staircase one last time. Each iron step rang out beneath his boots, echoing off the curved stone walls as it had for thirty-seven years. At the top, he paused to catch his breath and looked out across the Atlantic. The beam would spin tonight without him. Tomorrow, the automation engineers would arrive, and the light would keep itself. He pressed his palm flat against the cold glass of the lantern room and whispered goodbye to the sea.
curl -X POST https://runapi.ai/api/v1/elevenlabs/text_to_sound \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "text-to-speech-multilingual-v2",
"text": "The old lighthouse keeper climbed the spiral staircase one last time. Each iron step rang out beneath his boots, echoing off the curved stone walls as it had for thirty-seven years. At the top, he paused to catch his breath and looked out across the Atlantic. The beam would spin tonight without him. Tomorrow, the automation engineers would arrive, and the light would keep itself. He pressed his palm flat against the cold glass of the lantern room and whispered goodbye to the sea."
}
JSON
FAQ
Using this text-to-speech-multilingual-v2 prompt
How do I copy this prompt safely?
Use the copy button beside the full prompt block. It copies only the prompt text, not surrounding page labels, so you can paste it into an agent instruction, a JSON request body, or your own prompt library.
Why does the detail page show parameters?
Some prompts were collected with saved generation settings such as aspect ratio, duration, or voice controls. When parameters exist, the page lists them separately so you can reuse the prompt text and the structured settings together.
Which endpoint should I call?
Use the endpoint path shown in the API code block. The path is generated from the prompt's RunAPI service and endpoint name, then rendered as the public API URL used by curl and SDK examples.
Can I use this prompt in an agent instead of code?
Yes. Pick Claude Code, Codex, Cursor, or Windsurf in the tab switcher, install the RunAPI MCP Server, and paste the generated instruction. The instruction includes the full prompt text.