Toolorah API
El acceso a la API no está disponible para nuevas suscripciones.
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://www.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://www.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://www.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.
Solicitudes por lotes
Procesa muchas entradas en una sola solicitud en lugar de hacer una llamada HTTP por elemento. Envía inputs como un array de cadenas; options se aplica a todos los elementos. Disponible en Pro (25 entradas por solicitud) y Elite (250).
curl -X POST https://www.toolorah.com/api/v1/base64/batch -H "Authorization: Bearer nt_live_..." -H "Content-Type: application/json" -d '{"inputs":["hello","world"],"options":{"mode":"encode"}}' {
"tool": "base64",
"count": 2,
"succeeded": 2,
"failed": 0,
"results": [
{ "index": 0, "result": "aGVsbG8=" },
{ "index": 1, "result": "d29ybGQ=" }
]
} Cada entrada consume una llamada de tu cuota diaria: los lotes ahorran viajes de ida y vuelta, no cuota. Un lote que superaría tu límite diario se rechaza por completo y no se procesa nada, así que nunca recibes un conjunto de resultados a medias.
Los resultados se devuelven en el mismo orden que las entradas, cada uno con su index. Una entrada errónea no descarta el resto: devuelve un campo error para ese índice mientras los demás resultados se completan. Consulta succeeded y failed en la respuesta.
| Plan | Entradas por solicitud |
|---|---|
| Free | — |
| Pro | 25 |
| Elite | 250 |
Endpoints de utilidad
Dos endpoints GET para descubrir qué puedes llamar y cuánta cuota te queda. Ambos requieren la misma clave bearer.
| Endpoint | Cuerpo |
|---|---|
GET /api/v1/tools | Lista todas las herramientas disponibles con su endpoint, si aceptan texto o archivo, y el límite de lotes de tu plan. Úsalo en lugar de codificar una lista que quedará obsoleta cuando añadamos herramientas. |
GET /api/v1/usage | Devuelve tu plan, el uso de hoy y las llamadas restantes, tu límite de lotes y cuándo se reinicia la cuota. NO cuenta para tu cuota, así que puedes consultarlo con seguridad. |
{
"plan": "pro",
"daily": { "limit": 1000, "used": 42, "remaining": 958 },
"batch": { "maxInputsPerRequest": 25 },
"resetsAt": "2026-08-24T00:00:00.000Z"
} 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 |
bmi-calculator | POST /api/v1/bmi-calculator | { "weight": 70, "height": 175 } |
emi-calculator | POST /api/v1/emi-calculator | { "principal": 300000, "rate": 6.5, "months": 360 } |
sip-calculator | POST /api/v1/sip-calculator | { "amount": 10000, "rate": 12, "years": 10, "mode": "sip", "stepUp": 0 } |
gst-calculator | POST /api/v1/gst-calculator | { "amount": 1000, "rate": 18, "mode": "add", "supply": "intra" } |
income-tax-calculator | POST /api/v1/income-tax-calculator | { "income": 1500000, "regime": "new", "age": "below60", "deductions": 0 } |
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://www.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