Generate talking avatar videos by combining an image with audio (either from a custom URL or a completed TTS task).
Pricing
For current pricing, see the Pricing page.
Authentication
All endpoints require authentication using Bearer token authorization:
-H 'Authorization: Bearer YOUR_API_KEY'
Request
With Audio URL
curl -X POST 'https://api.unifically.com/higgsfield/speak' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"image_url": "https://example.com/person.jpg",
"audio_url": "https://example.com/speech.wav",
"prompt": "A person speaking with natural expressions",
"quality": "basic"
}'
With TTS Task ID
curl -X POST 'https://api.unifically.com/higgsfield/speak' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"image_url": "https://example.com/person.jpg",
"audio_task_id": "8e93f884-31d1-478d-92f6-ffc7ff1e868f",
"prompt": "A person speaking with natural expressions",
"quality": "high"
}'
Parameters
URL of the person/avatar image
Task ID from a completed TTS job
Text description for the video generation
Generation qualityOptions: "basic", "high"Default: "basic"
Whether to enhance/improve the prompt automaticallyDefault: true
Random seed for reproducible generation
Important Notes
- You must provide either
audio_url OR audio_task_id, but not both
- When using
audio_task_id, the system automatically validates that the task is a text2speech type and fetches the completed audio
Response
{
"code": 200,
"data": {
"task_id": "b7c92fe0-33c6-53fd-c975-566gc253f758",
"error": {}
}
}
Response Fields
HTTP status code (200 for success)
Response dataUnique identifier for this generation task
Error information (empty object for successful requests)
Error Responses
Invalid TTS Task Type:
{
"code": 400,
"data": {
"message": "Task 8e93f884-31d1-478d-92f6-ffc7ff1e868f is not a TTS job. Please provide a valid TTS task ID.",
"error": {}
}
}
TTS Task Not Completed:
{
"code": 400,
"data": {
"message": "TTS job is not completed yet (status: processing)",
"error": {}
}
}
Invalid Quality:
{
"code": 400,
"data": {
"message": "quality must be either \"high\" or \"basic\"",
"error": {}
}
}