Referencia de la API

La API REST de ConvertFly te permite convertir, optimizar y transformar archivos mediante programación. Crea flujos de conversión con trabajos y tareas: importa un archivo, procésalo y exporta el resultado en una sola solicitud.

URL basehttps://convertfly.io/api/v1

Todos los endpoints son relativos a esta URL base. Las solicitudes y las respuestas usan JSON. Todas las marcas de tiempo están en UTC con formato ISO 8601.

Autenticación

Cada solicitud debe incluir una clave de API en el encabezado Authorization. Las claves llevan el prefijo cvfly_sk_ y puedes crearlas en tu panel.

Encabezado HTTP
Authorization: Bearer cvfly_sk_live_abc123def456...

Consejo de seguridad: nunca expongas las claves de API en el código del lado del cliente. Guárdalas en variables de entorno y haz las llamadas a la API desde tu servidor.

Permisos de las claves

Las claves de API pueden limitarse a algunas operaciones. Una clave creada sin lista de permisos recibe los permisos predeterminados.

PermisoAcceso
job:readLeer trabajos(predeterminado)
job:writeCrear, cancelar, reintentar y eliminar trabajos y sus tareas(predeterminado)
task:readLeer tareas(predeterminado)
convertEjecutar conversiones(predeterminado)
api-key:readListar claves de API
api-key:writeCrear y revocar claves de API
webhook:readListar webhooks
webhook:writeCrear y eliminar webhooks

Inicio rápido

Convierte un PDF a DOCX en tres pasos: crea un trabajo, espera a que termine y descarga el resultado.

1

Crea un trabajo de conversión

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "convert": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "docx"
      },
      "export": {
        "operation": "export/url",
        "input": ["convert"]
      }
    }
  }'
JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_live_abc123...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    tasks: {
      "import-file": {
        operation: "import/url",
        url: "https://example.com/report.pdf",
      },
      convert: {
        operation: "convert",
        input: ["import-file"],
        output_format: "docx",
      },
      export: {
        operation: "export/url",
        input: ["convert"],
      },
    },
  }),
});

const job = await res.json();
console.log(job.id);     // "cmxr9k2p0..."
console.log(job.status); // "processing"
Python
import requests

resp = requests.post(
    "https://convertfly.io/api/v1/jobs",
    headers={"Authorization": "Bearer cvfly_sk_live_abc123..."},
    json={
        "tasks": {
            "import-file": {
                "operation": "import/url",
                "url": "https://example.com/report.pdf",
            },
            "convert": {
                "operation": "convert",
                "input": ["import-file"],
                "output_format": "docx",
            },
            "export": {
                "operation": "export/url",
                "input": ["convert"],
            },
        }
    },
)
job = resp.json()
print(job["id"])      # "cmxr9k2p0..."
print(job["status"])  # "processing"
2

Espera a que termine

Consulta periódicamente el estado del trabajo o usa webhooks para recibir notificaciones en tiempo real.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_live_abc123..."
Respuesta
{
  "id": "cmxr9k2p0",
  "status": "finished",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    {
      "name": "export",
      "operation": "export/url",
      "status": "finished",
      "result": {
        "files": [
          { "url": "https://files.convertfly.io/d/cmv.../result.docx?e=...&s=..." }
        ]
      }
    }
  ]
}
3

Descarga el resultado

Usa la URL del resultado de la tarea de exportación. Los enlaces de descarga son válidos durante 1 hora; los archivos se eliminan 24 horas después de subirlos.

curl
curl -o result.docx "https://files.convertfly.io/d/..."

Trabajos

Un trabajo (Job) es un contenedor de una o varias tareas (Tasks) que forman un flujo de conversión. Las tareas de un trabajo se ejecutan según el orden de sus dependencias: cada tarea puede hacer referencia al resultado de una tarea anterior mediante el campo input.

Concepto de flujo

Un flujo típico tiene este aspecto: import/url -> convert -> export/url. También puedes encadenar varias operaciones: import -> convert -> optimize -> watermark -> export.

Estados de un trabajo

EstadoDescripción
waitingTrabajo creado, en cola para su procesamiento
processingAl menos una tarea se está ejecutando
finishedTodas las tareas se completaron correctamente
errorUna o varias tareas fallaron

Crear un trabajo

POST/api/v1/jobs
tagstring

Etiqueta opcional para organizar los trabajos (p. ej., batch-2026-04).

tasksobjectobligatorio

Un mapa de nombres de tareas con sus definiciones. Los nombres de las tareas deben ser únicos dentro del trabajo.

webhook_urlstring

