Upload Avatar
curl --request POST \
--url https://api.tess.im/digital-employees/avatar-upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-workspace-id: <x-workspace-id>' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.tess.im/digital-employees/avatar-upload"
payload = { "name": "<string>" }
headers = {
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.tess.im/digital-employees/avatar-upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tess.im/digital-employees/avatar-upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-workspace-id: <x-workspace-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tess.im/digital-employees/avatar-upload"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tess.im/digital-employees/avatar-upload")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tess.im/digital-employees/avatar-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyDigital Employees
Upload Avatar
Uploads an avatar image for use with a digital employee.
POST
/
digital-employees
/
avatar-upload
Upload Avatar
curl --request POST \
--url https://api.tess.im/digital-employees/avatar-upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-workspace-id: <x-workspace-id>' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.tess.im/digital-employees/avatar-upload"
payload = { "name": "<string>" }
headers = {
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.tess.im/digital-employees/avatar-upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tess.im/digital-employees/avatar-upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-workspace-id: <x-workspace-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tess.im/digital-employees/avatar-upload"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tess.im/digital-employees/avatar-upload")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tess.im/digital-employees/avatar-upload")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyThis endpoint accepts
multipart/form-data. The uploaded image will be processed and made available as an avatar URL and thumbnail URL.
Code Examples
curl --request POST \
--url 'https://api.tess.im/digital-employees/avatar-upload' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'x-workspace-id: YOUR_WORKSPACE_ID' \
--form 'avatar=@/path/to/avatar.png' \
--form 'name=My Employee Avatar'
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('avatar', fs.createReadStream('/path/to/avatar.png'));
form.append('name', 'My Employee Avatar');
const config = {
method: 'post',
url: 'https://api.tess.im/digital-employees/avatar-upload',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'x-workspace-id': 'YOUR_WORKSPACE_ID',
...form.getHeaders()
},
data: form
};
try {
const response = await axios(config);
console.log(response.data);
} catch (error) {
console.error(error);
}
import requests
url = "https://api.tess.im/digital-employees/avatar-upload"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"x-workspace-id": "YOUR_WORKSPACE_ID"
}
with open("/path/to/avatar.png", "rb") as f:
files = {"avatar": f}
data = {"name": "My Employee Avatar"}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
<?php
$curl = curl_init();
$cfile = new CURLFile('/path/to/avatar.png', 'image/png', 'avatar.png');
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tess.im/digital-employees/avatar-upload",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => [
'avatar' => $cfile,
'name' => 'My Employee Avatar'
],
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY",
"x-workspace-id: YOUR_WORKSPACE_ID"
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import java.io.*;
import java.net.URI;
import java.net.http.*;
import java.nio.file.*;
String boundary = "----FormBoundary" + System.currentTimeMillis();
Path filePath = Path.of("/path/to/avatar.png");
byte[] fileBytes = Files.readAllBytes(filePath);
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"avatar\"; filename=\"avatar.png\"\r\n"
+ "Content-Type: image/png\r\n\r\n";
byte[] bodyStart = body.getBytes();
String bodyEnd = "\r\n--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"name\"\r\n\r\n"
+ "My Employee Avatar\r\n"
+ "--" + boundary + "--\r\n";
byte[] bodyEndBytes = bodyEnd.getBytes();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(bodyStart);
baos.write(fileBytes);
baos.write(bodyEndBytes);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.tess.im/digital-employees/avatar-upload"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("x-workspace-id", "YOUR_WORKSPACE_ID")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(baos.toByteArray()))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
"path/filepath"
)
func main() {
var buf bytes.Buffer
writer := multipart.NewWriter(&buf)
file, _ := os.Open("/path/to/avatar.png")
defer file.Close()
part, _ := writer.CreateFormFile("avatar", filepath.Base("/path/to/avatar.png"))
io.Copy(part, file)
writer.WriteField("name", "My Employee Avatar")
writer.Close()
client := &http.Client{}
req, _ := http.NewRequest("POST", "https://api.tess.im/digital-employees/avatar-upload", &buf)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("x-workspace-id", "YOUR_WORKSPACE_ID")
req.Header.Set("Content-Type", writer.FormDataContentType())
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
using System.Net.Http;
using System.Net.Http.Headers;
using System.IO;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
client.DefaultRequestHeaders.Add("x-workspace-id", "YOUR_WORKSPACE_ID");
using var form = new MultipartFormDataContent();
var fileBytes = await File.ReadAllBytesAsync("/path/to/avatar.png");
var fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/png");
form.Add(fileContent, "avatar", "avatar.png");
form.Add(new StringContent("My Employee Avatar"), "name");
var response = await client.PostAsync(
"https://api.tess.im/digital-employees/avatar-upload",
form);
Console.WriteLine(await response.Content.ReadAsStringAsync());
require 'uri'
require 'net/http'
uri = URI('https://api.tess.im/digital-employees/avatar-upload')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
request['x-workspace-id'] = 'YOUR_WORKSPACE_ID'
form_data = [
['avatar', File.open('/path/to/avatar.png')],
['name', 'My Employee Avatar']
]
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
puts response.read_body
Headers
Include your API key in the
Authorization header as a Bearer token on every request.integer
required
ID of the workspace. Required for all Digital Employees API requests.
Request Body
file
required
Avatar image file. Maximum size: 5 MB. Accepted formats: JPEG, PNG, WebP.
string
Optional display name for the avatar. Maximum 255 characters.
Response
{
"data": {
"id": 1,
"url": "https://cdn.tess.im/avatars/abc123.png",
"thumbnail_url": "https://cdn.tess.im/avatars/abc123_thumb.png"
}
}
⌘I