curl --request GET \
--url https://api.evolink.ai/v1/tasks/{task_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.evolink.ai/v1/tasks/{task_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.evolink.ai/v1/tasks/{task_id}', 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.evolink.ai/v1/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/tasks/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.evolink.ai/v1/tasks/{task_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"created": 1756817821,
"id": "task-unified-1756817821-4x3rx6ny",
"model": "gemini-3.1-flash-image-preview",
"object": "image.generation.task",
"progress": 100,
"results": [
"http://example.com/image.jpg"
],
"status": "completed",
"error": {
"code": "content_policy_violation",
"message": "Content policy violation.\nYour request was blocked by safety filters.",
"type": "task_error"
},
"task_info": {
"can_cancel": false
},
"type": "image"
}{
"error": {
"code": "invalid_task_id",
"message": "Invalid task ID format, must start with 'task-unified-'",
"type": "invalid_request_error",
"param": "task_id"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required",
"type": "authentication_error"
}
}{
"error": {
"code": "quota_exceeded",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "permission_denied",
"message": "You don't have permission to access this task",
"type": "invalid_request_error"
}
}{
"error": {
"code": "task_not_found",
"message": "The requested task could not be found",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"type": "evo_api_error"
}
}{
"error": {
"code": "internal_error",
"message": "Failed to retrieve task status",
"type": "api_error"
}
}Interroger le statut de la tâche
Interroger le statut, la progression et les résultats des tâches asynchrones par ID de tâche
curl --request GET \
--url https://api.evolink.ai/v1/tasks/{task_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.evolink.ai/v1/tasks/{task_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.evolink.ai/v1/tasks/{task_id}', 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.evolink.ai/v1/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/tasks/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.evolink.ai/v1/tasks/{task_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"created": 1756817821,
"id": "task-unified-1756817821-4x3rx6ny",
"model": "gemini-3.1-flash-image-preview",
"object": "image.generation.task",
"progress": 100,
"results": [
"http://example.com/image.jpg"
],
"status": "completed",
"error": {
"code": "content_policy_violation",
"message": "Content policy violation.\nYour request was blocked by safety filters.",
"type": "task_error"
},
"task_info": {
"can_cancel": false
},
"type": "image"
}{
"error": {
"code": "invalid_task_id",
"message": "Invalid task ID format, must start with 'task-unified-'",
"type": "invalid_request_error",
"param": "task_id"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required",
"type": "authentication_error"
}
}{
"error": {
"code": "quota_exceeded",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "permission_denied",
"message": "You don't have permission to access this task",
"type": "invalid_request_error"
}
}{
"error": {
"code": "task_not_found",
"message": "The requested task could not be found",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"type": "evo_api_error"
}
}{
"error": {
"code": "internal_error",
"message": "Failed to retrieve task status",
"type": "api_error"
}
}Autorisations
##Toutes les API nécessitent une authentification Bearer Token##
Obtenir une clé API :
Visitez la Page de gestion des clés API pour obtenir votre clé API
Ajouter à l'en-tête de requête :
Authorization: Bearer YOUR_API_KEY
Paramètres de chemin
ID de la tâche, ignorer {} lors de l'interrogation, ajouter l'id du corps de réponse de la tâche asynchrone à la fin du chemin
Réponse
Détails du statut de la tâche
Horodatage de création de la tâche
1756817821
ID de tâche
"task-unified-1756817821-4x3rx6ny"
Modèle utilisé
"gemini-3.1-flash-image-preview"
Type de tâche
image.generation.task, video.generation.task, audio.generation.task "image.generation.task"
Pourcentage de progression de la tâche
0 <= x <= 100100
Liste des résultats de la tâche (fournie une fois terminée)
["http://example.com/image.jpg"]
Statut de la tâche
pending, processing, completed, failed "completed"
Informations d'erreur en cas d'echec de la tache (uniquement present lorsque status est "failed"). Remarque : error.code ici est un code d'erreur metier de type string, different des codes de statut HTTP. Consultez la Reference des Codes d'Erreur pour la liste complete.
Show child attributes
Show child attributes
Informations détaillées de la tâche
Show child attributes
Show child attributes
Type de tâche
image, video, audio, text "image"