Belin Doc IconBelin Doc

Belin Doc · 오픈 플랫폼

번역 API 문서

아래 엔드포인트는 모두 웹에서 쓰던 기능을 그대로 개방한 것입니다. 모델도 사용량도 결과물도 같고, 로그인 세션 대신 API 키를 쓴다는 점만 다릅니다.

기본 URL
https://belindoc.com/api
인증 헤더
X-Api-Key
메서드
POST · application/json
엔드포인트 수
21
최종 업데이트
2026-09-04
목차
시작하기

빠른 시작

PDF 한 건을 번역본으로 만들기까지 네 단계. 영상 번역도 호출 방식은 같습니다.

  1. 01

    API 키 발급

    belindoc.com에 로그인한 뒤 오른쪽 위 프로필 메뉴에서 개발자 센터를 열고 키를 만듭니다. 키는 ft_로 시작하며 전체 값은 생성 직후 한 번만 표시됩니다.

  2. 02

    파일 업로드

    먼저 사전 서명 URL을 받은 뒤 PUT으로 파일을 바로 올립니다. URL은 10분간 유효하며, 응답의 objectKey는 다음 단계에서 사용합니다.

    bash
    # 1. 사전 서명된 업로드 URL 발급 (10분간 유효)
    curl -X POST https://belindoc.com/api/external/translate/batchPresignedUploadUrl \
      -H "X-Api-Key: $BELINDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"fileNameList": ["contract.pdf"]}'
    
    # → data[0].persignedUploadUrl / data[0].objectKey
    
    # 2. PUT으로 파일을 해당 URL에 바로 업로드
    curl -X PUT "<persignedUploadUrl>" --upload-file contract.pdf
  3. 03

    번역 제출

    fileList, sourceLanguage, targetLanguage, model은 필수입니다. 원문 언어에 AnyLanguage를 넣으면 자동 감지되며, 모델 이름은 하드코딩하지 말고 getModelList 응답을 기준으로 하세요.

    bash
    curl -X POST https://belindoc.com/api/external/translate/batchSubmitTranslateTask \
      -H "X-Api-Key: $BELINDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "fileList": [{ "fileName": "contract.pdf", "fileObjectKey": "<objectKey>" }],
        "sourceLanguage": "AnyLanguage",
        "targetLanguage": "zh-CN",
        "model": "Gemini-2.5-Flash"
      }'
    
    # → { "code": "200", "data": { "batchNo": "...", "fileList": [ ... ] } }
  4. 04

    상태 조회 후 다운로드

    batchNo로 status가 3이 될 때까지 조회한 다음 다운로드 URL을 요청합니다. 이 엔드포인트는 SSE로 응답하며 링크는 [DONE] 이벤트에 담겨 옵니다.

    bash
    # 작업 폴링: status = 3이면 번역 결과 준비 완료
    curl -X POST https://belindoc.com/api/external/translate/searchTranslateFileByBatchNo \
      -H "X-Api-Key: $BELINDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"batchNo": "<batchNo>"}'
    
    # 번역 결과 다운로드 URL 발급: SSE 응답이며 링크는 [DONE] 이벤트에 담김
    curl -N -X POST https://belindoc.com/api/external/translate/getTranslateS3DownloadUrl \
      -H "X-Api-Key: $BELINDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"translateOrderNo": "<translateOrderNo>", "urlType": 2}'
    
    # event:[DONE]
    # data:{"url":"https://..."}
시작하기

인증

공개 엔드포인트는 /external/ 아래에 있으며 키만으로 호출자를 식별합니다. 그 밖의 요청 본문, 기본값, 응답 구조는 웹과 동일합니다.

http
POST /api/external/translate/getModelList HTTP/1.1
Host: belindoc.com
Content-Type: application/json
X-Api-Key: ft_xxxxxxxxxxxxxxxxxxxxxxxx
language: zh

