Développeurs

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"}}'

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.

OutilEndpointOptions
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.

OutilEndpointCorps
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 invalide
  • 403 — votre forfait ne donne pas accès à l’API
  • 404 — outil inconnu
  • 422 — entrée incorrecte (par exemple JSON ou regex invalide)
  • 429 — limite quotidienne atteinte