개발자 API

모든 파일 작업 흐름을 위한 하나의 범용 API

개발자를 위한 고성능 파일 처리 인터페이스를 제공하는 Converter App. 확장 가능한 문서 변환, 미디어 처리, 전사, OCR을 위해 개별 도구를 하나의 API로 대체하세요.

Converter App API 개요

Converter App API는 개발자에게 모든 파일 처리 요구를 위한 매끄럽고 범용적인 인터페이스를 제공합니다. 여러 개로 분산된 개별 도구들을 따로 통합하는 대신, 애플리케이션은 하나의 고성능 서비스만 호출하면 됩니다. 표준 파일 변환부터 까다로운 미디어 작업까지 모두 처리할 수 있도록, 전체 변환 도구 모음을 백엔드 워크플로에 직접 통합할 수 있습니다.

공개 기본 URL은 https://api.converter.app/입니다. 이 문서의 경로는 외부에서 제공되는 이 API 루트를 사용합니다.

전방위 지원

하나의 간소화된 통합으로 모든 변환 도구 라이브러리에 액세스하세요.

두 가지 처리 모드

즉시 응답이 필요하면 동기 요청을, 대용량 파일과 장시간 작업에는 비동기 작업을 선택하세요.

사용자님의 필요에 맞춘 맞춤형 변환

문의해 주시면 고객님의 필요에 맞춘 맞춤형 플랜을 최고의 요금으로 제공해 드립니다.

문서 이미지 오디오 동영상 텍스트 압축 파일

지원되는 변환 살펴보기(키 필요 없음)

공개 pairs 엔드포인트를 가장 간단한 연결 테스트로 사용하세요. API 키가 필요하지 않으며, 플랫폼에서 사용 가능한 지원 변환 쌍 전체 목록을 반환합니다.

가져오기 /public/pairs

이 엔드포인트는 공개되어 있어, 개발자는 API 키를 요청하거나 구성하기 전에 범용 변환 카탈로그를 확인할 수 있습니다.

curl "https://api.converter.app/public/pairs"

JavaScript

const response = await fetch('https://api.converter.app/public/pairs');
const pairs = await response.json();
console.log(pairs.supported_pairs);

Python

import requests

response = requests.get('https://api.converter.app/public/pairs')
response.raise_for_status()
pairs = response.json()
print(pairs['supported_pairs'])

예시 응답

{
  "supported_pairs": [
    { "from": "mp3", "to": "text" },
    { "from": "mp4", "to": "mp3" },
    { "from": "mov", "to": "mp4" },
    { "from": "wav", "to": "mp3" },
    { "from": "mkv", "to": "mp4" }
  ]
}

인증 및 액세스 제어

개발자는 HTTP 헤더 X API Key에 API 키를 전달하여 인증합니다. 공개 /public/pairs 엔드포인트는 이 페이지에서 키가 필요하지 않은 유일한 엔드포인트입니다.

관리자 로그인작동 방식개발자 영향력
X-API-Key키를 HTTP 요청 헤더로 보내세요./pairs, /convert/sync, /convert, /progress/{jobid}, 및 /download/{jobid}에 필요합니다.
사용량 할당량각 키에는 숫자로 표시된 변환 할당량이 있습니다. 변환 작업이 생성되면 해당 할당량이 감소합니다.-1의 할당량은 무제한 변환을 허용합니다. 다른 값은 남은 허용 변환 횟수를 나타냅니다.
허용된 쌍키는 mp42mp3와 같은 특정 변환 유형으로 제한되거나, all 지원되는 모든 쌍에 대한 액세스가 허용될 수 있습니다./pairs는 귀하의 키가 사용할 권한이 있는 페어만 반환하며, 해당 목록에 없는 변환 요청은 거부됩니다.
curl "https://api.converter.app/pairs" \
  -H "X-API-Key: YOUR_API_KEY"

JavaScript

const response = await fetch('https://api.converter.app/pairs', {
  headers: {
    'X-API-Key': apiKey
  }
});

const pairs = await response.json();
console.log(pairs);

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
response = requests.get('https://api.converter.app/pairs', headers=headers)
response.raise_for_status()
print(response.json())

2. 동기식 변환

게시물 /convert/sync