{}
json
{
  "code": "200",
  "msg": null,
  "requestId": "8f1c…",
  "data": { }
}
X-Api-Key 헤더
모든 요청에 키를 담아 보냅니다. 키가 없거나 비활성화·만료되었거나 호출 IP가 허용 목록 밖이면 비즈니스 로직에 들어가기 전에 차단됩니다.
language 헤더
선택 항목으로 응답 msg의 언어를 정합니다. 값이 없으면 en입니다. 사이트가 지원하는 9개 언어(en, zh, zh-Hant, ja, ko, fr, ru, de, ar)를 받습니다.
키는 개인 계정에만 적용됩니다
키는 언제나 그것을 만든 개인 계정으로 해석됩니다. 파일은 플랫폼 스토리지에 저장되고 사용량도 해당 계정에서 차감됩니다. 조직 전용 작업 공간은 API로 접근하지 않습니다.
공통 응답 구조
모든 엔드포인트가 같은 래퍼로 응답합니다. code가 200이면 성공이고, 그 외에는 업무 오류이며 msg에 해당 언어 메시지가 담깁니다.
JWT도 서명도 필요 없음
웹 엔드포인트를 지키는 토큰·서명 필터는 /external/를 그대로 통과시킵니다. 키가 유일한 자격 증명이므로 비밀번호처럼 다루고 서버 쪽에만 두세요.
/external/translate9개

문서 번역

문서 번역 주 경로 전부: 업로드, 제출, 상태 조회, 다운로드. 여기에 모델·언어 목록까지 — 이름과 코드는 하드코딩하지 말고 여기서 읽으세요.

  • status: 0 대기 · 1 분석 중 · 2 번역 중 · 3 완료 · 4 실패 · 5 취소됨
  • urlType: 1 원본 · 2 번역본 · 3 좌우 대조 · 4 상하 대조 · -1 EPUB 미리보기
01

업로드 URL 발급

POST

/external/translate/batchPresignedUploadUrl

파일의 사전 서명 업로드 URL을 한 번에 받습니다.

요청

필드타입필수설명
fileNameListarray[string]필수업로드 URL을 받을 파일명

응답 · data

필드타입설명
persignedUploadUrlstring사전 서명 PUT 주소, 10분 유효
objectKeystring제출 시 함께 보낼 저장 키
fileNamestring원본 파일명
storageTypenumber파일이 있는 저장소 유형
예시
요청
{
  "fileNameList": ["contract.pdf"]
}
응답
{
  "code": "200",
  "data": [
    {
      "persignedUploadUrl": "https://s3.../contract.pdf?X-Amz-Signature=…",
      "objectKey": "translate/10086/2026/contract.pdf",
      "fileName": "contract.pdf",
      "storageType": 1
    }
  ]
}
02

스캔본 판별

POST

/external/translate/isOcr

제출 전에 업로드한 파일이 스캔본인지 판별합니다. 필요한 경우에만 OCR을 켜기 위한 사전 확인입니다.

요청

필드타입필수설명
fileObjectKeystring필수사전 서명 응답의 objectKey
storageTypenumber필수파일이 있는 저장소 유형

응답 · data

필드타입설명
isOcrnumber1이면 스캔본
isDoubleDecknumber1이면 텍스트 레이어가 있는 스캔본
예시
요청
{
  "fileObjectKey": "translate/10086/2026/contract.pdf",
  "storageType": 1
}
응답
{
  "code": "200",
  "data": { "isOcr": 1, "isDoubleDeck": 0 }
}
03

번역 제출

POST

/external/translate/batchSubmitTranslateTask

일괄 번역 작업을 제출하고 batchNo와 파일별 주문번호를 반환합니다.

요청

