API para desarrolladores

Una única API universal para cada flujo de trabajo con archivos

Converter App ofrece a los desarrolladores una interfaz de procesamiento de archivos de alto rendimiento. Sustituya herramientas separadas por una sola API para la conversión escalable de documentos, el procesamiento de medios, la transcripción y el OCR.

Resumen de la API de Converter App

La API de Converter App ofrece a los desarrolladores una interfaz universal y sin fricciones para todas las necesidades de procesamiento de archivos. En lugar de integrar una colección fragmentada de herramientas separadas, su aplicación puede llamar a un único servicio de alto rendimiento. Puede integrar nuestra suite completa de conversión directamente en flujos de trabajo de backend para gestionar desde cambios estándar de archivos hasta tareas multimedia exigentes.

La URL base pública es https://api.converter.app/. Las rutas de este documento utilizan esta raíz de API servida externamente.

Cobertura universal

Acceda a una completa biblioteca de herramientas de conversión a través de una única integración simplificada.

Dos modos de procesamiento

Elija solicitudes síncronas para respuestas inmediatas o trabajos asíncronos para archivos grandes y tareas de larga duración.

Adaptado a sus necesidades

Póngase en contacto con nosotros y podremos ofrecerle un plan adaptado a sus necesidades a un precio imbatible.

Documentos Imágenes Audio Vídeo Texto Archivos comprimidos

Descubra las conversiones compatibles (no se necesita clave)

Utilice el endpoint público de pares como la prueba de conectividad más sencilla. No requiere una clave de API y devuelve la lista completa de pares de conversión admitidos disponibles en la plataforma.

OBTENER /public/pairs

Este endpoint está abierto para que los desarrolladores puedan inspeccionar el catálogo universal de conversiones antes de solicitar o configurar una clave de 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'])

Ejemplo de respuesta

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

Autenticación y control de acceso

Los desarrolladores se autentican enviando su clave de API en el encabezado HTTP X API Key. El endpoint público /public/pairs es el único endpoint de esta página que no requiere una clave.

ControlCómo funcionaImpacto para desarrolladores
X-API-KeyEnvíe la clave como un encabezado de solicitud HTTP.Requerido para /pairs, /convert/sync, /convert, /progress/{jobid} y /download/{jobid}.
Cuotas de usoCada clave tiene una cuota numérica de conversión. La cuota disminuye cuando se crean tareas de conversión.Una cuota de -1 concede conversiones ilimitadas. Otros valores representan las conversiones permitidas restantes.
Pares permitidosLas claves pueden restringirse a tipos de conversión específicos, como mp42mp3, o concederse acceso a all las combinaciones compatibles./pairs devuelve únicamente los pares que su clave está autorizada a usar, y las solicitudes de conversión fuera de esa lista se rechazan.
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. Conversión síncrona

POST /convert/sync

Use la conversión síncrona cuando desee un resultado inmediato en la misma respuesta HTTP. La solicitud permanece abierta mientras la API inicia el trabajo de conversión y espera a que se complete, hasta 30 minutos.

Campo de formularioTipoDescripción
target_formatcadenaLa extensión de salida solicitada, como pdf, docx, mp3 o jpg.
filesarchivo[]Uno o varios archivos de origen subidos. La API determina el formato de origen a partir del nombre del archivo subido.
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)

La respuesta transmite directamente el archivo convertido. Si la conversión genera varios archivos, la API devuelve un archivo .zip.

3. Conversión asíncrona

POST /convert

Use la conversión asíncrona para archivos grandes, procesamiento por lotes, tareas de audio o vídeo de larga duración o aplicaciones de producción que no deben mantener abiertas las solicitudes de carga mientras el trabajo está en ejecución.

Campo de formularioTipoDescripción
target_formatcadenaEl formato de salida deseado. El origen y el destino forman el par de conversión, por ejemplo mp42mp3.
filesfile[]Uno o varios archivos para convertir.

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

Respuesta correcta

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

4. Seguimiento del estado

OBTENER /progress/{jobid}

Consulte este endpoint después de crear un trabajo asíncrono. Devuelve el estado del trabajo, un valor numérico de progreso de 0.0 a 1.0 y detalles del error si la conversión falló.

EncabezadoDescripción
X-API-KeySu clave de API de desarrollador.
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
}

Los posibles estados son processing, completed y failed. El progreso es un número entre 0.0 y 1.0.

5. Recuperación de archivos

OBTENER /download/{jobid}

Una vez que un trabajo asíncrono alcance completed, recupere la salida convertida con la misma clave de API utilizada para crear el trabajo.

Tipo de resultadoComportamiento
Archivo de salida únicoLa API transmite el archivo convertido directamente.
archivo_resultante manifiestoSi el trabajo proporciona un manifiesto de resultados, la API devuelve el archivo especificado por ese manifiesto.
Varios archivos de salidaLa API empaqueta los archivos generados en un archivo .zip sobre la marcha.
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)

Resumen del flujo de trabajo del desarrollador

La API admite dos patrones de integración, por lo que los desarrolladores pueden elegir el comportamiento adecuado para cada caso de uso.

FlujoPatrón de solicitudIdeal para
Flujo de sincronización rápidaPOST /convert/sync devuelve el archivo convertido en la misma respuesta.Archivos pequeños, scripts de línea de comandos, prototipos y automatizaciones sencillas del lado del servidor.
Flujo asíncrono robustoPOST /convert, luego consulte GET /progress/{jobid} y, a continuación, llame a GET /download/{jobid}.Archivos de vídeo o audio grandes, conversión por lotes, backends de aplicaciones web y sistemas de producción compatibles con reintentos.

Ejemplo de flujo asíncrono

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

Respuestas de error

Los errores se devuelven como JSON con un campo detail, utilizando códigos de estado HTTP estándar.

EstadoCausa común
400Archivos faltantes, falta target_format, formato de ID de tarea no compatible o entrada de solicitud no válida.
401Falta X API Key o no es válido.
403La clave de API no tiene अनुमति para usar el par de conversión solicitado.
404El trabajo solicitado o el archivo de resultado generado no está disponible.
409La conversión sigue en proceso cuando se solicita una descarga.
429La clave de API no tiene cuota restante.
500La conversión no pudo prepararse ni completarse debido a un error de procesamiento del lado del servidor.
{
  "detail": "This API key is not authorized for mp42mp3 conversions."
}