What it’s good at
- 6 preset voices, US and UK
- Natural reading, adjustable speed
- No voice cloning
Details
| Makes | Voice |
| Speed | A few seconds |
| Licence | Apache 2.0 |
| Made by | hexgrad |
| Reach it | kind "voice" · make_voice |
| Status | On now |
Start a creation, then check it with its id (or pass a webhook). Keys: API keys. Full reference: Docs.
curl -X POST https://phantasia.pics/api/v1/creations \
-H "Authorization: Bearer $PHANTASIA_KEY" -H "Content-Type: application/json" \
-d '{"kind":"voice","prompt":"Once upon a time, in a lighthouse by the sea, lived a very curious cat.","options":{"voice":"af_heart","speed":1}}'const res = await fetch("https://phantasia.pics/api/v1/creations", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHANTASIA_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"kind": "voice",
"prompt": "Once upon a time, in a lighthouse by the sea, lived a very curious cat.",
"options": {
"voice": "af_heart",
"speed": 1
}
}),
});
let creation = await res.json();
while (!["done", "failed", "blocked"].includes(creation.status)) {
await new Promise((r) => setTimeout(r, 3000));
creation = await (await fetch(`https://phantasia.pics/api/v1/creations/${creation.id}`, {
headers: { Authorization: `Bearer ${process.env.PHANTASIA_KEY}` },
})).json();
}
console.log(creation.url);import os, time, requests
key = {"Authorization": f"Bearer {os.environ['PHANTASIA_KEY']}"}
creation = requests.post("https://phantasia.pics/api/v1/creations", headers=key, json={
"kind": "voice",
"prompt": "Once upon a time, in a lighthouse by the sea, lived a very curious cat.",
"options": {
"voice": "af_heart",
"speed": 1
}
}).json()
while creation.get("status") not in ("done", "failed", "blocked"):
time.sleep(3)
creation = requests.get(f"https://phantasia.pics/api/v1/creations/{creation['id']}", headers=key).json()
print(creation["url"])kind "voice" · make_voice
Ask your agent: “Read this bedtime story in a warm voice: {story}”