API 문서
VoiceText AI는 REST API를 통해 음성 파일을 텍스트로 변환합니다.
기본 URL: https://vt.kiam.kr
인증
모든 API 요청에 X-API-Key 헤더가 필요합니다. API 키는 대시보드에서 발급받으세요.
X-API-Key: vt_your_api_key_here
POST /api/v1/transcribe.php
오디오 파일을 텍스트로 변환합니다.
POST/api/v1/transcribe.php
요청 파라미터 (multipart/form-data)
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| file | File | 필수 | 오디오 파일 (WAV, MP3, M4A, OGG, WEBM, FLAC) |
| language | string | 선택 | 언어 코드 (기본값: ko) |
| engine | string | 선택 | 엔진 (whisper | gpt4o, 기본값: whisper) |
성공 응답 (200)
{
"success": true,
"text": "안녕하세요, 반갑습니다.",
"language": "ko",
"duration": 3.2,
"engine": "whisper",
"remaining": 28
}
오류 응답
{
"success": false,
"error": "월 사용 한도(30회)를 초과했습니다."
}
오류 코드
| HTTP 코드 | 의미 |
|---|---|
| 401 | API 키가 없거나 유효하지 않음 |
| 400 | 잘못된 요청 (파일 없음, 형식 오류 등) |
| 413 | 파일 크기 초과 |
| 429 | 월 사용 한도 초과 |
| 500 | 서버 내부 오류 |
curl 예제
curl -X POST https://vt.kiam.kr/api/v1/transcribe.php \
-H "X-API-Key: vt_your_key" \
-F "file=@audio.wav" \
-F "language=ko"
PHP 예제
<?php
$apiKey = 'vt_your_key';
$filePath = '/path/to/audio.wav';
$ch = curl_init('https://vt.kiam.kr/api/v1/transcribe.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => ['file' => new CURLFile($filePath), 'language' => 'ko'],
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey],
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if ($response['success']) {
echo $response['text'];
}
Python 예제
import requests
api_key = 'vt_your_key'
with open('audio.wav', 'rb') as f:
response = requests.post(
'https://vt.kiam.kr/api/v1/transcribe.php',
headers={'X-API-Key': api_key},
files={'file': f},
data={'language': 'ko'}
)
data = response.json()
if data['success']:
print(data['text'])
JavaScript (Node.js) 예제
import FormData from 'form-data';
import fetch from 'node-fetch';
import fs from 'fs';
const fd = new FormData();
fd.append('file', fs.createReadStream('audio.wav'));
fd.append('language', 'ko');
const res = await fetch('https://vt.kiam.kr/api/v1/transcribe.php', {
method: 'POST',
headers: { 'X-API-Key': 'vt_your_key', ...fd.getHeaders() },
body: fd
});
const data = await res.json();
console.log(data.text);