오래 걸리는 작업은 제출해서 작업 ID를 받고, 끝날 때까지 그 ID로 상태를 조회합니다.
| 작업 | 제출 | 결과 확인 |
|---|---|---|
| 긴 텍스트 생성(리서치, 긴 문서) | POST /v1/responses에 background: true | GET /v1/responses/{id} |
| 비디오 생성 | POST /v1/videos/generations (항상 비동기) | GET /v1/videos/generations/{id} |
두 작업의 ID 체계는 다릅니다. 비디오 작업 ID를 Responses 엔드포인트에 넣으면 404입니다. 완료된 비디오는 작업 ID로 GET /v1/outputs/{requestId}에서도 받을 수 있습니다.
긴 텍스트: Responses 백그라운드 작업
background: true로 제출하면 바로 status: "queued"로 응답합니다. 클라이언트는 퀵스타트와 같습니다.
python
import time
job = client.responses.create(
model="everyais/gemini-3-8-flash",
input="긴 리서치 작업...",
background=True,
)
while job.status in ("queued", "in_progress"):
time.sleep(5)
job = client.responses.retrieve(job.id)
print(job.status)
print(job.output_text)- 상태는
queued→in_progress→completed·incomplete·failed·cancelled순서로 바뀝니다. - 필요 없어진 작업은
POST /v1/responses/{id}/cancel(SDK는client.responses.cancel(id))로 취소하세요.queued나in_progress일 때만 취소되고, 잡아 둔 크레딧은 돌려받습니다. - 작업이 없거나 만료됐거나 다른 키의 작업이면 404입니다.
비디오 생성
제출 응답의 id로 상태를 조회합니다. 진행 중에는 Retry-After: 5 헤더가 붙으니 5초 간격으로 확인하세요.
python
import os
import time
import requests
BASE_URL = "https://api.everyais.com/v1"
headers = {"Authorization": f"Bearer {os.environ['EVERYAIS_API_KEY']}"}
job = requests.post(f"{BASE_URL}/videos/generations", headers=headers, json={
"model": "everyais/minimax-h3-turbo",
"prompt": "a timelapse of a blooming flower",
}).json()
while job["status"] == "processing":
time.sleep(5)
job = requests.get(f"{BASE_URL}/videos/generations/{job['id']}", headers=headers).json()
print(job["status"], job.get("data"))작업은 24시간 동안 조회할 수 있고, 그 뒤에는 404 job_not_found입니다. 상태 값과 응답 필드, 재제출 시 주의할 점은 비디오 생성에 있습니다.
조회 간격이 짧으면 레이트리밋을 빨리 소진하니 Retry-After 값을 따르세요.