API dành cho nhà phát triển

Một API duy nhất cho mọi quy trình xử lý tệp

Converter App cung cấp cho nhà phát triển một giao diện xử lý tệp hiệu năng cao. Thay thế các công cụ riêng lẻ bằng một API duy nhất cho chuyển đổi tài liệu, xử lý media, chuyển lời nói thành văn bản và OCR có khả năng mở rộng.

Tổng quan API của Converter App

API của Converter App cung cấp cho nhà phát triển một giao diện thống nhất, mượt mà cho mọi nhu cầu xử lý tệp. Thay vì tích hợp một tập hợp rời rạc các công cụ riêng lẻ, ứng dụng của bạn có thể gọi một dịch vụ duy nhất, hiệu năng cao. Bạn có thể tích hợp trọn bộ công cụ chuyển đổi của chúng tôi trực tiếp vào quy trình làm việc backend để xử lý mọi thứ, từ các thay đổi tệp tiêu chuẩn đến những tác vụ media đòi hỏi cao.

URL cơ sở công khai là https://api.converter.app/. Các đường dẫn trong tài liệu này sử dụng gốc API được phục vụ bên ngoài này.

Phạm vi bao phủ toàn diện

Truy cập toàn bộ thư viện công cụ chuyển đổi thông qua một tích hợp tinh gọn.

Hai chế độ xử lý

Chọn yêu cầu đồng bộ để nhận phản hồi ngay lập tức hoặc tác vụ không đồng bộ cho các tệp lớn và các tác vụ chạy lâu.

Được thiết kế phù hợp với nhu cầu của bạn

Liên hệ với chúng tôi và chúng tôi có thể đề xuất một gói phù hợp với nhu cầu của bạn với mức giá không thể tốt hơn.

Tài liệu Hình ảnh Âm thanh Video Văn bản Tệp lưu trữ

Khám phá các chuyển đổi được hỗ trợ (Không cần key)

Sử dụng endpoint cặp công khai như một bài kiểm tra kết nối đơn giản nhất. Endpoint này không yêu cầu khóa API và trả về danh sách đầy đủ các cặp chuyển đổi được hỗ trợ trên nền tảng.

LẤY /public/pairs

Endpoint này mở để các nhà phát triển có thể kiểm tra danh mục chuyển đổi chung trước khi yêu cầu hoặc cấu hình 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'])

Ví dụ phản hồi

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

Xác thực & Kiểm soát truy cập

Nhà phát triển xác thực bằng cách truyền khóa API của họ trong tiêu đề HTTP X API Key. Điểm cuối /public/pairs công khai là điểm cuối duy nhất trên trang này không yêu cầu khóa.

Điều khiểnCách thức hoạt độngTác động đến nhà phát triển
X-API-KeyGửi khóa dưới dạng tiêu đề của yêu cầu HTTP.Bắt buộc đối với /pairs, /convert/sync, /convert, /progress/{jobid}/download/{jobid}.
Hạn mức sử dụngMỗi khóa có một hạn mức chuyển đổi theo số lượng. Hạn mức này sẽ giảm khi các tác vụ chuyển đổi được tạo.Một hạn mức -1 cho phép chuyển đổi không giới hạn. Các giá trị khác biểu thị số lượt chuyển đổi còn lại được phép.
Các cặp được phépCác khóa có thể bị giới hạn cho các kiểu chuyển đổi cụ thể như mp42mp3, hoặc được cấp quyền truy cập vào all các cặp được hỗ trợ./pairs chỉ trả về những cặp mà khóa của bạn được phép sử dụng, và các yêu cầu chuyển đổi nằm ngoài danh sách đó sẽ bị từ chối.
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. Chuyển đổi đồng bộ

BÀI VIẾT /convert/sync

Sử dụng chuyển đổi đồng bộ khi bạn muốn có kết quả ngay trong cùng phản hồi HTTP. Yêu cầu sẽ vẫn mở trong khi API bắt đầu tác vụ chuyển đổi và chờ hoàn tất, tối đa 30 phút.

