Bubble API Connector: Sume API로 AI 영상 생성하기

Sume용 Bubble API Connector 설정법입니다. 키는 비공개 헤더에 두고, 수동 응답으로 설정 비용을 없애고, 백엔드에서 Job을 폴링합니다.

읽는 시간 5분Sume
전체 글

Bubble 앱에서 Sume로 AI 영상을 생성하려면 Private key in header(Authorization, Bearer <key>)로 인증하는 API Connector 컬렉션을 추가하고 POST https://api.sume.com/v1/videos 액션 호출을 만드세요. 설정 과정에서 유료 Job이 시작되지 않도록 이 호출은 수동 응답으로 설정하고, 백엔드 워크플로가 Job이 끝날 때까지 30초마다 GET /v1/videos/[id]를 폴링하게 하세요.

Sume에는 Bubble 플러그인이 없습니다. API Connector가 Bubble 서버에서 일반 HTTPS 호출을 보냅니다. Sume 관련 내용은 영상 생성 (영문), Job과 결과 (영문), 인증에서, Bubble 관련 내용은 Bubble 매뉴얼의 API Connector, API Connector의 인증과 호출 설정, API 워크플로 페이지에서 가져왔으며, 모두 2026-09-27에 확인했습니다. 이 흐름의 웹훅 버전은 Airtable 자동화 영상 생성 API에서 볼 수 있습니다.

Bubble에서 Sume 키를 어떻게 비공개로 지키나요?

컬렉션의 Authentication을 Private key in header로 설정하세요. 그러면 Bubble이 컬렉션의 모든 호출에 그 헤더를 추가합니다.

  • Key name은 Authorization입니다. Private key에는 Bearer와 공백 하나, 그 뒤에 Sume 키를 넣습니다. Bubble 문서는 키 앞에 Bearer 같은 접두사를 공백으로 구분해 붙이라고 안내합니다.
  • Sume는 요청마다 자격 증명 하나만 받습니다. Authorization: Bearer나 x-api-key 중 하나이며, 둘 다 보내면 안 됩니다.
  • 호출은 기본적으로 Bubble 서버를 거쳐 실행되지만, 각 호출의 설명은 브라우저까지 전달됩니다. 그러니 시크릿은 Private으로 표시한 필드에 두세요. 키를 option set, 페이지 요소, 워크플로 입력에 절대 두지 마세요.
  • Content-Type: application/json을 공유 헤더로 추가해 모든 호출이 보내게 하세요.

Sume 컬렉션에는 어떤 호출이 필요한가요?

호출 세 개가 필요하며, 워크플로가 실행할 수 있도록 모두 Use as Action으로 설정합니다. Start video의 JSON 본문에서 <prompt>는 동적 파라미터입니다. Bubble은 <>로 감싼 이름을 필드로 바꾸며, 이 파라미터가 앱에서 값을 받으려면 Private 체크를 해제해야 합니다. 나머지 두 URL에서는 대괄호로 감싼 [id]가 Job id 파라미터가 됩니다.

Sume 영상 생성 (영문), Job과 결과 (영문) 문서와 Bubble 호출 설정 기준, 2026-09-27 확인.
호출메서드와 URL응답
Start videoPOST https://api.sume.com/v1/videosid, polling_url, status: "pending"이 담긴 202
Check videoGET https://api.sume.com/v1/videos/[id]status: pending, in_progress, completed, failed, cancelled 중 하나
Get resultGET https://api.sume.com/v1/jobs/[id]/resultmedia.sume.com URL이 담긴 data.result.artifacts. Job이 완료되지 않았으면 409 job_not_completed
{
  "model": "sume/auto",
  "prompt": "<prompt>",
  "aspect_ratio": "9:16",
  "duration": 5
}

영상 비용을 내지 않고 Start video를 어떻게 설정하나요?

호출을 초기화하는 대신 수동 응답을 붙여 넣으세요. 초기화는 시뮬레이션이 아닙니다. 실제 요청을 보내므로, 라이브 호출을 초기화하면 실제 유료 Job이 제출됩니다. Bubble 문서는 수동 응답을 쓰는 경우로 유료 API를 꼽으며, 수동 응답도 초기화와 똑같이 필드를 매핑합니다. 문서에 나온 202 형태를 붙여 넣으세요. 응답은 model 값으로 sume/auto를 그대로 돌려줍니다.

{
  "id": "job_123",
  "polling_url": "https://api.sume.com/v1/videos/job_123",
  "status": "pending",
  "model": "sume/auto"
}

라이브 전에 호출에 또 무엇이 필요한가요?

재시도와 오류가 문제를 일으키지 않게 하는 설정 세 가지입니다.

  • Start video에 영상마다 값이 바뀌는 Idempotency-Key 헤더를 추가하세요. Thing의 unique id에 버전을 붙인 값이 한 예입니다. 워크플로가 값을 넣을 수 있도록 이 헤더의 Private 체크는 해제해 두세요. 같은 키로 다시 보내면 원래 Job이 돌아오며, Sume 문서는 같은 연산과 페이로드에만 키를 재사용하라고 합니다.
  • Get result에서는 Include errors in response & allow workflow actions to continue를 체크해 409가 워크플로를 멈추지 않게 하세요. 초기화한 뒤 이 체크박스를 바꾸면 다시 초기화해야 합니다.
  • 배포하기 전에 테스트 값을 지우세요. 필드가 Private이 아니면 Bubble이 그 값을 앱의 소스 코드에 넣습니다.

앱은 영상이 준비된 것을 어떻게 아나요?

백엔드 워크플로에서 폴링합니다. Settings - API에서 Workflow API와 백엔드 워크플로를 켜고, job_id 파라미터가 있는 API 워크플로 check_video를 만드세요. Start video 다음에 Schedule API workflow로 이 워크플로를 예약하세요.

  • check_video는 Check video를 실행합니다. status가 pending이나 in_progress인 동안에는 Current date/time + 30초 시점으로 자신을 다시 예약합니다. 30초는 Sume 문서에 나온 예시 폴링 간격입니다.
  • completed가 되면 Get result를 실행하고, data.result.artifacts의 첫 번째 url(media.sume.com URL)을 Thing에 저장합니다. failed나 cancelled면 상태를 저장하며, 무엇이 잘못됐는지는 error 필드에 나옵니다.
  • 새 Bubble 앱은 기본적으로 재귀 워크플로 체인을 10번 반복한 뒤 끝내는데, 이 간격이면 오 분에 불과합니다. 한도를 올리세요. 영상 생성은 보통 30초에서 몇 분이 걸립니다.
  • API 호출마다 워크로드가 소비되며, 재귀는 리스트를 예약하는 방식보다 워크로드를 더 씁니다.

앱에는 어떤 영상 URL을 저장해야 하나요?

Get result에서 받은 media.sume.com URL입니다. Check video의 unsigned_urls[0]은 저장하지 마세요. 이 URL은 GET /v1/videos/{id}/content를 가리키는데, 문서는 이 엔드포인트를 API 키와 함께 호출하므로 브라우저의 video 요소는 키 없이 이 영상을 재생할 수 없습니다. 각 URL이 얼마나 유지되는지는 Sume 영상 URL은 만료되나요?에서 다룹니다.

출처

관련 글

연동 카테고리의 다른 글

연동 글 전체 보기

작성자 Sume