동일한 HTTP 응답에서 즉시 결과를 원하실 때는 동기 변환을 사용하세요. API가 변환 작업을 시작하고 완료될 때까지, 최대 30분 동안 요청이 열린 상태로 유지됩니다.

양식 필드유형설명
target_format문자열요청된 출력 확장자입니다. 예: pdf, docx, mp3 또는 jpg.
filesfile[]업로드된 원본 파일이 하나 이상입니다. API는 업로드된 파일 이름에서 원본 형식을 판별합니다.
curl -X POST "https://api.converter.app/convert/sync" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "target_format=pdf" \
  -F "files=@/path/to/document.docx" \
  -o converted.pdf

JavaScript

const form = new FormData();
form.append('target_format', 'pdf');
form.append('files', fileInput.files[0]);

const response = await fetch('https://api.converter.app/convert/sync', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey
  },
  body: form
});

const convertedFile = await response.blob();

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
data = {'target_format': 'pdf'}

with open('/path/to/document.docx', 'rb') as document:
    files = {'files': document}
    response = requests.post(
        'https://api.converter.app/convert/sync',
        headers=headers,
        data=data,
        files=files
    )

response.raise_for_status()
with open('converted.pdf', 'wb') as output:
    output.write(response.content)

응답은 변환된 파일을 직접 스트리밍합니다. 변환 결과가 여러 파일인 경우, API는 .zip 아카이브를 반환합니다.

3. 비동기 변환

POST /convert

무거운 파일, 일괄 처리, 장시간 실행되는 오디오 또는 동영상 작업, 또는 작업이 진행되는 동안 업로드 요청을 열어 둔 채로 두지 않아야 하는 운영용 애플리케이션에는 비동기 변환을 사용하세요.

양식 필드유형설명
target_format문자열원하는 출력 형식입니다. 소스와 대상이 변환 쌍을 이룹니다. 예: mp42mp3.
filesfile[]변환할 파일 1개 이상.

cURL

curl -X POST "https://api.converter.app/convert" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "target_format=mp3" \
  -F "files=@/path/to/video.mp4"

JavaScript

const form = new FormData();
form.append('target_format', 'mp3');
form.append('files', fileInput.files[0]);

const response = await fetch('https://api.converter.app/convert', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey
  },
  body: form
});

const job = await response.json();
console.log(job.jobid, job.remaining_quota);

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
data = {'target_format': 'mp3'}

with open('/path/to/video.mp4', 'rb') as video:
    files = {'files': video}
    response = requests.post(
        'https://api.converter.app/convert',
        headers=headers,
        data=data,
        files=files
    )

response.raise_for_status()
job = response.json()
print(job['jobid'], job['remaining_quota'])

성공 응답

{
  "status": "success",
  "jobid": "b3f6b2e8f5c34c4ab01c93c4d1b2f9e8",
  "pair": "mp42mp3",
  "remaining_quota": 42
}

4. 상태 추적

GET /progress/{jobid}

비동기 작업을 생성한 후 이 엔드포인트를 폴링하세요. 작업 상태, 0.0부터 1.0까지의 숫자 진행률 값, 그리고 변환이 실패한 경우 오류 세부 정보를 반환합니다.

헤더설명
X-API-Key개발자 API 키.
curl "https://api.converter.app/progress/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8" \
  -H "X-API-Key: YOUR_API_KEY"

JavaScript

const response = await fetch('https://api.converter.app/progress/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8', {
  headers: {
    'X-API-Key': apiKey
  }
});

const progress = await response.json();
console.log(progress.status, progress.progress);

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
response = requests.get(
    'https://api.converter.app/progress/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8',
    headers=headers
)
response.raise_for_status()
progress = response.json()
print(progress['status'], progress['progress'])
{
  "jobid": "b3f6b2e8f5c34c4ab01c93c4d1b2f9e8",
  "progress": 1.0,
  "status": "completed",
  "error": null
}

가능한 상태는 processing, completed, failed입니다. 진행률은 0.0에서 1.0 사이의 숫자입니다.

5. 파일 가져오기

가져오기 /download/{jobid}

비동기 작업이 completed 상태에 도달하면, 작업을 생성할 때 사용한 동일한 API 키로 변환된 결과를 가져오십시오.

