작업 상태 조회
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"
}
}작업 관리
작업 상태 조회
작업 ID로 비동기 작업의 상태, 진행률 및 결과 정보를 조회합니다
GET
/
v1
/
tasks
/
{task_id}
작업 상태 조회
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"
}
}인증
##모든 API는 Bearer Token 인증이 필요합니다##
API Key 받기:
API Key 관리 페이지를 방문하여 API Key를 받으세요
요청 헤더에 추가:
Authorization: Bearer YOUR_API_KEY
경로 매개변수
작업 ID, 조회 시 {}를 무시하고 비동기 작업 응답 본문의 id를 경로 끝에 추가하세요
응답
작업 상태 세부 정보
작업 생성 타임스탬프
예시:
1756817821
작업 ID
예시:
"task-unified-1756817821-4x3rx6ny"
사용된 모델
예시:
"gemini-3.1-flash-image-preview"
작업 유형
사용 가능한 옵션:
image.generation.task, video.generation.task, audio.generation.task 예시:
"image.generation.task"
작업 진행률 백분율
필수 범위:
0 <= x <= 100예시:
100
작업 결과 목록 (완료 시 제공)
예시:
["http://example.com/image.jpg"]
작업 상태
사용 가능한 옵션:
pending, processing, completed, failed 예시:
"completed"
작업 실패 시 오류 정보 (status가 failed인 경우에만 표시). 참고: 여기서 error.code는 문자열 유형의 비즈니스 오류 코드이며 HTTP 상태 코드와 다릅니다. 전체 오류 코드 목록은 오류 코드 참조 문서를 확인하세요.
Show child attributes
Show child attributes
작업 상세 정보
Show child attributes
Show child attributes
작업 유형
사용 가능한 옵션:
image, video, audio, text 예시:
"image"
⌘I