API для розробників

Один універсальний API для кожного робочого процесу з файлами

Converter App надає розробникам високопродуктивний інтерфейс для обробки файлів. Замініть окремі інструменти однією API для масштабованої конвертації документів, обробки медіафайлів, транскрипції та OCR.

Огляд API Converter App

API Converter App надає розробникам безшовний універсальний інтерфейс для всіх потреб обробки файлів. Замість інтеграції розрізненого набору окремих інструментів, ваша програма може викликати єдину високопродуктивну службу. Ви можете інтегрувати весь набір конвертерів безпосередньо у backend-процеси, щоб обробляти все — від стандартної зміни файлів до складних медіазавдань.

Публічна базова URL адреса: https://api.converter.app/. Шляхи в цьому документі використовують цей зовнішньо доступний корінь API.

Універсальне покриття

Отримайте доступ до повної бібліотеки інструментів конвертації через одну зручну інтеграцію.

Два режими обробки

Виберіть синхронні запити для миттєвих відповідей або асинхронні завдання для великих файлів і тривалих процесів.

Адаптовано під ваші потреби

Зв’яжіться з нами, і ми запропонуємо план, адаптований до ваших потреб, за неперевершеною ціною.

Документи Зображення Аудіо Відео Текст Архіви

Дізнайтеся про підтримувані конвертації (ключ не потрібен)

Використовуйте публічний кінцевий пункт pairs як найпростіший тест підключення. Він не потребує API ключа та повертає повний список підтримуваних пар конвертації, доступних на платформі.

ОТРИМАТИ /public/pairs

Цей endpoint відкритий, тому розробники можуть переглянути універсальний каталог конвертації перед запитом або налаштуванням ключа 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" }
  ]
}

Автентифікація та контроль доступу

Розробники проходять автентифікацію, передаючи свій API ключ у 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_formatрядокБажаний вихідний формат. Джерело й ціль утворюють пару конвертації, наприклад mp42mp3.
filesfile[]Один або кілька файлів для конвертації.

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. Отримання файлів

ОТРИМАТИ /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)

Відповіді з помилками

Помилки повертаються у форматі JSON з полем detail, із використанням стандартних HTTP кодів стану.

СтатусПоширена причина
400Відсутні файли, відсутній target_format, непідтримуваний формат ID завдання або недійсні вхідні дані запиту.
401Відсутній або недійсний X API Key.
403Ключу API не дозволено використовувати запитану пару форматів для конвертації.
404Запитуване завдання або згенерований файл результату недоступний.
409Перетворення ще обробляється, коли запитано завантаження.
429У API ключа не залишилося квоти.
500Перетворення не вдалося підготувати або завершити через помилку обробки на стороні сервера.
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}