결과 유형행동
단일 출력 파일API는 변환된 파일을 직접 스트리밍합니다.
resultfile 매니페스트작업에서 결과 매니페스트를 제공하면, API는 해당 매니페스트에 지정된 파일을 반환합니다.
여러 개의 출력 파일API는 생성된 파일을 .zip 아카이브로 즉시 묶습니다.
curl -L "https://api.converter.app/download/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8" \
  -H "X-API-Key: YOUR_API_KEY" \
  -o converted-output.zip

JavaScript

const response = await fetch('https://api.converter.app/download/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8', {
  headers: {
    'X-API-Key': apiKey
  }
});

const file = await response.blob();

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
response = requests.get(
    'https://api.converter.app/download/b3f6b2e8f5c34c4ab01c93c4d1b2f9e8',
    headers=headers
)
response.raise_for_status()

with open('converted-output.zip', 'wb') as output:
    output.write(response.content)

개발자 워크플로우 요약

API는 두 가지 통합 패턴을 지원하므로, 개발자는 각 사용 사례에 맞는 동작을 선택할 수 있습니다.

흐름요청 패턴최적 용도
빠른 동기화 흐름POST /convert/sync는 변환된 파일을 동일한 응답으로 반환합니다.작은 파일, 명령줄 스크립트, 프로토타입, 그리고 간단한 서버 측 자동화.
강력한 비동기 흐름POST /convert를 호출한 다음 GET /progress/{jobid}를 폴링하고, 이어서 GET /download/{jobid}를 호출합니다.대용량 동영상 또는 오디오 파일, 일괄 변환, 웹 애플리케이션 백엔드, 그리고 재시도에 적합한 프로덕션 시스템.

비동기 흐름 예시

# 1. Start the job
curl -X POST "https://api.converter.app/convert" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "target_format=mp3" \
  -F "files=@/path/to/video.mp4"

# 2. Poll until completed
curl "https://api.converter.app/progress/JOBID" \
  -H "X-API-Key: YOUR_API_KEY"

# 3. Download the finished output
curl -L "https://api.converter.app/download/JOBID" \
  -H "X-API-Key: YOUR_API_KEY" \
  -o result.mp3

JavaScript

const form = new FormData();
form.append('target_format', 'mp3');
form.append('files', fileInput.files[0]);

const createResponse = await fetch('https://api.converter.app/convert', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey
  },
  body: form
});
const job = await createResponse.json();

const progressResponse = await fetch(`https://api.converter.app/progress/${job.jobid}`, {
  headers: {
    'X-API-Key': apiKey
  }
});
const progress = await progressResponse.json();

if (progress.status === 'completed') {
  const downloadResponse = await fetch(`https://api.converter.app/download/${job.jobid}`, {
    headers: {
      'X-API-Key': apiKey
    }
  });
  const result = await downloadResponse.blob();
}

Python

import requests

headers = {'X-API-Key': 'YOUR_API_KEY'}
data = {'target_format': 'mp3'}

with open('/path/to/video.mp4', 'rb') as video:
    files = {'files': video}
    create_response = requests.post(
        'https://api.converter.app/convert',
        headers=headers,
        data=data,
        files=files
    )

create_response.raise_for_status()
job = create_response.json()

progress_response = requests.get(
    f"https://api.converter.app/progress/{job['jobid']}",
    headers=headers
)
progress_response.raise_for_status()
progress = progress_response.json()

if progress['status'] == 'completed':
    download_response = requests.get(
        f"https://api.converter.app/download/{job['jobid']}",
        headers=headers
    )
    download_response.raise_for_status()
    with open('result.mp3', 'wb') as output:
        output.write(download_response.content)

오류 응답

오류는 표준 HTTP 상태 코드를 사용하여 detail 필드가 포함된 JSON으로 반환됩니다.

상태일반적인 원인
400파일 누락, target_format 누락, 지원되지 않는 작업 ID 형식, 또는 잘못된 요청 입력.
401X API Key가 없거나 유효하지 않습니다.
403API 키는 요청한 변환 쌍에 사용할 수 없습니다.
404요청한 작업 또는 생성된 결과 파일을 사용할 수 없습니다.
409다운로드가 요청되었을 때 변환이 아직 처리 중입니다.
429API 키의 남은 할당량이 없습니다.
500서버 측 처리 오류로 인해 변환을 준비하거나 완료할 수 없었습니다.
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}