Toolorah API
Ejecuta nuestras herramientas mediante HTTPS: un endpoint coherente por herramienta, con entrada y salida JSON. Disponible en Pro (1.000 llamadas/día) y Elite (10.000 llamadas/día).
Inicio rápido
Cada herramienta utiliza el endpoint indicado abajo. Envía tu clave de API como token bearer y un cuerpo JSON con input y options. Esta es la misma llamada en tres lenguajes: POST /api/v1/<tool> { input, options }
curl -X POST https://toolorah.com/api/v1/base64 \
-H "Authorization: Bearer nt_live_xxx" \
-H "Content-Type: application/json" \
-d '{"input":"hello world","options":{"mode":"encode"}}' const res = await fetch("https://toolorah.com/api/v1/base64", {
method: "POST",
headers: {
"Authorization": "Bearer nt_live_xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ input: "hello world", options: { mode: "encode" } }),
});
const data = await res.json();
console.log(data.result); // "aGVsbG8gd29ybGQ=" import requests
res = requests.post(
"https://toolorah.com/api/v1/base64",
headers={"Authorization": "Bearer nt_live_xxx"},
json={"input": "hello world", "options": {"mode": "encode"}},
)
print(res.json()["result"]) # aGVsbG8gd29ybGQ= Autenticación
Crea una clave en la página de claves de API y envíala como token bearer en cada solicitud: Obtener clave de API
Authorization: Bearer nt_live_xxxxxxxxxxxxxxxx Las claves tienen los permisos del plan con el que fueron creadas. Trátalas como contraseñas: guárdalas en el servidor y revoca desde la página de claves cualquier clave expuesta.
Solicitudes y respuestas
Todos los endpoints usan POST y aceptan un cuerpo JSON con dos campos:
input— el texto (o archivo base64 para herramientas PDF) que se procesará.options— un objeto de configuración específico de la herramienta. Es opcional y se aplican valores predeterminados razonables.
Una llamada correcta devuelve 200 con esta estructura:
{
"tool": "base64",
"result": "aGVsbG8gd29ybGQ=",
"meta": { }
} Los errores devuelven un estado distinto de 2xx con un único campo error:
{ "error": "Invalid or revoked API key." } Límites de uso
- Pro — 1.000 llamadas/día
- Elite — 10.000 llamadas/día
Los límites se reinician a las 00:00 UTC. Cada respuesta incluye el saldo actual:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 942 Al superar el límite, las llamadas devuelven 429 con una cabecera Retry-After. Las solicitudes mal formadas no consumen cuota.
Endpoints
Herramientas de texto y utilidades. Usa las options indicadas para controlar el comportamiento.
| Herramienta | Endpoint | Opciones |
|---|---|---|
base64 | POST /api/v1/base64 | { "mode": "encode" } mode: encode | decode |
url-encoder | POST /api/v1/url-encoder | { "mode": "encode" } mode: encode | decode |
json-formatter | POST /api/v1/json-formatter | { "mode": "format", "indent": 2 } mode: format | minify | validate |
jwt-decoder | POST /api/v1/jwt-decoder | Decodifica la cabecera y el payload (sin verificar la firma). |
hash-generator | POST /api/v1/hash-generator | { "algo": "SHA-256" } algo: SHA-1 | SHA-256 | SHA-512 |
regex-tester | POST /api/v1/regex-tester | { "pattern": "\\d+", "flags": "g", "mode": "match" } mode: match | replace (+ replaceWith) |
word-counter | POST /api/v1/word-counter | Devuelve recuentos de palabras, caracteres y frases. |
case-converter | POST /api/v1/case-converter | { "type": "title" } type: upper, lower, title, sentence, camel, pascal, snake, kebab, constant |
text-cleaner | POST /api/v1/text-cleaner | { "trim": true, "collapseSpaces": true } Limpia espacios y caracteres especiales. |
remove-duplicate-lines | POST /api/v1/remove-duplicate-lines | { "caseSensitive": false } Elimina líneas duplicadas. |
text-sorter | POST /api/v1/text-sorter | { "order": "asc", "numeric": false } Ordena líneas. |
text-reverser | POST /api/v1/text-reverser | { "mode": "characters" } mode: characters | words | lines |
markdown-formatter | POST /api/v1/markdown-formatter | Convierte Markdown a HTML. |
lorem-ipsum | POST /api/v1/lorem-ipsum | { "count": 3, "unit": "paragraphs" } unit: paragraphs | sentences | words (no necesita input) |
password-generator | POST /api/v1/password-generator | { "length": 16, "symbols": true } No necesita input. |
random-number | POST /api/v1/random-number | { "min": 1, "max": 100, "count": 5 } No necesita input. |
percentage-calculator | POST /api/v1/percentage-calculator | { "operation": "percentOf", "a": 20, "b": 150 } operation: percentOf | isWhatPercentOf | percentChange |
uuid-generator | POST /api/v1/uuid-generator | { "count": 5, "upper": false, "noHyphens": false, "braces": false } Genera UUID v4 (no necesita input). |
timestamp-converter | POST /api/v1/timestamp-converter | Acepta un timestamp Unix en segundos o milisegundos y devuelve valores ISO, UTC, local y epoch. |
css-minifier | POST /api/v1/css-minifier | Minifica CSS eliminando comentarios y espacios. |
html-formatter | POST /api/v1/html-formatter | { "mode": "beautify", "indent": 2 } mode: beautify | minify (indent: number | "tab") |
markdown-preview | POST /api/v1/markdown-preview | Convierte Markdown a HTML. |
Endpoints de PDF
Las herramientas PDF trabajan con archivos. Las solicitudes llevan archivos codificados en base64 dentro del JSON y result contiene el PDF de salida en base64. Mantén la carga decodificada por debajo de unos 4 MB. WebP solo funciona en el navegador; envía PNG o JPG.
| Herramienta | Endpoint | Cuerpo |
|---|---|---|
pdf-merger | POST /api/v1/pdf-merger | { "files": ["<base64>", "<base64>", …] } Entre 2 y 20 PDF, combinados en el orden del array. |
pdf-splitter | POST /api/v1/pdf-splitter | { "file": "<base64>", "options": { "mode": "extract", "pages": "1-3, 5" } } mode: extract | remove. Los intervalos funcionan como en la herramienta web. |
png-to-pdf | POST /api/v1/png-to-pdf | { "images": ["<base64>", …], "options": { "pageSize": "a4", "orientation": "auto", "margin": "small" } } Entre 1 y 50 imágenes PNG/JPG, una por página. pageSize: a4 | letter | fit; margin: none | small | large. |
# Merge two PDFs (bash)
curl -X POST https://toolorah.com/api/v1/pdf-merger \
-H "Authorization: Bearer nt_live_xxx" \
-H "Content-Type: application/json" \
-d "{\"files\":[\"$(base64 -w0 a.pdf)\",\"$(base64 -w0 b.pdf)\"]}" \
| jq -r '.result' | base64 -d > merged.pdf Errores
401— clave de API ausente o no válida403— tu plan no incluye acceso a la API404— herramienta desconocida422— entrada incorrecta (por ejemplo, JSON o regex no válidos)429— límite diario alcanzado