Power Automate HTTP 요청 API: Sume 실행 시작과 폴링

Power Automate HTTP action으로 Sume API를 호출하세요. Format 실행을 시작하고, Do until 루프로 폴링하고, 키는 Key Vault 시크릿에서 읽습니다.

읽는 시간 6분Sume
전체 글

Power Automate에서 Sume API를 호출하려면 Authorization: Bearer 헤더와 Idempotency-Key를 담아 https://api.sume.com/v1/formats/{handle}/{slug}/runs로 POST하는 HTTP action을 추가하고, 실행의 cancelable이 false가 될 때까지 일 분짜리 Delay를 둔 Do until 루프에서 GET /v1/format-runs/{run_id}를 폴링하세요. 키는 플로 자체가 아니라 Key Vault 시크릿에서 읽으세요.

Sume에는 Power Automate 커넥터가 없습니다. HTTP action이 일반 HTTPS 호출을 보냅니다. Sume 관련 내용은 Format 호출하기 (영문)와 실행과 결과 (영문)에서 가져왔습니다. Microsoft 관련 내용은 Power Automate의 한도, 오류 레퍼런스, 디자이너, 문제 해결 페이지, Key Vault 시크릿에 관한 Power Apps 페이지, HTTP action과 Until 루프에 관한 Azure Logic Apps 페이지에서 가져왔습니다. Microsoft FAQ는 Logic Apps를 Power Automate의 기능에 더 많은 기능을 더한 서비스로 설명합니다. 모두 2026-09-27에 확인했습니다. 이 패턴의 웹훅 버전은 Zapier AI 영상 자동화를 참고하세요.

첫 호출 전에 플로에는 무엇이 필요한가요?

세 가지가 필요하며, 한 번만 설정하면 됩니다.

  • 프리미엄 라이선스. Microsoft 오류 레퍼런스는 HTTP를 프리미엄 커넥터로 분류합니다. 프리미엄 커넥터가 있는 플로를 Microsoft 365에 포함된(seeded) 라이선스를 쓰는 사용자가 실행하면 DirectApiAuthorizationRequired로 실패합니다. 오류 레퍼런스가 제시하는 해결책은 플로를 트리거하거나 실행하는 사용자(예약 플로나 자동화된 플로라면 소유자)의 Power Automate Premium 라이선스, 또는 플로 단위 Process 라이선스입니다.
  • formats:write와 formats:read가 있는 Sume 키. Formats API가 출시되기 전에 만든 키에는 이 스코프가 없어 403 insufficient_scope를 받습니다.
  • Azure Key Vault에 넣은 키. 솔루션 안의 Secret 유형 환경 변수로 참조합니다. Microsoft의 데이터 보호 가이드는 플로에 API 키를 하드코딩하지 말라고 합니다. 플로에 접근할 수 있는 사람은 누구나 실행 기록에서 액션의 입력을 열어 볼 수 있기 때문입니다.

Sume 키를 노출하지 않고 어떻게 넘기나요?

Secret 환경 변수는 동적 콘텐츠 선택기에 나오지 않으므로, Microsoft Key Vault 페이지가 보여 주는 대로 액션으로 시크릿을 읽으세요.

  • Microsoft Dataverse의 Perform an unbound action 액션을 추가하고, RetrieveEnvironmentVariableSecretValue를 고른 뒤, 변수의 고유 이름을 입력하고, 단계 이름을 GetSecret으로 바꾸고, Secure outputs를 켜세요.
  • 각 Sume HTTP action에서 Authorization 헤더 값을 Bearer 뒤에 식 body('GetSecret')['EnvironmentVariableSecretValue']를 붙인 값으로 설정하고, 실행 기록에서 가려지도록 Secure inputs를 켜세요.
  • Authorization: Bearer나 x-api-key 중 하나만 보내고, 둘 다 보내지 마세요.

HTTP action으로 실행을 어떻게 시작하나요?

Start_run이라는 이름의 HTTP action을 추가하고, 메서드는 POST, URI는 카탈로그 Format인 https://api.sume.com/v1/formats/sume/sume-product-usage-demo/runs 또는 직접 만든 Format의 {handle}/{slug}로 설정하세요. Content-Type: application/json과 Idempotency-Key 헤더를 추가하세요. 본문에는 instruction, input, previous_run_id, attachments 중 최소 하나가 있어야 합니다.