필드타입필수설명
fileListarray필수번역할 파일 목록
fileNamestring필수원본 파일명
fileObjectKeystring필수사전 서명 응답의 objectKey
isOcrFilenumber1이면 이 파일을 스캔본으로 처리, isOcr 결과를 넣으세요
sourceLanguagestring필수원문 언어 코드, AnyLanguage는 자동 감지
targetLanguagestring필수목표 언어 코드
modelstring필수모델 버전, getModelList에서 조회
isOcrnumber1이면 OCR 수행, 기본 0
isMathnumber1이면 수식 레이아웃 유지, 기본 0
translateStylenumber번역 스타일 프리셋
terminologyCollectionIdstring적용할 용어집 ID. 용어집 생성과 관리는 현재 웹에서만 가능하며 API로는 제공하지 않습니다

응답 · data

필드타입설명
batchNostring제출 시 반환되는 배치 번호
fileListarray번역할 파일 목록
balanceHintnumber1이면 잔여 사용량이 얼마 남지 않음
예시
요청
{
  "fileList": [
    { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
  ],
  "sourceLanguage": "AnyLanguage",
  "targetLanguage": "zh-CN",
  "model": "Gemini-2.5-Flash",
  "isOcr": 0,
  "terminologyCollectionId": "66f1c2a4b8d3e5f7a9c1b2d3"
}
응답
{
  "code": "200",
  "data": {
    "batchNo": "B20260828173001",
    "fileList": [
      { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
    ],
    "balanceHint": 0
  }
}
04

배치의 작업 조회

POST

/external/translate/searchTranslateFileByBatchNo

배치 번호로 해당 배치의 모든 작업을 조회합니다. 진행 상태 조회는 이 엔드포인트를 사용하세요.

요청

필드타입필수설명
batchNostring필수제출 시 반환되는 배치 번호

응답 · 작업 객체

필드타입설명
translateOrderNostring작업 주문번호
batchNostring제출 시 반환되는 배치 번호
sourceFileNamestring원본 파일명
statusnumber작업 상태 — 위 범례 참고
textNumbernumber이 작업의 과금 글자 수
targetFileUrlstring번역본 파일 URL
targetFileUrl2string중국 본토 대체 URL
xComparisonS3Urlstring좌우 대조 파일
yComparisonS3Urlstring상하 대조 파일
freeTranslateQuotanumber무료 사용량에서 차감된 페이지
walletTranslateQuotanumber유료 사용량에서 차감된 페이지
createTimenumber생성 시각, epoch 밀리초
startTimenumber시작 시각, epoch 밀리초
endTimenumber완료 시각, epoch 밀리초
errorCodestringstatus가 4일 때의 실패 코드
예시
요청
{
  "batchNo": "B20260828173001"
}
응답
{
  "code": "200",
  "data": [
    {
      "translateOrderNo": "T20260828173002",
      "batchNo": "B20260828173001",
      "sourceFileName": "contract.pdf",
      "status": 3,
      "textNumber": 4820,
      "targetFileUrl": "https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"
    }
  ]
}
05

번역 이력 조회

POST

/external/translate/searchTranslateFilePage

이 계정의 번역 이력을 페이지 단위로 조회합니다.

요청

필드타입필수설명
pageNumnumber필수페이지 번호, 1부터
pageSizenumber필수페이지당 건수
statusnumber작업 상태 — 위 범례 참고
fileTypestring파일 유형으로 필터, 예: PDF
sourceFileNamestring파일명으로 필터

응답 · data

필드타입설명
recordsarray현재 페이지 데이터
totalnumber전체 건수
currentnumber현재 페이지
pagesnumber전체 페이지 수
06

작업 상세 조회

POST

/external/translate/getTranslateFileDetail

주문번호로 단일 작업의 상세를 조회합니다.

요청

필드타입필수설명
translateOrderNostring필수작업 주문번호

응답 · 작업 객체

필드타입설명
translateOrderNostring작업 주문번호
batchNostring제출 시 반환되는 배치 번호
sourceFileNamestring원본 파일명
statusnumber작업 상태 — 위 범례 참고
textNumbernumber이 작업의 과금 글자 수
targetFileUrlstring번역본 파일 URL
targetFileUrl2string중국 본토 대체 URL
xComparisonS3Urlstring좌우 대조 파일
yComparisonS3Urlstring상하 대조 파일
freeTranslateQuotanumber무료 사용량에서 차감된 페이지
walletTranslateQuotanumber유료 사용량에서 차감된 페이지
createTimenumber생성 시각, epoch 밀리초
startTimenumber시작 시각, epoch 밀리초
endTimenumber완료 시각, epoch 밀리초
errorCodestringstatus가 4일 때의 실패 코드
07

다운로드 URL 발급

POST

/external/translate/getTranslateS3DownloadUrl

원본·번역본·대조본의 다운로드 URL을 받습니다(SSE 응답).

요청

필드타입필수설명
translateOrderNostring필수작업 주문번호
urlTypenumber필수어떤 파일을 받을지 — 위 범례 참고
isWatermarknumber0이면 워터마크 제거(요금제 지원 시)

응답 · SSE 이벤트

필드타입설명
urlstring다운로드 링크, [DONE] 이벤트에 포함
url2string중국 본토 대체 링크(있을 때)
예시
요청
{
  "translateOrderNo": "T20260828173002",
  "urlType": 2,
  "isWatermark": 0
}
응답
event:[PROCESS]
data:

event:[DONE]
data:{"translateOrderNo":"T20260828173002","url":"https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"}
08

사용 가능 모델 조회

POST

/external/translate/getModelList

model에 넣을 수 있는 값과 각 모델의 사용량 계수를 조회합니다.

요청

파라미터 없음 — 빈 JSON 본문을 보내세요.

응답 · data

필드타입설명
versionstringmodel에 넣을 값
modelTypenumber내부 모델 계열
vipTypenumber사용에 필요한 요금제
coefficientnumber이 모델의 사용량 계수
groupTypenumber소속 그룹
09

지원 언어 조회

POST

/external/translate/getLanguageEnum

지원하는 79개 언어 코드와 각 언어별 표기를 조회합니다.

요청

파라미터 없음 — 빈 JSON 본문을 보내세요.

응답 · data

필드타입설명
{locale}object로케일 → 언어 코드 → 표기
예시
응답
{
  "code": "200",
  "data": {
    "en": {
      "AnyLanguage": "Any language",
      "zh-CN": "Simplified Chinese",
      "…": "…"
    },
    "zh": {
      "AnyLanguage": "任意语言",
      "zh-CN": "简体中文",
      "…": "…"
    },
    "…": {}
  }
}
/external/videoTranslate10개

영상 번역

영상 번역 전 과정: 사용량을 미리 계산하고 제출한 뒤 진행을 따라가며, 자막을 고쳐 다시 생성합니다.

  • status: 0 시작 전 · 1 진행 중 · 2 완료 · 3 실패 · 4 취소됨
  • step: 1 음성 인식 · 2 자막 번역 · 3 음성 생성
  • stepStatus: 0 시작 전 · 1 진행 중 · 2 완료 · 3 실패
  • subtitleType: 0 자막 없음 · 1 번역 자막 · 2 원문 자막 · 3 이중 자막
01

업로드 URL 발급

POST

/external/videoTranslate/batchPresignedUploadUrl

영상 파일의 사전 서명 업로드 URL을 한 번에 받습니다.

요청

필드타입필수설명
fileNameListarray[string]필수업로드 URL을 받을 파일명

응답 · data

필드타입설명
persignedUploadUrlstring사전 서명 PUT 주소, 10분 유효
objectKeystring제출 시 함께 보낼 저장 키
fileNamestring원본 파일명
02

영상 제출

POST

/external/videoTranslate/submitVideoTranslate

영상 번역 작업을 제출합니다. videoTaskParam에 음성·자막·폰트 설정을 담습니다.

요청

필드타입필수설명
sourceLanguagestring필수원문 언어 코드, AnyLanguage는 자동 감지
targetLanguagestring필수목표 언어 코드
sourceFileObjectKeystring필수업로드한 영상의 objectKey
videoFileNamestring필수원본 영상 파일명
videoTaskParamobject필수음성·자막·폰트 설정
voiceRolestring더빙 음색, clone은 원 화자 복제
subtitleTypenumber삽입할 자막 — 위 범례 참고
videoTaskParam의 나머지 필드 (25개, 모두 생략 가능)
필드타입설명
recognTypenumber음성 인식 엔진, 기본 12 — 그대로 두세요
modelNamestring인식 모델, 기본 tiny
splitTypestring분할 방식, 기본 all
isCudabooleanGPU 가속 사용 여부, 기본 false
translateTypenumber자막 번역 엔진, 기본 14 — 그대로 두세요
ttsTypenumber음성 합성 엔진, 기본 15 — 그대로 두세요
voiceRatestring더빙 속도, 예 +10%, 기본 +0%
volumestring더빙 음량, 예 +10%, 기본 +0%
pitchstring더빙 음높이, 예 +5Hz, 기본 +0Hz
voiceAutorateboolean더빙 길이를 원본에 자동 맞춤, 기본 true
videoAutorateboolean영상 길이를 더빙에 자동 맞춤, 기본 true
appendVideoboolean길이가 모자라면 영상을 반복해 채움, 기본 true
isSeparateboolean음성과 배경음을 따로 출력, 기본 false
onlyVideoboolean영상만 출력하고 자막 파일은 만들지 않음, 기본 false
fontsizenumber자막 글자 크기, 기본 14
fontnamestring자막 글꼴 이름, 생략하면 서버 기본값
fontcolorstring자막 글자 색, #RRGGBB 또는 ASS 색상값
fontboldboolean자막 굵게 여부
subtitlePosYnumber자막 아래쪽 여백 비율, 0-90, 생략하면 하단
subtitlePosXnumber자막 가로 중심의 왼쪽 기준 비율, 5-95, 50이 가운데
fontbordercolorstring자막 외곽선 색, #RRGGBB / #RRGGBBAA / ASS 색상값
backgroundcolorstring자막 배경 상자 색, #RRGGBB / #RRGGBBAA / ASS 색상값
outlinenumber외곽선 두께 0-10, 0이면 외곽선 없음
shadownumber그림자 크기 0-10, 0이면 그림자 없음
borderStylenumber테두리 스타일: 1 일반 외곽선/그림자, 3 줄별 사각 배경

응답 · 작업 객체

필드타입설명
videoTranslateOrderNostring영상 작업 주문번호
videoFileNamestring원본 영상 파일명
videoDurationnumber영상 길이(초)
statusnumber작업 상태 — 위 범례 참고
stepnumber현재 처리 단계 — 위 범례 참고
stepStatusnumber현재 단계의 상태 — 위 범례 참고
targetFileUrlstring번역본 파일 URL
sourceSubtitlesUrlstring원문 자막 파일 URL
targetSubtitlesUrlstring번역 자막 파일 URL
freeTranslateQuotanumber무료 사용량에서 차감된 페이지
walletTranslateQuotanumber유료 사용량에서 차감된 페이지
errorMessagestring실패 시 사유
예시
요청
{
  "sourceLanguage": "ja",
  "targetLanguage": "zh-CN",
  "sourceFileObjectKey": "video/10086/2026/lecture.mp4",
  "videoFileName": "lecture.mp4",
  "videoTaskParam": { "voiceRole": "clone", "subtitleType": 1 }
}
03

영상 비용 예상

POST

/external/videoTranslate/videoTranslateQuotaCalculate

제출 전에 길이·음색·자막 유형으로 사용량을 미리 계산합니다.

요청

필드타입필수설명
videoDurationnumber필수영상 길이(초)
voiceRolestring필수더빙 음색, clone은 원 화자 복제
subtitleTypenumber필수삽입할 자막 — 위 범례 참고

응답 · data

필드타입설명
translateQuotanumber이 작업의 총 소모 사용량
videoDurationTranslateQuotanumber길이로 환산한 사용량
thirtySecondQuotanumber30초당 사용량
quotaCoefficientnumber기준에 곱해지는 계수
04

영상 이력 조회

POST

/external/videoTranslate/searchVideoTranslatePage

이 계정의 영상 번역 이력을 페이지 단위로 조회합니다.

요청

필드타입필수설명
pageNumnumber필수페이지 번호, 1부터
pageSizenumber필수페이지당 건수
statusnumber작업 상태 — 위 범례 참고

응답 · data

필드타입설명
recordsarray현재 페이지 데이터
totalnumber전체 건수
currentnumber현재 페이지
pagesnumber전체 페이지 수
05

작업 상세 조회

POST

/external/videoTranslate/getVideoTranslateDetail

단일 영상 작업을 조회합니다(진행률과 결과물 URL 포함).

요청

필드타입필수설명
videoTranslateOrderNostring필수영상 작업 주문번호

응답 · 작업 객체

필드타입설명
videoTranslateOrderNostring영상 작업 주문번호
videoFileNamestring원본 영상 파일명
videoDurationnumber영상 길이(초)
statusnumber작업 상태 — 위 범례 참고
stepnumber현재 처리 단계 — 위 범례 참고
stepStatusnumber현재 단계의 상태 — 위 범례 참고
targetFileUrlstring번역본 파일 URL
sourceSubtitlesUrlstring원문 자막 파일 URL
targetSubtitlesUrlstring번역 자막 파일 URL
freeTranslateQuotanumber무료 사용량에서 차감된 페이지
walletTranslateQuotanumber유료 사용량에서 차감된 페이지
errorMessagestring실패 시 사유
06

영상 작업 취소

POST

/external/videoTranslate/cancelVideoTranslateHistory

아직 끝나지 않은 영상 작업을 취소합니다.

요청

필드타입필수설명
videoTranslateOrderNostring필수영상 작업 주문번호
07

자막 가져오기

POST

/external/videoTranslate/getVideoTranslateSubtitles

편집용으로 원문·번역 자막을 가져옵니다.

요청

필드타입필수설명
videoTranslateOrderNostring필수영상 작업 주문번호

응답 · data

필드타입설명
sourceSubtitlesUrlstring원문 자막 파일 URL
targetSubtitlesUrlstring번역 자막 파일 URL
08

편집한 자막 제출

POST

/external/videoTranslate/submitVideoRewrite

편집한 자막을 보내 영상을 다시 생성합니다.

요청

필드타입필수설명
videoTranslateOrderNostring필수영상 작업 주문번호
sourceSubtitlesTxtstring필수편집한 원문 자막
targetSubtitlesTxtstring필수편집한 번역 자막
videoTaskParamobject음성·자막·폰트 설정
videoTaskParam의 나머지 필드 (25개, 모두 생략 가능)
필드타입설명
recognTypenumber음성 인식 엔진, 기본 12 — 그대로 두세요
modelNamestring인식 모델, 기본 tiny
splitTypestring분할 방식, 기본 all
isCudabooleanGPU 가속 사용 여부, 기본 false
translateTypenumber자막 번역 엔진, 기본 14 — 그대로 두세요
ttsTypenumber음성 합성 엔진, 기본 15 — 그대로 두세요
voiceRatestring더빙 속도, 예 +10%, 기본 +0%
volumestring더빙 음량, 예 +10%, 기본 +0%
pitchstring더빙 음높이, 예 +5Hz, 기본 +0Hz
voiceAutorateboolean더빙 길이를 원본에 자동 맞춤, 기본 true
videoAutorateboolean영상 길이를 더빙에 자동 맞춤, 기본 true
appendVideoboolean길이가 모자라면 영상을 반복해 채움, 기본 true
isSeparateboolean음성과 배경음을 따로 출력, 기본 false
onlyVideoboolean영상만 출력하고 자막 파일은 만들지 않음, 기본 false
fontsizenumber자막 글자 크기, 기본 14
fontnamestring자막 글꼴 이름, 생략하면 서버 기본값
fontcolorstring자막 글자 색, #RRGGBB 또는 ASS 색상값
fontboldboolean자막 굵게 여부
subtitlePosYnumber자막 아래쪽 여백 비율, 0-90, 생략하면 하단
subtitlePosXnumber자막 가로 중심의 왼쪽 기준 비율, 5-95, 50이 가운데
fontbordercolorstring자막 외곽선 색, #RRGGBB / #RRGGBBAA / ASS 색상값
backgroundcolorstring자막 배경 상자 색, #RRGGBB / #RRGGBBAA / ASS 색상값
outlinenumber외곽선 두께 0-10, 0이면 외곽선 없음
shadownumber그림자 크기 0-10, 0이면 그림자 없음
borderStylenumber테두리 스타일: 1 일반 외곽선/그림자, 3 줄별 사각 배경

응답 · data

필드타입설명
videoTranslateRewriteOrderNostring자막 재생성 주문번호
statusnumber작업 상태 — 위 범례 참고
targetFileUrlstring번역본 파일 URL
09

재생성 진행 상황 조회

POST

/external/videoTranslate/getVideoTranslateRewriteDetail

자막 재생성 작업의 상태를 조회합니다.

요청

필드타입필수설명
videoTranslateRewriteOrderNostring필수자막 재생성 주문번호

응답 · data

필드타입설명
statusnumber작업 상태 — 위 범례 참고
targetFileUrlstring번역본 파일 URL
targetSubtitlesUrlstring번역 자막 파일 URL
errorMessagestring실패 시 사유
10

재생성 비용 예상

POST

/external/videoTranslate/videoTranslateRewriteQuotaCalculate

자막 재생성에 드는 사용량을 미리 계산합니다.

요청

필드타입필수설명
videoTranslateRewriteOrderNostring필수자막 재생성 주문번호

응답 · data

필드타입설명
translateQuotanumber이 작업의 총 소모 사용량
quotaCoefficientnumber기준에 곱해지는 계수
/external/user2개

계정 정보

키에 연결된 계정의 사용량과 요금제. 제출 전에 잔여량을 확인하면 오류로 알게 될 일이 없습니다.

  • subscriptionStatus: 1 처리 대기 · 2 구독 중 · 3 구독 해지 · 4 취소됨
  • interval: 1 일 · 2 주 · 3 월 · 4 년
01

잔여 사용량 조회

POST

/external/user/getMyWalletInfo

이 키가 속한 계정의 지갑을 조회합니다. 페이지 사용량, OCR 사용량, 워터마크 제거 횟수, 추천 리워드 잔액.

요청

파라미터 없음 — 빈 JSON 본문을 보내세요.

응답 · data

필드타입설명
userIdnumber이 키가 속한 계정 ID
translateQuotanumber남은 페이지 사용량
advancedTranslateQuotanumber남은 고급 모델 사용량
ocrTranslateQuotanumber남은 OCR 사용량
accelerationCardNumbernumber남은 가속 카드 수
totalFreeTranslateQuotanumber이번 주기에 지급된 무료 페이지
useFreeTranslateQuotanumber이번 주기에 사용한 무료 페이지
totalFreeOcrTranslateQuotanumber이번 주기에 지급된 무료 OCR 페이지
useFreeOcrTranslateQuotanumber이번 주기에 사용한 무료 OCR 페이지
freeWatermarkQuotanumber남은 워터마크 제거 횟수
daysFreeWatermarkQuotanumber하루에 지급되는 워터마크 제거 횟수
usedDaysFreeWatermarkQuotanumber오늘 사용한 워터마크 제거 횟수
rewardBalancenumber추천 리워드 잔액
rewardTotalnumber누적 추천 리워드
예시
요청
{}
응답
{
  "code": "200",
  "data": {
    "userId": 10086,
    "translateQuota": 12000,
    "advancedTranslateQuota": 0,
    "ocrTranslateQuota": 800,
    "totalFreeTranslateQuota": 500,
    "useFreeTranslateQuota": 132
  }
}
02

요금제 조회

POST

/external/user/getMySubscriptionInfo

이 키가 속한 계정의 요금제를 조회합니다. 등급과 현재 주기, 그리고 동시 작업 수·파일 크기·영상 길이 한도.

요청

파라미터 없음 — 빈 JSON 본문을 보내세요.

응답 · data

필드타입설명
vipNamestring요금제 이름
vipTypenumber요금제 등급
subscriptionStatusnumber구독 상태 — 위 범례 참고
intervalnumber결제 주기 — 위 범례 참고
startTimenumber현재 주기 시작, epoch 밀리초
endTimenumber현재 주기 종료, epoch 밀리초
translateQuotanumber주기마다 지급되는 페이지
advancedTranslateQuotanumber주기마다 지급되는 고급 모델 페이지
freeTranslateQuotanumber주기마다 지급되는 무료 페이지
freeTranslateQuotaIntervalnumber무료 페이지 재설정 주기: 1 일 · 2 주 · 3 월
concurrenceTasknumber동시에 실행 가능한 문서 작업 수
uploadFileSizenumber업로드 크기 한도(MB)
videoDurationLimitnumber영상 길이 한도(분)
videoTranslateConcurrencynumber동시에 실행 가능한 영상 작업 수
videoFileSizenumber영상 파일 크기 한도(MB)
부록

오류 코드

키 관련 실패도 HTTP 200으로 돌아오고 업무 코드가 본문에 담깁니다. 연동 시 반드시 처리해야 할 코드는 다음과 같습니다.

코드의미조치
30306유효하지 않은 API 키ft_ 접두사를 포함해 키를 온전히 복사했는지 확인하세요. 삭제된 키도 같은 코드를 반환합니다.
30307비활성화된 키개발자 센터에서 다시 활성화하거나 다른 키로 바꾸세요.
30308만료된 키만료일을 뒤로 미루거나 새 키를 만드세요.
30309호출 IP가 허용 목록에 없음서버의 아웃바운드 IP를 키의 허용 목록에 추가하거나 목록을 비우세요.
30312관리자가 차단한 키고객지원에 문의하세요. 개발자 센터에서는 해제할 수 없습니다.

번역 자체의 오류(사용량 부족, 미지원 파일, 중복 제출 등)는 별도 코드를 쓰며 msg는 language 헤더의 언어로 옵니다. 분기 처리는 msg가 아니라 code로 하세요.

부록

사용량과 제한

API는 또 하나의 입구일 뿐 별개의 상품이 아닙니다. 아래 규칙은 웹과 동일하게 적용됩니다.

같은 사용량, 별도 과금 없음
API 호출은 웹과 같은 페이지·영상 사용량을 같은 모델 계수로 차감합니다. API 전용 요금은 없습니다.
워터마크 규칙 동일
무료 구간에서는 PDF 번역본에 워터마크가 들어갑니다. 브라우저에서 받은 것과 똑같으며 API로 받아도 사라지지 않습니다.
호출 횟수는 제출 계열만 집계
키의 호출 횟수는 batchSubmitTranslateTask, submitVideoTranslate, submitVideoRewrite에서만 늘어납니다. 조회 계열은 아무리 폴링해도 집계되지 않습니다.
계정당 제출은 순차 처리
제출은 계정 단위로 잠깁니다. 앞선 제출이 접수 중일 때 다시 보내면 중복 작업 오류가 돌아오니, 병렬로 던지지 말고 잠시 뒤 재시도하세요.
OCR은 기본 꺼짐
isOcr는 스캔 문서일 때만 켜세요. OCR은 페이지 사용량에 더해 OCR 하위 한도까지 차감하므로, 텍스트 PDF에 켜두면 두 배로 소모됩니다. 확실하지 않으면 isOcr 엔드포인트로 먼저 확인하세요.

HTTP를 직접 짜기 번거롭다면

같은 기능을 MCP 도구로도 제공합니다. AI 에이전트가 바로 호출할 수 있어 HTTP 코드를 한 줄도 쓰지 않아도 됩니다.