curl "https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data: character } = await response.json();
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
character = response.json()["data"]
{
"success": true,
"message": "Character fetched successfully",
"data": {
"id": "cm4xa1b2c0001cd34ef56gh78",
"name": "Mia",
"description": "Late 20s, red curly hair, denim jacket",
"voiceProfile": "Warm, slightly husky, speaks fast",
"presetId": "cinematic",
"imageUrl": "https://files.hooked.so/team/public/mia--fid--1a2b.png",
"imageStatus": "COMPLETED",
"createdAt": "2026-09-30T18:00:00.000Z"
}
}
{
"success": false,
"message": "Character not found"
}
Resources
Get Character
One Cinematic character of your team
GET
/
v1
/
character
/
{characterId}
curl "https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data: character } = await response.json();
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
character = response.json()["data"]
{
"success": true,
"message": "Character fetched successfully",
"data": {
"id": "cm4xa1b2c0001cd34ef56gh78",
"name": "Mia",
"description": "Late 20s, red curly hair, denim jacket",
"voiceProfile": "Warm, slightly husky, speaks fast",
"presetId": "cinematic",
"imageUrl": "https://files.hooked.so/team/public/mia--fid--1a2b.png",
"imageStatus": "COMPLETED",
"createdAt": "2026-09-30T18:00:00.000Z"
}
}
{
"success": false,
"message": "Character not found"
}
Overview
Returns one of your team’s Cinematic characters. Use it to check an id before passing it incharacterIds of Create Cinematic Video. imageUrl is a signed URL that expires, or null when the character has no photo yet. After Create Character or Update Character with imageUrl or generatePortrait, poll this endpoint until imageStatus is COMPLETED (or FAILED). Free and safe to retry.
curl "https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data: character } = await response.json();
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/character/cm4xa1b2c0001cd34ef56gh78",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
character = response.json()["data"]
{
"success": true,
"message": "Character fetched successfully",
"data": {
"id": "cm4xa1b2c0001cd34ef56gh78",
"name": "Mia",
"description": "Late 20s, red curly hair, denim jacket",
"voiceProfile": "Warm, slightly husky, speaks fast",
"presetId": "cinematic",
"imageUrl": "https://files.hooked.so/team/public/mia--fid--1a2b.png",
"imageStatus": "COMPLETED",
"createdAt": "2026-09-30T18:00:00.000Z"
}
}
{
"success": false,
"message": "Character not found"
}
Errors
| Status | When |
|---|---|
| 401 | Missing or invalid API key (code: "not_authenticated") |
| 403 | The team does not have the Hooked app product (code: "entitlement_required") |
| 404 | No such character in your team. Another team’s character, or an id that is not one, answers the same Character not found |
Authorizations
Path Parameters
The character id, from List Characters.