URL que recibirá un evento job.finished o job.failed cuando termine el trabajo.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "invoice-batch",
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/invoice.pdf"
      },
      "to-png": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "png",
        "options": { "density": 300 }
      },
      "export": {
        "operation": "export/url",
        "input": ["to-png"]
      }
    }
  }'
Respuesta (201 Created)
{
  "id": "cmxr9k2p0",
  "tag": "invoice-batch",
  "status": "processing",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    { "name": "import-file", "operation": "import/url", "status": "finished" },
    { "name": "to-png",      "operation": "convert",    "status": "processing" },
    { "name": "export",      "operation": "export/url", "status": "waiting" }
  ]
}

Ejemplo: combinar archivos en un solo PDF

La operación merge combina dos o más entradas (PDF o imágenes) en un único PDF. Enumera en orden los nombres de las tareas de entrada en el array input.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "cover": {
        "operation": "import/url",
        "url": "https://example.com/cover.png"
      },
      "report": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "merge-all": {
        "operation": "merge",
        "input": ["cover", "report"]
      },
      "export": {
        "operation": "export/url",
        "input": ["merge-all"]
      }
    }
  }'

Ejemplo: capturar un sitio web

La operación capture-website no necesita ninguna tarea de entrada: convierte la página de una URL pública en PDF, PNG o JPG.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "capture": {
        "operation": "capture-website",
        "url": "https://example.com",
        "output_format": "pdf",
        "width": 1280
      },
      "export": {
        "operation": "export/url",
        "input": ["capture"]
      }
    }
  }'

Obtener un trabajo

GET/api/v1/jobs/:id

Obtén los detalles de un trabajo y el estado de todas sus tareas.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Listar trabajos

GET/api/v1/jobs
pageinteger

Número de página, a partir de 1. Valor predeterminado: 1.

limitinteger

Resultados por página, de 1 a 100. Valor predeterminado: 20.

statusstring

Filtrar por estado: WAITING, PROCESSING, FINISHED, ERROR.

tagstring

Filtrar por etiqueta.

curl
curl "https://convertfly.io/api/v1/jobs?status=finished&per_page=5" \
  -H "Authorization: Bearer cvfly_sk_..."
Respuesta
{
  "data": [ ... ],
  "links": { "first": "?page=1&per_page=5", "last": "?page=9&per_page=5", "prev": null, "next": "?page=2&per_page=5" },
  "meta": {
    "page": 1,
    "per_page": 5,
    "total": 42
  }
}

Eliminar un trabajo

DELETE/api/v1/jobs/:id

Elimina un trabajo y todos sus archivos asociados. Las tareas en ejecución se cancelarán. Esta acción es irreversible.

curl
curl -X DELETE https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Esperar a que termine

GET/api/v1/jobs/:id/wait

Endpoint de long polling que se bloquea hasta que el trabajo alcanza un estado final (FINISHED o ERROR). Agota el tiempo de espera a los 300 segundos y devuelve 202 Accepted si el trabajo sigue en proceso.

curl
curl "https://convertfly.io/api/v1/jobs/job_7kX9mP2qR/wait?timeout=120" \
  -H "Authorization: Bearer cvfly_sk_..."

Tareas

Las tareas son los pasos individuales de un trabajo. Cada tarea tiene un nombre (la clave en el objeto tasks), una operation y, opcionalmente, un array input que hace referencia a nombres de tareas anteriores.

Campos de una tarea

CampoTipoDescripción
operationstringLa operación que se va a realizar (consulta Operaciones)
inputstring[]Nombres de las tareas cuyo resultado se usa como entrada
output_formatstringFormato de destino de las operaciones de conversión
optionsobjectAjustes propios de la operación (calidad, densidad, etc.)

Listar las tareas de un trabajo

GET/api/v1/jobs/:id/tasks
Respuesta
{
  "data": [
    {
      "name": "import-file",
      "operation": "import/url",
      "status": "finished",
      "result": { "file_id": "file_Xk9m..." }
    },
    {
      "name": "convert",
      "operation": "convert",
      "status": "finished",
      "result": { "file_id": "file_Pm3n..." }
    }
  ]
}

Obtener una tarea

GET/api/v1/jobs/:job_id/tasks/:task_name

Cancelar una tarea

POST/api/v1/jobs/:job_id/tasks/:task_name/cancel

Cancela una tarea en ejecución o en espera. Las tareas posteriores que dependen de ella también se cancelarán.

Reintentar una tarea fallida

POST/api/v1/jobs/:job_id/tasks/:task_name/retry

Reintenta una tarea con el estado ERROR. Si la tarea es facturable, vuelve a consumir créditos.

