
EvoLink에서 Grok Imagine Image 2.0 API를 사용하는 방법
model: "grok-imagine-image-2.0"와 함께 POST /v1/images/generations를 보내고, 반환된 작업 id를 저장한 다음 작업이 completed 또는 failed에 도달할 때까지 GET /v1/tasks/{task_id}를 쿼리합니다.image_urls를 생략하세요. 참조에서 편집하거나 구성할 수 있는 공개 이미지 URL을 1~3개 포함하세요. 현재 가격 및 대화형 테스트를 보려면 Grok Imagine Image 2.0 모델 페이지를 사용하세요. 이 문서에서는 전체 매개변수 참조를 복제하는 대신 애플리케이션 흐름, 오류 처리, 저장 및 모델 대체에 중점을 둡니다.무엇을 만들 것인가
가이드가 끝나면 애플리케이션은 다음을 수행할 수 있습니다.
- 텍스트를 이미지로 변환하는 작업을 생성합니다.
- 모델 ID를 변경하지 않고 참조 편집으로 전환합니다.
- 다중 이미지 프롬프트에서 색인된 참조를 사용합니다.
- ID별로 비동기 작업을 추적합니다.
- 완료 콜백을 안전하게 수락합니다.
- 24시간 URL이 만료되기 전에 결과를 유지합니다.
- 최종 사용량과 실패한 작업 환불을 조정합니다.
- 워크로드나 작업 결과에 따라 필요할 때 대체 경로로 전달합니다.
시작하기 전에
| 목 | 현재 EvoLink 계약 |
|---|---|
| 기본 URL | https://api.evolink.ai |
| 작업 만들기 | POST /v1/images/generations |
| 쿼리 작업 | GET /v1/tasks/{task_id} |
| 입증 | Authorization: Bearer YOUR_API_KEY |
| 모델 | grok-imagine-image-2.0 |
| 텍스트를 이미지로 | image_urls 생략 |
| 이미지 편집 | 1~3개의 공개 HTTP/HTTPS 이미지 URL을 제공하세요. |
| 산출 | 1K/2K, 낮음/중간, n=1-10 |
| 처리 | 비동기 작업 |
| 결과 수명 | 24시간 |
1단계: API 키를 서버 측에 유지
셸 테스트의 경우 환경 변수에 키를 설정합니다.
export EVOLINK_API_KEY="your_api_key"${EVOLINK_API_KEY}를 사용합니다. 커밋될 코드 내부의 실제 키로 바꾸지 마세요.2단계: 텍스트를 이미지로 변환하는 작업 만들기
image_urls를 생략합니다.curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Editorial product photograph of a teal glass perfume bottle on pale limestone, warm coastal morning light, restrained luxury art direction, no text or logos",
"size": "1:1",
"resolution": "1K",
"quality": "medium",
"n": 1
}'id를 즉시 저장하세요.{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 3.06,
"user_group": "default"
}
}위의 예약 금액은 가격 약속이나 최종 청구 금액이 아닌 문서 예시입니다. 실시간 가격을 보려면 현재 모델 페이지를 사용하고 최종 사용을 위해서는 터미널 작업 응답을 사용하세요.
3단계: 비동기 작업 쿼리

