API за разработчици

Едно универсално API за всеки файлов работен процес

Converter App предоставя на разработчиците високопроизводителен интерфейс за обработка на файлове. Заменете отделните инструменти с един API за мащабируемо конвертиране на документи, обработка на медия, транскрипция и OCR.

Преглед на API на Converter App

API на Converter App предоставя на разработчиците безпроблемен, универсален интерфейс за всички нужди от обработка на файлове. Вместо да интегрира разпокъсана колекция от отделни инструменти, Вашето приложение може да извиква една единствена високопроизводителна услуга. Можете да интегрирате цялата ни пакетна конверторна система директно в бекенд работни потоци, за да обработвате всичко — от стандартни промени на файлове до сложни медийни задачи.

Общата базова URL адреса е https://api.converter.app/. Пътищата в този документ използват този външно обслужван корен на API.

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

Получете достъп до пълна библиотека от инструменти за конвертиране чрез една оптимизирана интеграция.

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

Изберете синхронни заявки за незабавни отговори или асинхронни задачи за големи файлове и дълготрайни операции.

Съобразено с Вашите нужди

Свържете се с нас и можем да Ви предложим план, съобразен с Вашите нужди, на ненадмината цена.

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

Открийте поддържаните конвертирания (Не е необходим ключ)

Използвайте публичната крайна точка за двойки като най-лесния тест за свързаност. Тя не изисква API ключ и връща пълния списък от поддържаните двойки за конвертиране, налични в платформата.

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

Удостоверяване & контрол на достъпа

Разработчиците се удостоверяват, като предават своя 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.
filesфайл[]Един или повече качени изходни файла. 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.
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. Извличане на файлове

ВЗЕМИ /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, неподдържан формат на job ID или невалиден вход на заявката.
401Липсващ или невалиден X API Key.
403API ключът няма право да използва поисканата двойка за конвертиране.
404Заявената задача или генерираният резултатен файл не е наличен.
409Конвертирането все още се обработва, когато е заявено изтегляне.
429API ключът няма оставаща квота.
500Конвертирането не можа да бъде подготвено или завършено поради грешка при обработката от страна на сървъра.
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}