Subida de archivos

Hay tres formas de enviar archivos a ConvertFly. Elige la que mejor se adapte a tu caso.

Importar desde una URL

El método más sencillo. ConvertFly descarga el archivo desde una URL de acceso público.

Definición de la tarea
{
  "import-file": {
    "operation": "import/url",
    "url": "https://example.com/document.pdf",
    "filename": "document.pdf",
    "headers": {
      "Authorization": "Bearer your-external-token"
    }
  }
}

Subida directa (URL prefirmada)

Para archivos que están en tu equipo. Es un proceso en dos pasos: primero crea la tarea para obtener una URL de subida prefirmada y luego envía tu archivo con PUT a esa URL.

Paso 1: crear un trabajo con import/upload
{
  "upload-file": {
    "operation": "import/upload",
    "filename": "photo.jpg"
  }
}
Paso 2: subir a la URL prefirmada
# The task result will contain the presigned URL
curl -X PUT "https://files.convertfly.io/convertfly-files/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

Importar desde Base64

Para archivos pequeños (menos de 10 MB). Inserta el contenido del archivo directamente en la solicitud.

Definición de la tarea
{
  "import-file": {
    "operation": "import/base64",
    "file": "JVBERi0xLjQKJcOkw7zD...",
    "filename": "document.pdf"
  }
}
MétodoTamaño máx.Ideal para
import/url5 GBArchivos ya alojados en línea
import/upload5 GBArchivos locales, archivos grandes
import/base6410 MBArchivos pequeños, insertados en la solicitud

Opciones de conversión

Cada operación admite opciones específicas. Aquí tienes todas las operaciones disponibles y los pares de formatos de las conversiones.

Operaciones disponibles

OperaciónDescripciónCréditos
import/uploadSubir un archivo mediante una URL prefirmada0
import/urlImportar un archivo desde una URL0
import/base64Importar un archivo a partir de datos en base640
convertConvertir entre formatos1-4
optimizeComprimir/optimizar un archivo1
thumbnailGenerar una miniatura de vista previa1
mergeCombinar varios PDF o imágenes en un único PDF1
watermarkAñadir una marca de agua de texto o imagen a imágenes, videos o PDF1
splitExtrae páginas de un PDF o divídelo en un PDF por página (ZIP)1
rotateRota las páginas de un PDF 90, 180 o 270 grados1
resizeRedimensiona una imagen por ancho, alto o porcentaje, manteniendo las proporciones1
gifConvierte un fragmento de video en un GIF animado (inicio, duración, fps, ancho)2
ocrReconocer texto en PDF o imágenes (14 idiomas, los mismos que la página de OCR)3
capture-websiteCapturar un sitio web público en PDF, PNG o JPG1
metadataExtraer los metadatos de un archivo1
export/urlObtener una URL de descarga firmada0
export/s3Exportar directamente a tu bucket de S30

Pares de formatos compatibles

Conversiones habituales. El formato se detecta automáticamente a partir del archivo, pero también puedes definir input_format de forma explícita.

CategoríaFormatos de entradaFormatos de salida
Documentospdf, docx, doc, odt, rtf, txt, htmlpdf, docx, odt, rtf, txt, html
Hojas de cálculoxlsx, xls, ods, csvxlsx, ods, csv, pdf
Presentacionespptx, ppt, odppptx, odp, pdf
Imágenesjpg, png, gif, bmp, tiff, webp, svg, heicjpg, png, gif, bmp, tiff, webp
Videomp4, avi, mov, mkv, webmmp4, avi, mov, mkv, webm, gif
Audiomp3, wav, ogg, flac, aac, m4amp3, wav, ogg, flac, aac

Opciones de calidad y procesamiento

Pásalas en el objeto options de una tarea de conversión.

qualityinteger

Calidad de salida para formatos con pérdida (1-100). Valor predeterminado: 85.

densityinteger

PPP para la conversión de documento a imagen. Valor predeterminado: 150.

widthinteger

Redimensionar a este ancho en píxeles. Mantiene la relación de aspecto si se omite height.

heightinteger

Redimensionar a este alto en píxeles. Mantiene la relación de aspecto si se omite width.

pagesstring

Intervalo de páginas para las operaciones con documentos. P. ej., 1-5, 1,3,5, all.

Ejemplo: PNG de alta calidad a 300 PPP
{
  "convert-hq": {
    "operation": "convert",
    "input": ["import-file"],
    "output_format": "png",
    "options": {
      "density": 300,
      "quality": 95
    }
  }
}

Webhooks

