공개 영상 URL을 주면 GPU 워커가 자막을 지우거나 번역해 결과 영상 URL을 돌려줍니다. 설치·업로드 없이 HTTP 한 번. 종량제 크레딧(영상 30초당 1크레딧·300원), 결과는 우리 CDN에 저장됩니다.
키는 생성 시 한 번만 전체가 표시됩니다. 안전한 곳에 보관하세요. 우리는 키의 해시만 저장합니다.
아래 문서는 로그인 없이 볼 수 있어요.
| 키 | 이름 | 마지막 사용 |
|---|
아직 발급한 키가 없어요.
영상 30초당 1크레딧(300원)이 차감돼요. 길이는 처리 후 실측해 차액을 환급합니다. 최대 2분(4크레딧)까지 한 작업으로 처리돼요.
결제 링크를 카카오톡으로 보내드려요. 결제 후 새로고침하면 충전됩니다.
흐름은 딱 두 단계예요. ① 영상 URL로 작업 생성 → ② 완료될 때까지 상태 확인 → 결과 영상 URL을 받습니다. 모든 요청에 Authorization: Bearer <키> 헤더만 붙이면 됩니다. 베이스 URL은 https://bbaritshorts.com.
아래 탭에서 쓰는 언어를 고르세요. bsk_live_... 자리에 발급받은 키만 넣으면 동작합니다.
# 1) 작업 생성 — 중국어 자막 제거 curl -X POST https://bbaritshorts.com/api/v1/jobs \ -H "Authorization: Bearer bsk_live_..." \ -H "Content-Type: application/json" \ -d '{ "task": "erase", "video_url": "https://example.com/clip.mp4", "lang": "chinese" }' # → { "job_id": "abc-123", "status": "queued", ... } # 2) 완료될 때까지 상태 확인 (몇 초 간격으로 반복) curl https://bbaritshorts.com/api/v1/jobs/abc-123 \ -H "Authorization: Bearer bsk_live_..." # → { "status": "completed", "result_url": "https://.../out.mp4" }
import requests, time BASE = "https://bbaritshorts.com" KEY = "bsk_live_..." # 발급받은 API 키 H = {"Authorization": f"Bearer {KEY}"} # 1) 작업 생성 (번역은 task="translate", translate_to="korean" 으로) job = requests.post(f"{BASE}/api/v1/jobs", headers=H, json={ "task": "erase", "video_url": "https://example.com/clip.mp4", "lang": "chinese", }).json()["job_id"] # 2) 완료될 때까지 폴링 while True: s = requests.get(f"{BASE}/api/v1/jobs/{job}", headers=H).json() if s["status"] in ("completed", "failed"): break time.sleep(5) print(s["result_url"]) # 완성 영상 다운로드 URL
// Node 18+ (내장 fetch 사용) const BASE = "https://bbaritshorts.com"; const KEY = "bsk_live_..."; // 발급받은 API 키 const H = { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" }; // 1) 작업 생성 (번역은 task:"translate", translate_to:"korean") const { job_id } = await (await fetch(`${BASE}/api/v1/jobs`, { method: "POST", headers: H, body: JSON.stringify({ task: "erase", video_url: "https://example.com/clip.mp4", lang: "chinese" }), })).json(); // 2) 완료될 때까지 폴링 let s; do { await new Promise(f => setTimeout(f, 5000)); s = await (await fetch(`${BASE}/api/v1/jobs/${job_id}`, { headers: H })).json(); } while (s.status !== "completed" && s.status !== "failed"); console.log(s.result_url); // 완성 영상 다운로드 URL
💡 번역으로 쓰려면 본문(body)에서 task·언어만 바꾸면 끝입니다:
{ "task": "translate", "video_url": "...", "translate_to": "korean" }
curl https://bbaritshorts.com/api/v1/me -H "Authorization: Bearer bsk_live_..." # → { "credits": 96, "usage": { "total": 12, "this_month": 4 } }
"erase" = 자막을 지우고 배경을 복원, "translate" = 원본 자막을 지운 뒤 그 자리에 번역 자막을 다시 넣기.https://example.com/clip.mp4chinese.chinese · korean · english · japanese · latin · thai · arabic · hebrew · cyrillic · devanagari · greek · tamil · telugu · allkorean · english · chinese · japanese · vietnamese · thai · arabic · russian · spanish[x1, y1, x2, y2](각 0~1). 예를 들어 하단 자막만 처리하려면 [0, 0.55, 1, 1]. 생략하면 화면 전체에서 자동으로 찾습니다.| 과금 | 영상 30초당 1크레딧(올림, 최대 4). 제출 시 4크레딧 선차감 후 실측 환급. 실패 시 전액 환불. |
| 동시 작업 | 키 소유자당 진행 중 최대 5건. 초과 시 429. |
| 인증 실패 | 401. 크레딧 부족 402. 잘못된 입력 400. |
| 결과 보관 | 결과 URL은 추측 불가한 UUID. 처리 직후 다운로드해 보관하세요. |