Toolenza API · v1
Every Toolenza tool, one bearer token.
Currency conversion, geocoding, IP lookup, JSON formatting, QR codes, unit conversions — production-ready endpoints with predictable latency, transparent pricing, and a 1,000-call free tier.
Pricing
Free
$0/month
1,000 calls/mo · 30/min
Starter
$19/month
50,000 calls/mo · 120/min
Most popular
Pro
$99/month
500,000 calls/mo · 600/min
Scale
$499/month
5,000,000 calls/mo · 6000/min
Authentication
Send your key as a bearer token on every request.
curl https://toolenza.codenzia.com/api/v1/currency/convert?from=USD&to=EUR&amount=100 \
-H "Authorization: Bearer tlz_live_••••••••••••••••••••••••••••••••••••••••"
Quotas reset 30 days after first use. Hitting the cap returns 429 quota_exceeded; spike-rate limits return 429 too_many_requests. Both responses ship a JSON body with details and an upgrade link.
Endpoints
GET
/api/v1/currency/convert
Live FX conversion
Params
from=USD&to=EUR&amount=100
Response
{"from":"USD","to":"EUR","amount":100,"rate":0.94,"converted":94.00,"as_of":"…"}
GET
/api/v1/units/convert
Length / weight / volume / speed / area
Params
from=feet&to=meters&amount=100
Response
{"from":"feet","to":"meters","amount":100,"converted":30.48}
GET
/api/v1/geo/geocode
Address → lat/lng (OpenStreetMap)
Params
q=Eiffel%20Tower&limit=3
Response
{"results":[{"lat":48.858,"lng":2.295,"display":"Tour Eiffel, Paris…"},…]}
GET
/api/v1/geo/reverse
Coords → address
Params
lat=48.858&lng=2.295
Response
{"display":"…","address":{…}}
GET
/api/v1/geo/ip
IP → country / city / ISP
Params
ip=8.8.8.8
Response
{"country":"United States","city":"Mountain View","isp":"Google LLC",…}
GET
/api/v1/geo/elevation
Altitude (m + ft)
Params
lat=27.988&lng=86.925
Response
{"metres":8771,"feet":28776.25}
GET
/api/v1/geo/timezone
IANA timezone for coords
Params
lat=48.858&lng=2.295
Response
{"timeZone":"Europe/Paris","utcOffset":7200,…}
POST
/api/v1/json/format
Pretty-print JSON
Params
{"json":"{…}","indent":2}
Response
{"formatted":"{ … }"}
POST
/api/v1/json/validate
Validate JSON spec
Params
{"json":"{…}"}
Response
{"valid":true} or {"valid":false,"error":"…"}
GET
/api/v1/qr
Generate QR code as SVG
Params
data=hello&size=256
Response
{"svg":"<svg…","data_url":"data:image/svg+xml;base64,…"}
POST
/api/v1/hash
MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512 + HMAC
Params
{"input":"hello","algo":"sha256"}
Response
{"algo":"sha256","mode":"plain","digest":"2cf24d…","length_bytes":32}
POST
/api/v1/base64
Encode / decode, with optional URL-safe variant
Params
{"input":"hello","mode":"encode","url_safe":true}
Response
{"mode":"encode","url_safe":true,"output":"aGVsbG8","length":7}
POST
/api/v1/text
Case / slugify / count / reverse / trim
Params
{"input":"Hello, World!","op":"slugify"}
Response
{"op":"slugify","input_length":13,"output":"hello-world"}
POST
/api/v1/password
Bulk-generate strong passwords (max 100/call)
Params
{"count":3,"length":16,"upper":true,"lower":true,"digits":true,"symbols":false}
Response
{"count":3,"length":16,"charset_size":47,"passwords":["…","…","…"],"entropy_bits_per_password":88.84}
POST
/api/v1/regex/test
Test a PCRE pattern, return matches + named groups
Params
{"pattern":"/(?<y>\\d{4})/","input":"2026-05-13"}
Response
{"pattern":"/(?<y>…)/","match_count":1,"matches":[{"match":"2026","offset":0,"groups":{"y":"2026"}}]}
Quick start
JavaScript
const r = await fetch(
'https://toolenza.codenzia.com/api/v1/currency/convert?from=USD&to=EUR&amount=100',
{ headers: { Authorization: 'Bearer ' + KEY } }
);
console.log(await r.json());
Python
import requests
r = requests.get(
'https://toolenza.codenzia.com/api/v1/geo/geocode',
params={'q': 'Eiffel Tower'},
headers={'Authorization': f'Bearer {KEY}'},
)
print(r.json())
cURL
curl -X POST \
https://toolenza.codenzia.com/api/v1/json/format \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}","indent":2}'