Trường biểu mẫuLoại Mô tả
target_formatchuỗiPhần mở rộng đầu ra được yêu cầu, chẳng hạn như pdf, docx, mp3 hoặc jpg.
filestệp[]Một hoặc nhiều tệp nguồn đã tải lên. API xác định định dạng nguồn từ tên tệp đã tải lên.
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)

Phản hồi sẽ truyền trực tiếp tệp đã chuyển đổi. Nếu quá trình chuyển đổi tạo ra nhiều tệp, API sẽ trả về một kho lưu trữ .zip.

3. Chuyển đổi không đồng bộ

ĐĂNG BÀI /convert

Sử dụng chuyển đổi bất đồng bộ cho các tệp lớn, xử lý hàng loạt, các tác vụ âm thanh hoặc video chạy lâu, hoặc các ứng dụng sản xuất không nên giữ các yêu cầu tải lên mở trong khi công việc đang chạy.

Trường biểu mẫuLoại Mô tả
target_formatchuỗiĐịnh dạng đầu ra mong muốn. Nguồn và đích tạo thành cặp chuyển đổi, ví dụ mp42mp3.
filesfile[]Một hoặc nhiều tệp để chuyển đổi.

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'])

Phản hồi thành công

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

4. Theo dõi trạng thái

LẤY /progress/{jobid}

Gọi endpoint này sau khi tạo một tác vụ bất đồng bộ. Nó trả về trạng thái tác vụ, một giá trị tiến độ dạng số từ 0.0 đến 1.0, và chi tiết lỗi nếu chuyển đổi không thành công.

Tiêu đềMô tả
X-API-KeyKhóa API dành cho nhà phát triển của bạn.
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
}

Các trạng thái có thể là processing, completedfailed. Tiến độ là một số giữa 0.01.0.

5. Truy xuất tệp

NHẬN /download/{jobid}

Khi một tác vụ không đồng bộ đạt trạng thái completed, hãy truy xuất tệp đầu ra đã chuyển đổi bằng cùng API key đã dùng để tạo tác vụ.

Loại kết quảHành vi
Tệp đầu ra duy nhấtAPI truyền trực tiếp tệp đã chuyển đổi.
manifest resultfileNếu tác vụ cung cấp tệp kê khai kết quả, API sẽ trả về tệp được chỉ định bởi tệp kê khai đó.
Nhiều tệp đầu raAPI đóng gói các tệp đã tạo thành một tệp lưu trữ .zip ngay khi xử lý.
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)

Tóm tắt quy trình làm việc của nhà phát triển

API hỗ trợ hai kiểu tích hợp để các nhà phát triển có thể chọn hành vi phù hợp cho từng trường hợp sử dụng.

Quy trìnhMẫu yêu cầuPhù hợp nhất cho
Luồng đồng bộ nhanhPOST /convert/sync trả về tệp đã chuyển đổi trong cùng một phản hồi.Các tệp nhỏ, tập lệnh dòng lệnh, nguyên mẫu và các tự động hóa đơn giản phía máy chủ.
Luồng bất đồng bộ mạnh mẽPOST /convert, sau đó thăm dò GET /progress/{jobid}, rồi gọi GET /download/{jobid}.Các tệp video hoặc âm thanh dung lượng lớn, chuyển đổi hàng loạt, backend ứng dụng web và hệ thống sản xuất thân thiện với việc thử lại.

Ví dụ về luồng bất đồng bộ

# 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)

Phản hồi lỗi

Lỗi được trả về dưới dạng JSON với trường detail, sử dụng các mã trạng thái HTTP tiêu chuẩn.

Trạng tháiNguyên nhân thường gặp
400Thiếu tệp, thiếu target_format, định dạng ID công việc không được hỗ trợ hoặc dữ liệu đầu vào của yêu cầu không hợp lệ.
401Thiếu hoặc không hợp lệ X API Key.
403Khóa API không được phép sử dụng cặp chuyển đổi được yêu cầu.
404Công việc được yêu cầu hoặc tệp kết quả đã tạo không khả dụng.
409Việc chuyển đổi vẫn đang được xử lý khi có yêu cầu tải xuống.
429Khóa API không còn hạn mức sử dụng.
500Không thể chuẩn bị hoặc hoàn tất quá trình chuyển đổi do lỗi xử lý ở phía máy chủ.
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}