Submit an image translation task
curl --request POST \
--url https://api.poyo.ai/api/generate/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "poyo-ai/image-translator",
"input": {
"image_urls": [
"https://example.com/poster.png"
],
"source_language": "auto",
"target_language": "ja"
}
}
'import requests
url = "https://api.poyo.ai/api/generate/submit"
payload = {
"model": "poyo-ai/image-translator",
"input": {
"image_urls": ["https://example.com/poster.png"],
"source_language": "auto",
"target_language": "ja"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'poyo-ai/image-translator',
input: {
image_urls: ['https://example.com/poster.png'],
source_language: 'auto',
target_language: 'ja'
}
})
};
fetch('https://api.poyo.ai/api/generate/submit', 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.poyo.ai/api/generate/submit",
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([
'model' => 'poyo-ai/image-translator',
'input' => [
'image_urls' => [
'https://example.com/poster.png'
],
'source_language' => 'auto',
'target_language' => 'ja'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.poyo.ai/api/generate/submit"
payload := strings.NewReader("{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.poyo.ai/api/generate/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.poyo.ai/api/generate/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "task-unified-1793176000-example",
"status": "not_started",
"created_time": "2026-10-28T10:30:00"
}
}{
"code": 400,
"error": {
"message": "Invalid request parameters",
"type": "validation_error"
}
}{
"code": 400,
"error": {
"message": "Invalid request parameters",
"type": "validation_error"
}
}AI Tools
Image Translator
Translate the text inside an image into another language and return a new image.
POST
/
api
/
generate
/
submit
Submit an image translation task
curl --request POST \
--url https://api.poyo.ai/api/generate/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "poyo-ai/image-translator",
"input": {
"image_urls": [
"https://example.com/poster.png"
],
"source_language": "auto",
"target_language": "ja"
}
}
'import requests
url = "https://api.poyo.ai/api/generate/submit"
payload = {
"model": "poyo-ai/image-translator",
"input": {
"image_urls": ["https://example.com/poster.png"],
"source_language": "auto",
"target_language": "ja"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'poyo-ai/image-translator',
input: {
image_urls: ['https://example.com/poster.png'],
source_language: 'auto',
target_language: 'ja'
}
})
};
fetch('https://api.poyo.ai/api/generate/submit', 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.poyo.ai/api/generate/submit",
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([
'model' => 'poyo-ai/image-translator',
'input' => [
'image_urls' => [
'https://example.com/poster.png'
],
'source_language' => 'auto',
'target_language' => 'ja'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.poyo.ai/api/generate/submit"
payload := strings.NewReader("{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.poyo.ai/api/generate/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.poyo.ai/api/generate/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"poyo-ai/image-translator\",\n \"input\": {\n \"image_urls\": [\n \"https://example.com/poster.png\"\n ],\n \"source_language\": \"auto\",\n \"target_language\": \"ja\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "task-unified-1793176000-example",
"status": "not_started",
"created_time": "2026-10-28T10:30:00"
}
}{
"code": 400,
"error": {
"message": "Invalid request parameters",
"type": "validation_error"
}
}{
"code": 400,
"error": {
"message": "Invalid request parameters",
"type": "validation_error"
}
}- After submission, a
task_idwill be returned. If you provided acallback_url, when the task status becomesfinishedorfailed, a POST request will be sent to thecallback_url. - Regardless of whether
callback_urlis provided, you can retrieve the response result through the unified Query Task Status endpoint.
Models
- poyo-ai/image-translator — Translate the text in one image
Required parameters
image_urls(array of strings): Exactly one image URL. JPEG, PNG, GIF, WebP, or BMP, up to 50 MB.target_language(string): Language to translate into, for exampleen,zh,ja,ko,fr,de,es,pt, orru.
Optional parameters
source_language(string): Language of the text in the image. Default isauto, which detects the language.
Output
A finished task returns one translated image infiles with file_type: image.
Examples
- Translate an image into Japanese — sets
image_urls,source_language,target_language.
Notes
- Only one image is accepted per task.
- The image URL must be publicly accessible. PoYo checks the URL before submitting and rejects unreachable files, unsupported types, and files over 50 MB.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json