← 문서 목록

가이드

비동기 작업

업데이트

오래 걸리는 작업은 제출해서 작업 ID를 받고, 끝날 때까지 그 ID로 상태를 조회합니다.

작업제출결과 확인
긴 텍스트 생성(리서치, 긴 문서)POST /v1/responses에 background: trueGET /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 값을 따르세요.

문의접수