Avatars
GET/v1/avatars
List the published Kanutus avatars: each person comes in variations (angles and settings) with the behavior clips you can pick
Response 200
| Name | Type | Description |
|---|---|---|
data required | object[] | |
data[].id required | string | |
data[].name required | string | |
data[].gender required | "female" | "male" | "other" | null | |
data[].age_band required | "25-35" | "36-50" | "51-65" | null | |
data[].style required | "formal" | "casual" | null | |
data[].poster_url required | string | null | Cover image (the first variation's photo when there is no dedicated cover) |
data[].variations required | object[] | |
data[].variations[].code required | string | a1–a3: same setting, different angles · v1–v3: another setting and outfit |
data[].variations[].kind required | "angle" | "scene" | |
data[].variations[].photo_url required | string | null | Still photo of this variation |
data[].variations[].video_types required | "talk-neutral" | "talk-agree" | "idle-aside" | "idle-monitor" | "talk-explain" | "talk-question"[] | Behavior clips you can pick for this variation (talk-neutral first) |
data[].variations[].preview_urls required | object | Short preview clip per video type (null = no preview yet; show the photo) |
data[].suggested_voices required | object | Suggested voice per language, e.g. {"pt": "…", "en": "…"} |
Example
curl
curl "https://api.kanutus.com/v1/avatars" \
-H "Authorization: Bearer $KANUTUS_API_KEY"Node.js
const res = await fetch("https://api.kanutus.com/v1/avatars", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.KANUTUS_API_KEY}`,
},
});
console.log(res.status, await res.json());Python
import os, uuid, requests
r = requests.request(
"GET",
"https://api.kanutus.com/v1/avatars",
headers={"Authorization": f"Bearer {os.environ['KANUTUS_API_KEY']}"},
)
print(r.status_code, r.json())Try it
Runs from your browser against the real API. Use a kt_test_ key: nothing is charged. The key stays in this tab only.
GET /v1/avatarsResponses by status
200 Published avatars
200
{
"data": [
{
"id": "string",
"name": "Avatar 07",
"gender": "female",
"age_band": "25-35",
"style": "formal",
"poster_url": "https://example.com",
"variations": [
{
"code": "a1",
"kind": "angle",
"photo_url": "https://example.com",
"video_types": [
"talk-neutral"
],
"preview_urls": {}
}
],
"suggested_voices": {}
}
]
}400 Invalid request
400 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 400,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}401 Missing, invalid, expired or revoked credential
401 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 401,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}403 Missing permission, blocked or not allowed
403 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 403,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}429 Rate limit exceeded (see RateLimit-* and Retry-After headers)
429 application/problem+json
{
"type": "https://docs.kanutus.com/errors",
"title": "<code>",
"status": 429,
"code": "<code>",
"message": "…",
"request_id": "req_…"
}