Chatous Upload Profile Photo API
Upload a profile photo to your Chatous account from an image URL or base64 bytes. Takes your connect.sid session cookie. Chatous limits uploads per exit IP rather than per account, so pass your own proxy URL if you upload from several accounts. Returns the uploaded size and filename.
Last updated
How to call it
Send one POST to api.upapi.io/chatous-upload-profile-photo.post with your key in the X-Api-Key header and the parameters below as a JSON body. Each call spends 2 weighted units of your monthly quota. The operation times out after 60 seconds. Responses are not cached; every call runs the operation.
POST https://api.upapi.io/chatous-upload-profile-photo.post
Chatous Upload Profile Photo API reference
Request parameters
- filename
- string — Filename sent with the multipart part.
- imageUrl
- string — URL of the image to upload. Pass this OR
imageFile. - proxyUrl
- string — Optional proxy URL. Worth passing here more than anywhere else: Chatous rate-limits this endpoint PER EXIT IP, so accounts sharing an exit share one budget.
- imageFile
- string — Base64-encoded image bytes. Pass this OR
imageUrl. - connectSid
- stringrequired — The account's connect.sid cookie value.
Response fields
- filename
- stringrequired
- elapsedMs
- integerrequired
- uploadedAt
- stringrequired
- uploadedBytes
- integerrequired
Example request and response
The example response is generated from this operation’s published output schema — it shows the shape and field names, not values from a recorded call.
{
"filename": "avatar.jpg",
"connectSid": "example"
}{
"filename": "example",
"elapsedMs": 1,
"uploadedAt": "example",
"uploadedBytes": 1
}Code snippets
cURL
curl -X POST https://api.upapi.io/chatous-upload-profile-photo.post \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY' \
-d '{ "filename": "avatar.jpg", "connectSid": "example" }'JavaScript
const response = await fetch('https://api.upapi.io/chatous-upload-profile-photo.post', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY',
},
body: JSON.stringify({
"filename": "avatar.jpg",
"connectSid": "example"
}),
});
const data = await response.json();
console.log(data);Python
import requests
response = requests.post(
'https://api.upapi.io/chatous-upload-profile-photo.post',
headers={
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY',
},
json={
"filename": "avatar.jpg",
"connectSid": "example"
},
)
print(response.json())Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{ "filename": "avatar.jpg", "connectSid": "example" }`)
req, _ := http.NewRequest("POST", "https://api.upapi.io/chatous-upload-profile-photo.post", bytes.NewBuffer(payload))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result map[string]any
json.Unmarshal(body, &result)
fmt.Println(result)
}PHP
<?php
$payload = json_encode([
'filename' => 'avatar.jpg',
'connectSid' => 'example',
]);
$ch = curl_init('https://api.upapi.io/chatous-upload-profile-photo.post');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'x-api-key: YOUR_API_KEY',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
var_dump($data);Ruby
require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.upapi.io/chatous-upload-profile-photo.post')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Post.new(uri.path)
request['Content-Type'] = 'application/json'
request['x-api-key'] = 'YOUR_API_KEY'
request.body = { "filename": "avatar.jpg", "connectSid": "example" }.to_json
response = http.request(request)
puts JSON.parse(response.body)Java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
OkHttpClient client = new OkHttpClient();
ObjectMapper mapper = new ObjectMapper();
String json = "{ \"filename\": \"avatar.jpg\", \"connectSid\": \"example\" }";
RequestBody body = RequestBody.create(json, MediaType.get("application/json"));
Request request = new Request.Builder()
.url("https://api.upapi.io/chatous-upload-profile-photo.post")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("x-api-key", "YOUR_API_KEY")
.build();
try (Response response = client.newCall(request).execute()) {
Map<?, ?> result = mapper.readValue(response.body().string(), Map.class);
System.out.println(result);
}C#
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");
var payload = JsonSerializer.Deserialize<object>("{ \"filename\": \"avatar.jpg\", \"connectSid\": \"example\" }");
var response = await client.PostAsJsonAsync("https://api.upapi.io/chatous-upload-profile-photo.post", payload);
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);Frequently asked questions
How much does the Chatous Upload Profile Photo API cost per call?
Each call spends 2 weighted units of your plan's monthly quota. Full pricing is at https://upapi.io/pricing.
How do I authenticate to the Chatous Upload Profile Photo API?
Send your key in the X-Api-Key header. A free guest key is available without creating an account.
Are Chatous Upload Profile Photo API responses cached?
No — every call runs the operation live; responses are not cached.