id를 작업 엔드포인트에 추가합니다. 값 주위에 중괄호를 포함하지 마십시오.curl --request GET \
"https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}"processing, completed 또는 failed를 사용합니다. 완료된 응답에는 results, 구조화된 result_data 및 최종 usage가 포함됩니다.{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 100,
"status": "completed",
"results": ["https://cdn.evolink.ai/images/generated-image.jpg"],
"result_data": [
{
"url": "https://cdn.evolink.ai/images/generated-image.jpg",
"mime_type": "image/jpeg"
}
],
"type": "image",
"usage": {
"credits_used": 3.06,
"cost": {
"credits": 3.06,
"cny": 0.31,
"usd": 0.05
}
}
}해당 숫자 값은 예제 응답 값입니다. 자신의 터미널 작업에서 반환된 값을 기록하세요. 고객 청구액을 계산하는 데 이 예를 사용하지 마십시오.
4단계: 제어된 폴링 추가
폴링은 터미널 상태에서 중지되고, 요청 사이에서 물러나고, 애플리케이션 시간 초과를 적용해야 합니다. 다음 서버 측 TypeScript 예제는 작업 흐름을 명시적으로 유지합니다.
type GrokTaskStatus = "processing" | "completed" | "failed";
type GrokTask = {
id: string;
status: GrokTaskStatus;
progress: number;
results?: string[];
error?: {
code: string;
message: string;
type: "task_error";
};
};
const API_BASE_URL = "https://api.evolink.ai";
async function getTask(apiKey: string, taskId: string): Promise<GrokTask> {
const response = await fetch(`${API_BASE_URL}/v1/tasks/${taskId}`, {
headers: { Authorization: `Bearer ${apiKey}` },
cache: "no-store",
});
if (!response.ok) {
throw new Error(`Task query failed with HTTP ${response.status}`);
}
return response.json() as Promise<GrokTask>;
}
async function waitForTask(
apiKey: string,
taskId: string,
timeoutMs = 180_000,
): Promise<GrokTask> {
const startedAt = Date.now();
let intervalMs = 2_000;
while (Date.now() - startedAt < timeoutMs) {
const task = await getTask(apiKey, taskId);
if (task.status === "completed" || task.status === "failed") {
return task;
}
await new Promise((resolve) => setTimeout(resolve, intervalMs));
intervalMs = Math.min(Math.round(intervalMs * 1.5), 10_000);
}
throw new Error("Grok Imagine Image 2.0 task timed out in the application");
}애플리케이션 시간 초과는 업스트림 작업이 실패했다는 증거가 아닙니다. 생성을 재시도하기 전에 원래 작업을 다시 쿼리하거나 자체 작업 계층에서 멱등성 전략을 사용하세요. 그렇지 않으면 클라이언트 시간 초과로 인해 청구 가능한 중복 작업이 생성될 수 있습니다.
5단계: 단일 참조 편집으로 전환
image_urls를 추가하세요. 입력 이미지는 HTTP 또는 HTTPS를 통해 공개적으로 액세스할 수 있어야 합니다. base64 및 데이터 URL은 현재 계약에서 지원되지 않습니다. 지원되는 확장자는 JPEG, JPG, PNG 및 WebP입니다.curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Move the chair into a quiet rain-soaked garden room. Preserve the chair shape, teal upholstery, camera angle, and scale. Change only the environment and reflected light.",
"image_urls": [
"https://example.com/chair.webp"
],
"size": "4:3",
"resolution": "1K",
"quality": "medium",
"n": 1
}'애플리케이션은 유료 작업을 생성하기 전에 개수, 프로토콜, 파일 유형 및 서버 연결 가능성을 검증해야 합니다. 로그인된 브라우저에서 작동하는 URL은 여전히 생성 서비스에 액세스하지 못할 수 있습니다.
6단계: 여러 참조로 작성
image_urls의 위치에 매핑됩니다.curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Place the person from <IMAGE_0> in the architectural setting from <IMAGE_1>, carrying the blue sculptural bag from <IMAGE_2>. Preserve the outfit silhouette and match the late-afternoon direction of light.",
"image_urls": [
"https://example.com/person.webp",
"https://example.com/location.webp",
"https://example.com/bag.webp"
],
"size": "3:4",
"resolution": "2K",
"quality": "medium",
"n": 1
}'프롬프트와 함께 정확한 배열 순서를 저장합니다. 사용자 인터페이스를 통해 업로드 순서를 변경할 수 있는 경우 배열 및 인덱스 레이블을 함께 업데이트하세요.
7단계: 작업 흐름 단계에 따라 매개변수 선택
auto, 1K/2K 해상도, 저/중 품질 및 n=1-10를 지원합니다.| 매개변수 | 결정하는데 활용하세요 | 생산 규칙 |
|---|---|---|
size | 납품 형태 또는 모델 선택 auto | 제출하기 전에 문서화된 비율 열거에 대해 유효성을 검사하세요. |
resolution | 1K 초안/검토 vs 2K 전달 후보 | 4K를 보내지 마십시오. 경로가 지원하지 않습니다 |
quality | 더 빠르고 저렴한 비용으로 탐색하려면 낮음, 자세한 내용은 중간 | 실제 승인 기준에 따라 계층을 평가합니다. |
n | 독립 출력 수 | 각 출력이 독립적으로 청구되므로 제품 작업 및 예산별로 한도를 정하세요. |
image_urls | 텍스트 전용 생성과 참조 편집 | 텍스트를 이미지로 변환하는 경우 완전히 생략합니다. URL은 최대 3개까지 허용됩니다. |
임의의 클라이언트 JSON을 API에 직접 전달하는 대신 요청 허용 목록을 사용하세요. 이렇게 하면 지원되지 않는 필드, 과도한 배치 또는 내부 콜백 URL이 경로에 도달하는 것을 방지할 수 있습니다.
8단계: 제작 완료를 위해 콜백 사용
callback_url를 전달합니다.{
"model": "grok-imagine-image-2.0",
"prompt": "A clean ecommerce product scene with soft daylight",
"callback_url": "https://your-domain.com/webhooks/evolink/image-task"
}현재 계약에서는 작업이 완료되거나, 실패하거나, 취소될 때 청구 확인 후 콜백이 전송된다고 명시하고 있습니다. EvoLink는 최대 10초를 기다리고 1초, 2초, 4초 후에 실패한 콜백을 세 번 다시 시도할 수 있습니다. 2xx 응답은 배달 성공을 표시합니다.
멱등성이 있도록 수신기를 설계합니다.
- EvoLink 계정 및 웹훅 설정이 지원하는 메커니즘을 사용하여 요청을 인증합니다.
- 작업 ID와 예상 모델을 검증합니다.
- 배달할 때마다 새 결과를 삽입하는 대신 작업 ID별로 업데이트합니다.
- 지속성 지속 후에 2xx를 반환합니다.
- 느린 다운로드 및 검토 작업을 대기열로 이동합니다.
- 웹훅 전달을 확인할 수 없는 경우 복구 경로로 계속 폴링합니다.
콜백 URL은 HTTPS를 사용해야 하며 로컬 호스트, 개인 IP 범위 또는 내부 서비스 주소를 가리킬 수 없습니다.
9단계: 만료되기 전에 결과 저장
완성된 이미지 URL은 24시간 동안 사용할 수 있습니다. 영구 애플리케이션 저장소가 아닌 전송 URL로 취급하십시오.
완료 후:
- 작업이 현재 계정 및 작업에 속하는지 확인합니다.
results또는result_data의 모든 항목을 다운로드합니다.- 콘텐츠 유형과 파일 크기를 확인합니다.
- 파일을 자신의 개체 저장소에 저장합니다.
- 영구 URL과 콘텐츠 해시를 저장합니다.
- 생성 매개변수와 검토 상태를 기록합니다.
- 참조 입력 및 출력에 보존 및 삭제 정책을 적용합니다.
n가 1보다 큰 경우 생성 순서에 따라 독립적인 결과 URL이 예상됩니다. 제품이 의도적으로 하나의 결과를 선택하지 않는 한 첫 번째 항목만 유지하지 마십시오.10단계: 실패 및 청구를 올바르게 처리
failed 작업은 업스트림 거부, 콘텐츠 조정 차단 및 시간 초과를 포함하여 완전히 환불됩니다.| 결과 | 적용 조치 | 결제 작업 |
|---|---|---|
completed | 모든 결과 유지, 승인 확인 실행, 작업 완료 표시 | 최종 usage 저장 및 비용 내역 |
재시도 가능한 인프라 오류가 있는 failed | 제한된 백오프를 적용하거나 확인된 폴백으로 라우팅 | 최종 청구 금액이 0인지/환불되었는지 확인하세요. |
콘텐츠 정책 오류가 있는 failed | 실행 가능한 프롬프트/입력 메시지를 표시합니다. 무조건 재시도하지 마세요 | 환불을 확인하고 오류 코드를 보관하세요 |
| 애플리케이션 폴링 시간 초과 | 다른 작업을 생성하기 전에 동일한 작업을 다시 쿼리하세요. | 시간 초과가 환불 또는 실패를 의미한다고 가정하지 마십시오. |
| 작업 생성 전 잘못된 요청 | 유효성 검사 또는 권한 수정 | 조정할 비동기 작업이 없습니다. |
failed 상태와 다릅니다.폴링 전 요청 수준 HTTP 오류 처리
비동기 작업이 생성되기 전에 일부 오류가 발생합니다. 현재 API 참조에는 다음과 같은 요청 수준 응답이 문서되어 있습니다.
| HTTP 상태 | 문서화된 의미 | 신청 응답 |
|---|---|---|
400 | 잘못된 요청 매개변수 또는 형식 | 재시도하기 전에 요청 허용 목록, 필수 필드, 열거형, URL 수, JSON 형태를 검증하세요. |
401 | 인증 오류 | 서버가 유효한 Bearer 키를 보냈는지 확인하세요. 클라이언트 로그에 키를 절대 노출하지 마세요 |
402 | 할당량이 부족합니다. | 자동 재시도를 중지하고 계정 소유자에게 예산을 재충전하거나 조정하도록 지시합니다. |
403 | 접근 불가 | 프롬프트를 맹목적으로 변경하는 대신 계정 또는 라우팅 권한을 확인하세요. |
429 | 요청 비율 제한을 초과했습니다. | 제한된 지수 백오프 및 대기열 작업을 적용합니다. 즉각적인 재시도를 팬아웃하지 마세요. |
500 | 내부 서버 오류 | 제한된 인프라 정책에서만 재시도하고 작업이 허용하는 경우 확인된 대체를 사용합니다. |
id 작업을 반환한 경우에만 폴링을 시작합니다. 요청 수준 오류에는 조정을 위해 기록을 쿼리하거나 환불하는 비동기 작업이 없습니다.11단계: 대체 라우팅 추가