Registra URL de webhook para recibir notificaciones en tiempo real cuando cambie el estado de los trabajos o las tareas. Todas las cargas útiles se firman con HMAC-SHA256 para que puedas verificar que proceden de ConvertFly.

Crear un webhook

POST/api/v1/webhooks
urlstringobligatorio

La URL HTTPS que recibirá los eventos del webhook.

eventsstring[]obligatorio

Tipos de eventos a los que suscribirse.

curl
curl -X POST https://convertfly.io/api/v1/webhooks \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"]
  }'
Respuesta (201 Created)
{
  "data": {
    "id": "wh_Abc123...",
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"],
    "signing_secret": "whsec_9f8e7d6c5b4a...",
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Listar webhooks

GET/api/v1/webhooks

Eliminar un webhook

DELETE/api/v1/webhooks/:id

Tipos de eventos

EventoDesencadenante
job.finishedTodas las tareas del trabajo se completaron correctamente
job.failedUna o varias tareas fallaron; el trabajo está en estado ERROR
task.finishedUna tarea individual se completó
task.failedUna tarea individual falló

Carga útil del webhook

POST a la URL de tu webhook
{
  "event": "job.finished",
  "timestamp": "2026-04-03T10:31:15Z",
  "data": {
    "id": "job_7kX9mP2qR",
    "status": "finished",
    "tasks": { ... }
  }
}

Verificación de firmas

Cada solicitud de webhook incluye dos encabezados: X-Webhook-Signature y X-Webhook-Timestamp. Verifícalos para asegurarte de que la carga útil la envió ConvertFly y de que no se ha alterado.

Node.js
import crypto from "crypto";

function verifyWebhook(rawBody, signature, timestamp, secret) {
  const signedContent = timestamp + "." + rawBody;
  const expected = "v1=" + crypto
    .createHmac("sha256", secret)
    .update(signedContent)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Python
import hmac, hashlib

def verify_webhook(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    signed_content = f"{timestamp}.{raw_body.decode()}"
    expected = "v1=" + hmac.new(
        secret.encode(), signed_content.encode(), hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Claves de API

Gestiona las claves de API mediante programación. También puedes gestionarlas desde el panel.

Crear una clave de API

POST/api/v1/api-keys
namestringobligatorio

Un nombre descriptivo para la clave.

scopesstring[]

Permisos que se conceden. Valor predeterminado: ["*"] (acceso completo).

Respuesta (201 Created)
{
  "data": {
    "id": "key_Xk9m...",
    "name": "production-server",
    "key": "cvfly_sk_live_abc123def456...",
    "scopes": ["*"],
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Importante: la clave de API completa solo se muestra una vez, en el momento de su creación. Guárdala de forma segura: no podrás recuperarla después.

Listar claves de API

GET/api/v1/api-keys

Revocar una clave de API

DELETE/api/v1/api-keys/:id

Invalida la clave de inmediato. Cualquier solicitud que la use devolverá 401.

Límite de solicitudes

Las solicitudes a la API tienen un límite por clave de API para garantizar un uso equitativo. Cuando superas el límite, las solicitudes devuelven 429 Too Many Requests.

Límite predeterminado

Cada clave de API permite 100 solicitudes por hora. El límite y la ventana actuales de una clave se devuelven como rate_limit y rate_limit_window (en segundos) al listar tus claves. Contacta con nosotros si tu integración necesita un límite mayor.

Encabezados de respuesta

Cada respuesta a una solicitud hecha con una clave de API incluye estos encabezados:

X-RateLimit-Limitencabezado

Número máximo de solicitudes permitidas en la ventana actual.

X-RateLimit-Remainingencabezado

Solicitudes restantes en la ventana actual.

X-RateLimit-Resetencabezado

Marca de tiempo Unix en la que se reinicia la ventana.

Retry-Afterencabezado

Segundos que hay que esperar antes de reintentar (solo en respuestas 429).

Ejemplo de respuesta 429
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743681600
Retry-After: 3600

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. 100 requests per 3600s allowed."
}

Errores

ConvertFly usa los códigos de estado HTTP convencionales. Todas las respuestas de error siguen un formato uniforme con un code legible por máquina y un message legible por personas.

Formato de las respuestas de error

JSON
{
  "code": "INVALID_DATA",
  "message": "Missing required field: output_format",
  "details": {
    "field": "output_format",
    "reason": "required"
  }
}

Códigos de error

CódigoHTTPDescripción
INVALID_DATA400Cuerpo de la solicitud o parámetros no válidos
UNAUTHENTICATED401Clave de API ausente o no válida
FORBIDDEN403La clave de API no tiene el permiso necesario para esta operación
NOT_FOUND404El recurso no existe o se ha eliminado
CONFLICT409El recurso ya existe o la operación entra en conflicto con el estado actual
PAYLOAD_TOO_LARGE413El cuerpo de la solicitud supera el tamaño máximo permitido
UNSUPPORTED_FORMAT422La conversión solicitada no es compatible
RATE_LIMIT_EXCEEDED429Límite de solicitudes superado: consulta Límite de solicitudes
INSUFFICIENT_CREDITS402No hay créditos suficientes para completar la operación
SERVER_ERROR500Error interno del servidor: reintenta o contacta con soporte
UNAVAILABLE503Servicio no disponible temporalmente: vuelve a intentarlo en unos instantes

Gestión de errores

JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ tasks: { /* ... */ } }),
});

if (!res.ok) {
  const error = await res.json();
  console.error(`[${error.code}] ${error.message}`);
  // "[INVALID_DATA] Missing required field: output_format"
  return;
}

const { data: job } = await res.json();

Créditos

Cada operación cuesta un número determinado de créditos. Las operaciones de importación y exportación son gratuitas. Tu saldo restante se incluye en cada respuesta de la API mediante el encabezado X-Credits-Remaining.

Costo en créditos por tipo de conversión

OperaciónCostoEjemplos
Importación / exportaciónGratisimport/url, import/upload, export/url, export/s3
Conversión de imágenes1 créditojpg a png, webp a gif, heic a jpg
Conversión de audio1 créditomp3 a wav, flac a aac
Documento a PDF1 créditotxt a pdf, html a pdf, md a pdf
Office a PDF2 créditosdocx a pdf, pptx a pdf, xlsx a pdf
Conversión de video2 créditosmp4 a webm, mov a mp4
PDF a Office4 créditospdf a docx, pdf a pptx
Optimizar1 créditoComprimir imágenes y PDF
Miniatura1 créditoGenerar una imagen de vista previa
Combinar1 créditoCombinar varios PDF
Marca de agua1 créditoAñadir una superposición de texto o imagen
Dividir PDF1 créditoExtraer las páginas 1-3, 7 o un archivo por página
Rotar PDF1 créditoGirar todas las páginas o una selección
Redimensionar imagen1 crédito1200 px de ancho, 50 por ciento
Crear GIF2 créditosFragmento mp4 a gif, mismo precio que una conversión de video
Capturar sitio web1 créditoConvertir la página de una URL en PDF o imagen
OCR3 créditosHacer que un PDF escaneado permita búsquedas
Metadatos1 créditoExtraer información del archivo

Consultar tu saldo

Cada respuesta de la API incluye el encabezado X-Credits-Remaining con tu saldo actual.

Encabezados de respuesta
HTTP/1.1 201 Created
Content-Type: application/json
X-Credits-Remaining: 9847
X-Credits-Used: 2

Cuando tu saldo es insuficiente para completar un trabajo, la API devuelve 402 con el código de error INSUFFICIENT_CREDITS. Recarga créditos en tu panel de facturación.

Entorno de pruebas

Las claves de entorno de pruebas te permiten crear y probar una integración de principio a fin sin gastar créditos. Crea una clave con "sandbox": true; lleva el prefijo cf_test_ en lugar de cvfly_sk_. Todo funciona igual que en producción, con tres diferencias.

CréditosNunca se cobran. Tu saldo no se modifica.
Tamaño de archivoLas entradas tienen un límite de 5 MB.
ResultadoLas imágenes, los videos y los PDF llevan una marca de agua "ConvertFly SANDBOX".
Crear una clave de entorno de pruebas
curl -X POST https://convertfly.io/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sandbox", "sandbox": true}'

# Response includes: "key": "cf_test_...", "is_sandbox": true

¿Listo para empezar a desarrollar?

Crea tu cuenta gratuita y prueba la API con una clave de entorno de pruebas, sin costo alguno.

Tus datos

Sin publicidad ni redes publicitarias, así que no hay nada que rechazar. Esto es lo que usamos.

Tus archivos

Se guardan cifrados y se eliminan 24 horas después de subirlos.

Cookies esenciales

Siempre activas
Para qué sirveNombreDuración
Recordar tu idiomaNEXT_LOCALEHasta cerrar el navegador
Contar tu cuota gratuitacf_free1 año
Mantener tu sesiónauthjs.*30 días, si tienes una cuenta

Plausible, alojado por Dizzus, sin cookies. Vemos totales, no personas.

Proveedores: Stripe para los pagos, Cloudflare para el DNS y la protección contra bots. Política de privacidad