{
  "instruction": "Make a vertical product demo from the attached photo.",
  "attachments": [
    { "type": "input_image", "image_url": "https://example.com/product.jpg" }
  ],
  "generation_spend_cap_usd": 20
}

Start_run의 어떤 설정이 중복 호출과 멈춘 호출을 막나요?

생성 호출에서는 세 가지 설정이 중요합니다.

  • Idempotency-Key는 플로를 트리거한 항목에 버전을 붙여 만드세요. 기본 재시도 정책은 프리미엄 커넥터를 쓰는 medium, high 프로필에서 최대 12번까지 재시도하며, Sume는 같은 키와 본문으로 다시 온 요청에 원래 실행으로 응답합니다. 200이 돌아오고 두 번째 청구는 없습니다.
  • HTTP action에 Asynchronous pattern 설정이 있다면 끄세요. Microsoft의 Logic Apps 페이지는 HTTP action의 이 설정이 기본으로 켜져 있다고 설명하고, 202에 location 헤더가 없는 엔드포인트라면 액션이 계속 확인하지 않도록 이 설정을 끄라고 제안합니다. Sume의 202는 실행의 URL을 JSON 본문에 담으며, 문서화된 응답 헤더에 location 헤더는 없습니다.
  • generation_spend_cap_usd는 이 실행의 생성 비용 상한이며, 플랫폼 최대치인 $500까지 설정할 수 있습니다.

실행이 끝날 때까지 어떻게 폴링하나요?

Do until 루프를 추가하세요. 루프 안에 일 분짜리 Delay를 넣고, 이어서 Get_run이라는 이름의 HTTP GET을 추가합니다. 주소는 https://api.sume.com/v1/format-runs/ 뒤에 식 body('Start_run')['data']['id']를 붙인 값이고, 헤더는 앞과 같이 보안 처리한 헤더를 씁니다. 조건을 body('Get_run')['data']['cancelable'] is equal to false로 두고 반복하세요. cancelable은 모든 영수증에 있는 불리언이며, 실행이 queued나 processing인 동안 true입니다.

  • 루프 안에서 받은 429나 503은 일시적인 오류입니다. 실행은 여전히 진행 중이고 비용도 계속 쓰고 있으니, 기다렸다가 다시 폴링하세요.
  • Microsoft의 Logic Apps 루프 페이지에 따르면, 실행 기록은 루프 전체가 끝난 뒤에야 각 반복의 세부 정보를 보여 줍니다.
Power Automate 한도, Logic Apps 루프 페이지, Sume 실행과 결과 (영문) 기준, 2026-09-27 확인.
설정Microsoft 수치Sume 실행에는이유
루프 안의 Delay—1분Sume는 간격을 두 배씩 늘리되 최대 일 분까지 백오프하라고 합니다.
Until 반복 횟수(Count)기본 60, 최대 5,000100일 분에 한 번 폴링하면 60번 반복으로 약 한 시간을 감당합니다.
Until TimeoutLogic Apps 기본값: PT1H(한 시간)PT2Hcreated_at 뒤 90분이 지나도 진행 중인 실행은 failed로 강제 종료됩니다.
아웃바운드 동기 요청120초 제한범위 안각 GET은 즉시 응답합니다. Microsoft는 더 오래 걸리는 작업에는 Until 루프를 쓰라고 제안합니다.

끝난 실행으로 플로는 무엇을 하나요?

body('Get_run')['data']['status']에 조건을 추가하세요. 영수증의 모든 필드는 Sume Format 실행 수명주기에서 다룹니다.

  • completed: output, artifacts[], primary_output_url이 채워집니다. 미디어 URL은 만료되지 않는 내구성 있는 media.sume.com HTTPS URL이며, URL을 가진 사람이라면 누구나 열 수 있습니다.
  • failed: error에 실패 이유가 담기며, artifacts[]에는 그때까지 만들어진 결과물이 그대로 남습니다.
  • canceled: POST …/cancel로 멈춘 실행입니다. skipped: 한 번도 실행되지 않았습니다. 다른 실행이 진행 중일 때 on_active_run: "skip"으로 보냈기 때문입니다.

출처

관련 글

연동 카테고리의 다른 글

연동 글 전체 보기

작성자 Sume