통합에서는 제품 작업을 공급자별 모델 ID와 분리해야 합니다.
type ImageRoute = "grok-imagine-image-2.0" | "gpt-image-2";
type ImageJob = {
prompt: string;
imageUrls: string[];
requiresMask: boolean;
requires4K: boolean;
};
function chooseImageRoute(job: ImageJob): ImageRoute {
if (job.requiresMask || job.requires4K || job.imageUrls.length > 3) {
return "gpt-image-2";
}
return "grok-imagine-image-2.0";
}이 예는 하나의 모델이 더 나은 이미지를 생성한다는 주장이 아니라 계약 수준의 시작 정책입니다. 의미 있는 트래픽을 라우팅하기 전에 자체 승인 데이터, 대기 시간, 비용, 조정 및 가용성 관찰을 추가하세요.
생산 인계 체크리스트
- 서버 측 비밀 관리자에 저장된 API 키.
- 요청 본문 허용 목록이 현재 EvoLink 문서와 일치합니다.
- 모델 ID는 경로 구성에 중앙 집중화되어 있습니다.
- 참조 이미지는 공개되고 검증되었으며 3개로 제한됩니다.
- 다중 참조 인덱스는 지속된 입력 순서와 일치합니다.
- 완료/실패 시 폴링이 중지되고 백오프를 사용합니다.
- 애플리케이션 시간 초과로 인해 자동으로 중복 작업이 생성되지 않습니다.
- 콜백 처리는 멱등성이 있고 빠릅니다.
- 결과 파일은 24시간 만료 전에 복사됩니다.
- 최종 사용량은 예약된 크레딧과 별도로 저장됩니다.
- 실패한 작업 환불이 조정되었습니다.
- 재시도 가능한 오류와 재시도 불가능한 오류가 구분됩니다.
- 필수 기능 또는 중단에 대해 테스트된 대체 경로가 존재합니다.
- 로그에서는 API 키와 민감한 참조 URL을 제외합니다.
자주 묻는 질문
Grok Imagine Image 2.0 작업을 생성하는 엔드포인트는 무엇인가요?
model 및 prompt 필드와 함께 POST https://api.evolink.ai/v1/images/generations를 사용합니다.어떤 모델 ID를 보내야 하나요?
grok-imagine-image-2.0를 보냅니다.생성에서 편집으로 어떻게 전환하나요?
image_urls를 생략하거나 편집을 위해 1~3개의 URL을 전달하세요.Base64 이미지 데이터를 보낼 수 있나요?
아니요. 현재 계약은 공개적으로 액세스 가능한 HTTP 또는 HTTPS URL을 허용하며 base64 또는 데이터 URL을 지원하지 않습니다.
결과를 어떻게 쿼리하나요?
id 작업을 저장한 다음 동일한 Bearer 인증 패턴으로 GET https://api.evolink.ai/v1/tasks/{task_id}를 보냅니다.콜백을 폴링해야 하나요, 아니면 콜백을 사용해야 하나요?
정상적인 생산 완료 및 복구 경로로 폴링을 위해 콜백을 사용합니다. 간단한 서버측 프로토타입은 백오프 폴링으로 시작할 수 있습니다.
완성된 이미지 링크는 언제까지 유효한가요?
현재 문서에는 24시간이라고 나와 있습니다. 완성된 파일은 즉시 영구 저장소에 복사하세요.
실패한 작업에는 요금이 부과되나요?
failed 상태에 도달한 작업은 현재 EvoLink 작업 설명서에 따라 전액 환불됩니다. 자체 품질 검토에 의해 거부된 완성 이미지는 API 실패와 동일하지 않습니다.4K 또는 고화질을 요청할 수 있나요?
아니요. 이 경로는 현재 1K/2K 및 낮음/중간을 지원합니다. 4K 또는 High가 어려운 요구 사항인 경우 다른 검증된 경로를 사용하십시오.
Grok을 다른 이미지 경로와 어디에서 비교할 수 있나요?
출처
이 가이드는 2026년 8월 12일에 확인된 EvoLink 계약을 반영합니다. 배송 전에 API 문서, 특히 모델 필드, 출력 제한, 콜백 동작 및 작업 응답 스키마를 다시 확인하세요.


