curl "https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data } = await response.json();
console.log(data.status, data.reactions.map((reaction) => [reaction.id, reaction.status]));
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
data = response.json()["data"]
print(data["status"], [(r["id"], r["status"]) for r in data["reactions"]])
{
"success": true,
"message": "Avatar fetched successfully",
"data": {
"id": "cm7a1v9t20003ab12cd34ef56",
"name": "Maya",
"type": "Realistic",
"gender": "Female",
"age": "Young Adult",
"image": "https://cdn.hooked.so/team/public/image/cm7a1v9t2/maya.png?X-Amz-Signature=...",
"status": "COMPLETED",
"situation": ["Kitchen"],
"emotions": ["Happy"],
"skinTone": "medium",
"isCustom": true,
"source": "custom",
"createdAt": "2026-10-05T09:12:44.000Z",
"reactions": [
{
"id": "cm7a2r4k80011ab12gh78ij90",
"reaction": "surprise",
"status": "COMPLETED",
"videoUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.mp4?X-Amz-Signature=...",
"thumbnailUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.jpg?X-Amz-Signature=...",
"createdAt": "2026-10-05T09:20:03.000Z"
}
]
}
}
{
"success": false,
"message": "Avatar not found"
}
Avatars
Get Avatar
One of your team’s own avatars, with its Hook + Demo reactions
GET
/
v1
/
avatar
/
{avatarId}
curl "https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data } = await response.json();
console.log(data.status, data.reactions.map((reaction) => [reaction.id, reaction.status]));
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
data = response.json()["data"]
print(data["status"], [(r["id"], r["status"]) for r in data["reactions"]])
{
"success": true,
"message": "Avatar fetched successfully",
"data": {
"id": "cm7a1v9t20003ab12cd34ef56",
"name": "Maya",
"type": "Realistic",
"gender": "Female",
"age": "Young Adult",
"image": "https://cdn.hooked.so/team/public/image/cm7a1v9t2/maya.png?X-Amz-Signature=...",
"status": "COMPLETED",
"situation": ["Kitchen"],
"emotions": ["Happy"],
"skinTone": "medium",
"isCustom": true,
"source": "custom",
"createdAt": "2026-10-05T09:12:44.000Z",
"reactions": [
{
"id": "cm7a2r4k80011ab12gh78ij90",
"reaction": "surprise",
"status": "COMPLETED",
"videoUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.mp4?X-Amz-Signature=...",
"thumbnailUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.jpg?X-Amz-Signature=...",
"createdAt": "2026-10-05T09:20:03.000Z"
}
]
}
}
{
"success": false,
"message": "Avatar not found"
}
Overview
Returns one of your team’s own avatars: its status, image and tags, and its Hook + Demoreactions. Poll it after Generate Avatar until status is COMPLETED or FAILED, and after Create Reaction until the reaction is.
Library avatars are not served here; List Avatars has them. Another team’s avatar, a deleted one or an id that is not one answers 404 Avatar not found.
status | Meaning |
|---|---|
PROCESSING | A generation is running. image is null. |
COMPLETED | Ready: use the id as avatarId. |
FAILED | The generation failed and its credits were given back. A generation still running after 15 minutes reads FAILED too. |
PROCESSING, COMPLETED (with videoUrl and thumbnailUrl) or FAILED. The image and video URLs are signed and expire; read them again rather than storing them.
curl "https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const response = await fetch("https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56", {
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const { data } = await response.json();
console.log(data.status, data.reactions.map((reaction) => [reaction.id, reaction.status]));
import os
import requests
response = requests.get(
"https://api.hooked.so/v1/avatar/cm7a1v9t20003ab12cd34ef56",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
data = response.json()["data"]
print(data["status"], [(r["id"], r["status"]) for r in data["reactions"]])
{
"success": true,
"message": "Avatar fetched successfully",
"data": {
"id": "cm7a1v9t20003ab12cd34ef56",
"name": "Maya",
"type": "Realistic",
"gender": "Female",
"age": "Young Adult",
"image": "https://cdn.hooked.so/team/public/image/cm7a1v9t2/maya.png?X-Amz-Signature=...",
"status": "COMPLETED",
"situation": ["Kitchen"],
"emotions": ["Happy"],
"skinTone": "medium",
"isCustom": true,
"source": "custom",
"createdAt": "2026-10-05T09:12:44.000Z",
"reactions": [
{
"id": "cm7a2r4k80011ab12gh78ij90",
"reaction": "surprise",
"status": "COMPLETED",
"videoUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.mp4?X-Amz-Signature=...",
"thumbnailUrl": "https://cdn.hooked.so/team/public/avatar-reactions/cm7a2r4k8.jpg?X-Amz-Signature=...",
"createdAt": "2026-10-05T09:20:03.000Z"
}
]
}
}
{
"success": false,
"message": "Avatar not found"
}
Authorizations
Path Parameters
The id of one of your team's own avatars (from List Avatars with type=custom, or a create call). Library avatars are not accepted here.