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.
1. claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
2. Restart Claude Code
3. Paste this prompt: Generate audio: "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."
1. codex plugin install runapi-mcp@agents
2. Restart Codex
3. Paste this prompt: Generate audio: "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."
1. npx @runapi.ai/mcp init cursor
2. Restart Cursor
3. Paste this prompt: Generate audio: "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."
1. npx @runapi.ai/mcp init windsurf
2. Restart Windsurf
3. Paste this prompt: Generate audio: "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
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": "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."
});
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: "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."
)
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\":\"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.\"}")
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
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
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.