Developer
API
Trulience API reference for token generation and avatar managementOverview
All endpoints use JSON. Authentication is via the x-api-key header.
Generate JWT Token
Generate a JWT token for avatar authentication.
Endpoint: POST /auth/generate-token
Request Headers
x-api-key: tru_live_***
Content-Type: application/jsonRequest Body
{
"avatar_id": "4386676996480451678",
"expire_at": 300
}| Field | Type | Required | Description |
|---|---|---|---|
avatar_id | string | Yes | Avatar ID to generate token for |
expire_at | integer | No | Token expiry in seconds. Default: 120. Range: 60-3600 |
Success Response (200 OK)
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 300,
"avatar_id": "4386676996480451678"
}| Field | Type | Description |
|---|---|---|
jwt | string | JWT token for avatar authentication |
expires_in | integer | Token expiry in seconds |
avatar_id | string | Avatar ID the token is valid for |
Error Responses
400 Bad Request - Invalid expire_at range
{
"error": {
"code": 19,
"message": "expire_at must be between 60 and 3600 seconds"
}
}401 Unauthorized - Invalid API Key
{
"error": {
"code": 16,
"message": "Invalid API Key"
}
}403 Forbidden - Missing Scope
{
"error": {
"code": 34,
"message": "API key lacks required scope"
}
}403 Forbidden - Avatar Not Allowed
{
"error": {
"code": 33,
"message": "API key is not authorized for this avatar"
}
}403 Forbidden - Origin Not Allowed
{
"error": {
"code": 35,
"message": "Origin is not allowed for this API key"
}
}429 Rate Limited
{
"error": {
"code": 36,
"message": "Too many requests. Please slow down."
}
}500 Internal Server Error
{
"error": {
"code": 45,
"message": "Internal server error occurred"
}
}Notes
- Tokens are single-use and cannot be refreshed
- Generate a new token for each user session
- Requires API key scope:
generate_tokens
List Avatars
Retrieve a paginated list of avatars for your account.
Endpoint: GET /avatars
Request Headers
x-api-key: tru_live_***Query Parameters
GET /avatars?page=0&size=20| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (0-indexed). Default: 0 |
size | integer | No | Results per page. Default: 20. Max: 100 |
Success Response (200 OK)
{
"avatars": [
{
"id": "4386676996481151678",
"name": "Amanda"
},
{
"id": "993237220279768598",
"name": "Amanda - Trulience"
}
],
"pagination": {
"page": 0,
"size": 20,
"total": 82,
"total_pages": 5,
"has_next": true
}
}| Field | Type | Description |
|---|---|---|
avatars | array | Array of avatar objects |
avatars[].id | string | Avatar unique identifier |
avatars[].name | string | Avatar display name |
pagination.page | integer | Current page number (0-indexed) |
pagination.size | integer | Results per page |
pagination.total | integer | Total number of avatars |
pagination.total_pages | integer | Total number of pages |
pagination.has_next | boolean | Whether more pages are available |
Error Responses
401 Unauthorized - Invalid API Key
{
"error": {
"code": 16,
"message": "Invalid API Key"
}
}403 Forbidden - Missing Scope
{
"error": {
"code": 34,
"message": "API key lacks required scope"
}
}429 Rate Limited
{
"error": {
"code": 36,
"message": "Too many requests. Please slow down."
}
}500 Internal Server Error
{
"error": {
"code": 45,
"message": "Internal server error occurred"
}
}Notes
- Avatars are sorted alphabetically by name
- Requires API key scope:
read_avatars