Toolorah API
Exécutez nos outils via HTTPS : un endpoint cohérent par outil, avec entrée et sortie JSON. Disponible avec Pro (1 000 appels/jour) et Elite (10 000 appels/jour).
Démarrage rapide
Chaque outil utilise l’endpoint indiqué ci-dessous. Envoyez votre clé API comme jeton bearer et un corps JSON contenant input et options. Voici le même appel dans trois langages : 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= Authentification
Créez une clé sur la page des clés API, puis envoyez-la comme jeton bearer avec chaque requête : Obtenir une clé API
Authorization: Bearer nt_live_xxxxxxxxxxxxxxxx Les clés disposent des autorisations du forfait avec lequel elles ont été créées. Traitez-les comme des mots de passe : conservez-les côté serveur et révoquez toute clé exposée depuis la page des clés.
Requêtes et réponses
Tous les endpoints utilisent POST et acceptent un corps JSON avec deux champs :
input— le texte (ou le fichier base64 pour les outils PDF) à traiter.options— un objet de paramètres propre à l’outil. Facultatif ; des valeurs par défaut adaptées sont utilisées.
Un appel réussi renvoie 200 avec cette structure :
{
"tool": "base64",
"result": "aGVsbG8gd29ybGQ=",
"meta": { }
} Les erreurs renvoient un statut autre que 2xx avec un seul champ error :
{ "error": "Invalid or revoked API key." } Limites de débit
- Pro — 1 000 appels/jour
- Elite — 10 000 appels/jour
Les limites sont réinitialisées à 00:00 UTC. Chaque réponse indique votre budget actuel :
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 942 Une fois la limite dépassée, les appels renvoient 429 avec un en-tête Retry-After. Les requêtes mal formées ne sont pas décomptées.
Endpoints
Outils de texte et utilitaires. Utilisez les options indiquées pour contrôler leur comportement.
| Outil | Endpoint | Options |
|---|---|---|
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 | Décode l’en-tête et le payload (sans vérifier la signature). |
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 | Renvoie le nombre de mots, caractères et phrases. |
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 } Nettoie les espaces et caractères spéciaux. |
remove-duplicate-lines | POST /api/v1/remove-duplicate-lines | { "caseSensitive": false } Supprime les lignes en double. |
text-sorter | POST /api/v1/text-sorter | { "order": "asc", "numeric": false } Trie les lignes. |
text-reverser | POST /api/v1/text-reverser | { "mode": "characters" } mode: characters | words | lines |
markdown-formatter | POST /api/v1/markdown-formatter | Convertit Markdown en HTML. |
lorem-ipsum | POST /api/v1/lorem-ipsum | { "count": 3, "unit": "paragraphs" } unit: paragraphs | sentences | words (aucun input requis) |
password-generator | POST /api/v1/password-generator | { "length": 16, "symbols": true } Aucun input requis. |
random-number | POST /api/v1/random-number | { "min": 1, "max": 100, "count": 5 } Aucun input requis. |
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 } Génère des UUID v4 (aucun input requis). |
timestamp-converter | POST /api/v1/timestamp-converter | Accepte un timestamp Unix en secondes ou millisecondes et renvoie les valeurs ISO, UTC, locales et epoch. |
css-minifier | POST /api/v1/css-minifier | Minifie le CSS en supprimant commentaires et espaces. |
html-formatter | POST /api/v1/html-formatter | { "mode": "beautify", "indent": 2 } mode: beautify | minify (indent: number | "tab") |
markdown-preview | POST /api/v1/markdown-preview | Convertit Markdown en HTML. |
Endpoints PDF
Les outils PDF traitent des fichiers. Les requêtes contiennent les fichiers encodés en base64 dans le JSON et result contient le PDF de sortie en base64. Gardez la charge décodée sous environ 4 Mo. WebP est réservé au navigateur ; envoyez du PNG ou du JPG.
| Outil | Endpoint | Corps |
|---|---|---|
pdf-merger | POST /api/v1/pdf-merger | { "files": ["<base64>", "<base64>", …] } De 2 à 20 PDF, fusionnés dans l’ordre du tableau. |
pdf-splitter | POST /api/v1/pdf-splitter | { "file": "<base64>", "options": { "mode": "extract", "pages": "1-3, 5" } } mode: extract | remove. Les plages de pages fonctionnent comme dans l’interface. |
png-to-pdf | POST /api/v1/png-to-pdf | { "images": ["<base64>", …], "options": { "pageSize": "a4", "orientation": "auto", "margin": "small" } } De 1 à 50 images PNG/JPG, une par page. 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 Erreurs
401— clé API absente ou invalide403— votre forfait ne donne pas accès à l’API404— outil inconnu422— entrée incorrecte (par exemple JSON ou regex invalide)429— limite quotidienne atteinte