Airtable 자동화 영상 생성 API: 레코드마다 영상 하나
Airtable Run a script 액션으로 callback_url과 함께 POST /v1/videos를 호출하고, 두 번째 자동화에서 Sume 웹훅을 받아 URL을 저장하세요.

Airtable 레코드마다 AI 영상을 만들려면 자동화 두 개를 쓰세요. 하나는 레코드의 프롬프트를 callback_url과 함께 POST /v1/videos로 보내는 Run a script 액션이고, 다른 하나는 Sume의 Job 웹훅을 받아 여러분의 키로 Job을 다시 읽고 영상 URL을 레코드에 다시 쓰는 When webhook received 트리거입니다.
Sume에는 Airtable 연동 기능이 없고, Airtable 자동화에는 범용 HTTP 액션이 없으므로 두 쪽 모두 Run a script 안에서 평범한 fetch 호출로 처리합니다. Sume 관련 내용은 영상 생성 (영문)과 웹훅 (영문) 문서에서, Airtable 관련 내용은 Airtable 도움말 센터와 스크립팅 레퍼런스에서 가져왔으며 모두 2026-09-27에 확인했습니다.
Airtable 레코드에서 영상 생성을 어떻게 시작하나요?
자동화 A는 When a record matches conditions 같은 레코드 트리거로 시작합니다. 이 자동화의 Run a script 액션은 recordId와 prompt를 입력 변수로, API 키를 시크릿으로 받으며, 스크립트는 `input.secret` 함수로 시크릿을 읽습니다. 스크립트가 시크릿을 참조하고 나면 그 시크릿에 접근할 수 있는 사용자만 스크립트를 편집할 수 있습니다.
스크립트 다음에 오는 Update record 액션이 트리거를 일으킨 레코드의 Sume job 필드에 jobId를 저장합니다.
POST /v1/videos는 Jobid와 함께 즉시202로 응답하며, 이 응답에 영상은 들어 있지 않습니다. 스크립트 안에서 폴링하지 마세요. Airtable의fetch는 30초가 지나면 타임아웃되고, 영상 생성은 보통 30초에서 몇 분이 걸립니다.Idempotency-Key가 있으면 재전송 시 원래 Job이 돌아오므로 다시 실행해도 안전합니다. 키는 레코드 ID와, 새 영상을 원할 때 올리는 버전으로 만드세요.callback_url은 HTTPS여야 합니다. Sume는 localhost, 사설 네트워크, HTTPS가 아닌 웹훅 URL을 거부합니다.
// Input variables: recordId, prompt. Secret: SUME_API_KEY.
const { recordId, prompt } = input.config();
const WEBHOOK_URL = "PASTE_AUTOMATION_B_WEBHOOK_URL";
const res = await fetch("https://api.sume.com/v1/videos", {
method: "POST",
headers: {
Authorization: "Bearer " + input.secret("SUME_API_KEY"),
"Content-Type": "application/json",
"Idempotency-Key": "airtable-" + recordId + "-v1",
},
body: JSON.stringify({
model: "sume/auto",
prompt: prompt,
aspect_ratio: "9:16",
duration: 5,
callback_url: WEBHOOK_URL,
}),
});
const text = await res.text();
if (!res.ok) throw new Error(res.status + " " + text);
output.set("jobId", JSON.parse(text).id);완성된 영상은 어떻게 레코드로 돌아오나요?
자동화 B는 When webhook received로 시작합니다. Sume는 Job이 종료 상태에 도달하면 Job 웹훅을 POST합니다. event는 job.completed, job.failed, job.canceled 중 하나이고, 본문에는 job_id가 담깁니다. 이 트리거를 설정하려면 성공한 예시 요청이 있어야 하므로, Sume 문서에 나온 Job 페이로드와 같은 모양의 본문을 한 번 보내세요. Sume의 Send test로는 안 됩니다. 그 webhook.test 본문에는 job_id가 없습니다.
아래 스크립트는 Job을 다시 읽어 영상 URL을 출력합니다. API 레퍼런스에 나오듯 결과 경로는 아티팩트를 data.result 아래에 담습니다. 그다음 Find records(동적 조건: Sume job이 웹훅의 job_id와 같음)와 Update record가 videoUrl을 URL 필드에 씁니다.
GET /v1/jobs/{id}/result는 완료된 Job에만 응답합니다. 그 밖의 경우는409 job_not_completed이므로 스크립트가 예외를 던지고, 실행 기록(run history)에 그 이유가 표시됩니다.GET /v1/videos/{id}의unsigned_urls[0]이 아니라media.sume.com아티팩트 URL을 저장하세요.unsigned_urls[0]은/v1/videos/{id}/content를 가리키며, 문서는 이 경로를 API 키와 함께 호출합니다.
// Input variable: jobId (the webhook body's job_id). Secret: SUME_API_KEY.
const { jobId } = input.config();
const res = await fetch("https://api.sume.com/v1/jobs/" + encodeURIComponent(jobId) + "/result", {
method: "GET",
headers: { Authorization: "Bearer " + input.secret("SUME_API_KEY") },
});
const text = await res.text();
if (!res.ok) throw new Error(res.status + " " + text);
const artifacts = JSON.parse(text).data.result.artifacts;
output.set("videoUrl", artifacts.find((a) => a.type === "video").url);왜 웹훅을 그대로 믿지 않고 Job을 다시 읽나요?
Airtable은 웹훅 트리거에서 서명 검증을 지원하지 않으며, 트리거 URL을 가진 사람은 누구나 자동화를 시작할 수 있습니다. Sume는 전달마다 원본 본문에 서명해 <timestamp>.<raw_body>에 대한 HMAC-SHA256인 x-sume-webhook-signature를 보내지만, Airtable은 이를 확인할 수 없습니다. 여러분의 키로 결과를 읽으면, 저장하는 URL은 요청 본문이 아니라 항상 Sume API에서 옵니다.
전달은 반복될 수 있습니다. Sume는 Job 웹훅 하나당 최대 10회 시도하며, 문서는 job_id를 멱등성 키로 쓰라고 안내합니다. 같은 URL을 같은 레코드에 두 번 써도 문제가 없습니다.
어떤 한도가 있나요?
Airtable의 한도는 스크립트 실행 하나하나와 웹훅 트리거에 적용되고, Sume의 한도는 Job 웹훅 하나하나에 적용됩니다.
- 자동화 실행을 시작시키는 웹훅은 하나하나가 요금제의 자동화 실행 한도에 포함되며, Run a script는 Team 요금제 체험판에서는 쓸 수 없습니다.
- Airtable에는 Format 실행 웹훅이 아니라
POST /v1/videos의 Job 웹훅을 연결하세요. 실행 웹훅은 전체 실행 영수증을 최대 1 MiB까지 인라인으로 담으므로 100 kb 상한을 넘을 수 있습니다. - 양쪽의 미디어 URL 규칙은 영상 API 미디어 입출력을 참고하세요.
| 한도 | 값 |
|---|---|
| Run a script: 스크립트 타임아웃 | 30초, 일시적으로 120초 |
Run a script: fetch 타임아웃 | 30초 |
| Run a script: 실행당 fetch 요청 수 | 50 |
| When webhook received: 메서드 | POST만 |
| When webhook received: 페이로드 | 요청당 100 kb |
| When webhook received: 요청 속도 | 초당 요청 5건 |
| Sume Job 웹훅: 시도 횟수 | 최대 10회, 기본 30초 간격 |
| Sume Job 웹훅: 타임아웃 | 시도당 10초 |
출처
관련 글
연동 카테고리의 다른 글
- AWS Lambda로 Sume 웹훅 받기: 함수 URL과 HMAC
인증 유형이 NONE인 Lambda 함수 URL을 Sume에 넘기고, 이벤트 본문을 디코딩해 sume-v1 HMAC을 확인한 뒤 10초 시도 시간 안에 204로 응답하세요.
- Bubble API Connector: Sume API로 AI 영상 생성하기
Sume용 Bubble API Connector 설정법입니다. 키는 비공개 헤더에 두고, 수동 응답으로 설정 비용을 없애고, 백엔드에서 Job을 폴링합니다.
- Claude Agent SDK MCP 서버: API 키로 Sume 연결
API 키 헤더로 Sume 호스팅 MCP 서버를 Claude Agent SDK에 추가하고, 필요한 도구만 허용하고, 유료 호출은 제출 전에 dry-run으로 확인하세요.
- Claude API MCP 커넥터와 Sume: 지금 쓸 수 있는 방법
Claude API의 MCP 커넥터로 Sume 호스팅 MCP에 인증하는 방법은 현재 문서화되어 있지 않습니다. 그 이유와 Agent SDK 같은 대안을 정리했습니다.
작성자 Sume