세 엔드포인트 비교
어떤 것을 쓸까
- 태스크 500개 이하, 재시도는 직접 처리:
POST /v1/async/task/batch. 응답에서 모든 태스크 id를 받습니다. - 요금제 동시 실행 한도보다 많은 태스크, 또는 매일 수천 개를 돌리는 작업:
POST /v1/batches. 서버가 항목을 보관했다가 요금제 한도와 엔진별 대기열이 허용하는 만큼 넣어 주므로429나503을 직접 재시도할 필요가 없습니다. - 한 장소 주변 여러 지점에서 같은 프롬프트를 묻기:
POST /v1/async/task/grid.
POST /v1/async/task/batch
태스크 요청을 최대 500개까지 배열로 보냅니다(레퍼런스). 엔진을 섞을 수 있습니다.
200을 반환합니다. results[i].index는 배열에서의 위치와 같고, 각 결과에는 task나 error 중 하나가 있습니다.
반복된
idempotencyKey는 기존 태스크를 성공으로 반환합니다. 멱등성을 참고하세요.
POST /v1/batches
항목을 최대 10,000개까지 보냅니다(레퍼런스). 각 항목은 태스크 필드 taskType, payload, priority, idempotencyKey와, 결과에 그대로 돌아오는 선택 필드 customId(최대 128자)를 받습니다. webhook.url은 항목이 아니라 배치에 지정하세요.
202입니다. 첫 항목들은 이미 제출되어 있습니다.
봉투 규칙
전부 아니면 전무 검증
아무것도 저장하기 전에 모든 항목에 단건 태스크와 같은 검사를 합니다. 필드, 키 범위, 비공개 엔진, 전용 엔드포인트, 지역,payload.location이 대상입니다. 하나라도 실패하면 응답은 400 VALIDATION_ERROR이고, 아무것도 저장되지 않으며, details에 실패한 항목이 최대 50개까지 나열됩니다.
항목 실행 방식
배치는 요금제 한도와 엔진 대기열에 여유가 있을 때 항목을 태스크로 내보냅니다. 계정끼리 차례를 나누므로 큰 배치가 다른 계정의 작은 배치를 막지 않습니다. 내보낸 항목은 단건 태스크와 같은 접수 과정을 거칩니다. 크레딧 보류를 걸고, 키의 일일 크레딧 한도에 포함됩니다. 항목이 거부되면 코드에 따라 처리가 정해집니다.
대기 중인 항목이 없고 모든 태스크가 끝나면 배치는
COMPLETED가 됩니다. webhook.url이 있으면 서버가 이어서 batch.completed 이벤트를 보냅니다.
진행 상황과 결과 읽기
GET /v1/batches/{id}는 항목 상태별 counts(pending, queued, processing, completed, failed, rejected)와 함께 배치를 반환합니다. 이 엔드포인트를 폴링하면 대기 중인 항목도 진행됩니다.
GET /v1/batches/{id}/items는 항목을 제출 순서대로 나열합니다.
REJECTED 항목에는 error: { code, message }가 담깁니다. 결과 본문은 비동기 태스크의 24시간 폴링 기간 안에서만 포함됩니다. 배치 조회와 배치 항목 목록도 참고하세요.
POST /v1/async/task/grid
중심 주변 정사각형 그리드의 모든 지점에서 같은 프롬프트를 묻습니다(레퍼런스). 각 지점은 그 지점을 payload.location으로 하는 태스크가 되므로, 엔진은 위치를 받는 CHATGPT, GEMINI, GOOGLE, AIMODE, GOOGLE_SERP 중 하나여야 합니다. payload.location을 직접 보내지 마세요.
0행은 북쪽 끝, 0열은 서쪽 끝입니다. 응답은
grid(id, spacingMeters 포함), summary, 그리고 행 순서의 points를 반환하며, 각 지점에는 row, col, location과 task 또는 error가 있습니다.
중심 지점이 먼저 단독으로 접수됩니다. 중심이 거부되면(예: 422 LOCATION_UNSUPPORTED, 403 KEY_SCOPE_DENIED, 402 INSUFFICIENT_CREDITS, 요금제 한도 초과) 그 오류가 그리드 전체의 응답이 되고 태스크는 하나도 만들어지지 않습니다. 중심 이후 지점이 용량 때문에 거부되면 success: false로 그 자리에서 실패합니다.
그리드는 GET /v1/async/task/grid/{id}로 다시 읽습니다. 끝난 태스크의 결과가 필요하면 ?include=response를 붙이세요. 접수되지 않은 지점은 없고, 다른 계정의 그리드 id는 404를 반환합니다. 같은 id로 같은 그리드를 다시 보내면 없는 지점만 접수됩니다. 멱등성을 참고하세요.
다음 단계
멱등성
엔드포인트별 반복 키 처리.
크레딧과 한도
요금제 동시 실행 한도와 속도 조절.