API สำหรับนักพัฒนา

API สากลหนึ่งเดียวสำหรับทุกเวิร์กโฟลว์ของไฟล์

Converter App มอบอินเทอร์เฟซการประมวลผลไฟล์ประสิทธิภาพสูงให้กับนักพัฒนา แทนที่เครื่องมือแยกกันด้วย API เดียวสำหรับการแปลงเอกสาร การประมวลผลสื่อ การถอดเสียง และ OCR ที่ปรับขนาดได้

ภาพรวม API ของ Converter App

Converter App API มอบอินเทอร์เฟซสากลที่ใช้งานได้อย่างราบรื่นสำหรับความต้องการด้านการประมวลผลไฟล์ทั้งหมดของนักพัฒนา แทนที่จะต้องผสานรวมชุดเครื่องมือแยกส่วนที่กระจัดกระจาย แอปพลิเคชันของคุณสามารถเรียกใช้บริการประสิทธิภาพสูงเพียงหนึ่งเดียว คุณสามารถผสานรวมชุดตัวแปลงไฟล์ทั้งหมดของเราเข้ากับเวิร์กโฟลว์ฝั่งแบ็กเอนด์ได้โดยตรง เพื่อรองรับทุกอย่างตั้งแต่การเปลี่ยนไฟล์มาตรฐานไปจนถึงงานสื่อที่ต้องใช้ทรัพยากรสูง

URL ฐานสาธารณะคือ https://api.converter.app/ เส้นทางในเอกสารนี้ใช้ราก API ที่ให้บริการจากภายนอกนี้

ครอบคลุมทุกไฟล์ครบถ้วน

เข้าถึงคลังเครื่องมือการแปลงไฟล์ที่ครบถ้วนผ่านการผสานการทำงานเพียงครั้งเดียวที่ราบรื่น

โหมดการประมวลผล 2 แบบ

เลือกคำขอแบบซิงโครนัสสำหรับการตอบสนองทันที หรือใช้งานแบบอะซิงโครนัสสำหรับไฟล์ขนาดใหญ่และงานที่ใช้เวลานาน

ปรับให้เหมาะกับความต้องการของคุณ

ติดต่อเรา แล้วเราสามารถเสนอแผนที่ปรับให้เหมาะกับความต้องการของคุณได้ในอัตราที่คุ้มค่าอย่างยิ่ง

เอกสาร รูปภาพ เสียง วิดีโอ ข้อความ ไฟล์เก็บถาวร

ค้นพบการแปลงไฟล์ที่รองรับ (ไม่ต้องใช้คีย์)

ใช้ปลายทาง public pairs เป็นการทดสอบการเชื่อมต่อที่ง่ายที่สุด ไม่จำเป็นต้องใช้ API key และจะคืนรายการคู่การแปลงทั้งหมดที่รองรับบนแพลตฟอร์มให้ครบถ้วน

รับค่าGET /public/pairs

ปลายทางนี้เปิดให้ใช้งาน เพื่อให้นักพัฒนาสามารถตรวจสอบแคตตาล็อกการแปลงแบบสากลได้ก่อนที่จะร้องขอหรือกำหนดค่า API key

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" }
  ]
}

การยืนยันตัวตน & การควบคุมการเข้าถึง

นักพัฒนาสามารถยืนยันตัวตนได้โดยส่ง API key ของตนในส่วนหัว HTTP X API Key เอ็นด์พอยต์สาธารณะ /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. การแปลงแบบอะซิงโครนัส

โพสต์ /convert

ใช้การแปลงแบบอะซิงโครนัสสำหรับไฟล์ขนาดใหญ่ การประมวลผลแบบเป็นชุด งานเสียงหรือวิดีโอที่ใช้เวลานาน หรือแอปพลิเคชันระดับการผลิตที่ไม่ควรเปิดคำขออัปโหลดค้างไว้ระหว่างที่งานกำลังทำงาน

ช่องข้อมูลแบบฟอร์มประเภทคำอธิบาย
target_formatstringรูปแบบผลลัพธ์ที่ต้องการ แหล่งที่มาและปลายทางเป็นคู่การแปลง เช่น mp42mp3
filesไฟล์[]ไฟล์หนึ่งไฟล์หรือมากกว่านั้นที่จะแปลง

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. การติดตามสถานะ

รับข้อมูล /progress/{jobid}

เรียกใช้ endpoint นี้หลังจากสร้างงานแบบอะซิงโครนัสแล้ว โดยจะส่งคืนสถานะของงาน ค่าความคืบหน้าเป็นตัวเลขตั้งแต่ 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. การดึงไฟล์

GET /download/{jobid}

เมื่องานแบบไม่พร้อมกันถึงสถานะ completed ให้ดึงไฟล์ที่แปลงแล้วด้วย API key เดียวกับที่ใช้สร้างงานนั้น

ประเภทผลลัพธ์พฤติกรรม
ไฟล์ผลลัพธ์เดียว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 รองรับรูปแบบการผสานการทำงาน 2 แบบ เพื่อให้นักพัฒนาสามารถเลือกพฤติกรรมที่เหมาะสมสำหรับแต่ละกรณีการใช้งานได้

ขั้นตอนการทำงานรูปแบบคำขอเหมาะที่สุดสำหรับ
โฟลว์ซิงค์ด่วนPOST /convert/sync ส่งคืนไฟล์ที่แปลงแล้วใน response เดียวกันไฟล์ขนาดเล็ก สคริปต์บรรทัดคำสั่ง โพรโทไทป์ และระบบอัตโนมัติฝั่งเซิร์ฟเวอร์แบบง่ายๆ
โฟลว์แบบอะซิงก์ที่แข็งแกร่ง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)

การตอบสนองข้อผิดพลาด

ข้อผิดพลาดจะถูกส่งกลับเป็น JSON พร้อมฟิลด์ detail โดยใช้รหัสสถานะ HTTP มาตรฐาน

สถานะสาเหตุทั่วไป
400ไฟล์หายไป, ไม่มี target_format, รูปแบบ Job ID ไม่รองรับ หรือข้อมูลคำขอไม่ถูกต้อง.
401ไม่มี X API Key หรือไม่ถูกต้อง
403ไม่อนุญาตให้ใช้ API key กับคู่การแปลงที่ร้องขอ
404งานที่ร้องขอหรือไฟล์ผลลัพธ์ที่สร้างขึ้นไม่พร้อมใช้งาน
409การแปลงยังคงดำเนินการอยู่เมื่อมีการขอดาวน์โหลด
429คีย์ API ของคุณไม่มีโควตาเหลืออยู่แล้ว
500ไม่สามารถเตรียมหรือทำการแปลงให้เสร็จสมบูรณ์ได้ เนื่องจากเกิดข้อผิดพลาดในการประมวลผลฝั่งเซิร์ฟเวอร์
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}