Render a template with data
API · /template-api
Template API
Render templates with your data. Pass a Handlebars or Mustache template plus a JSON data object and get back the rendered text — ideal for dynamic emails, SMS and notifications, document and report generation, code scaffolding, and any "fill in the blanks" output. Handlebars supports blocks like {{#each}} and {{#if}} and is HTML-escaped by default (turn off with escape=false); Mustache is logic-less with sections and inverted sections. Both engines are safe — there is no arbitrary code execution. Pure local rendering — no key, no third-party service, instant. Live. 3 endpoints. Distinct from a Markdown renderer or a fake-data generator.
API health
healthy- Uptime
- 100.00%
- Server probes · 24h
- Avg latency
- 90 ms
- Server probes · 24h
- Subscribers
- 3,736
- active
- Total calls
- 42
- last 7 days
Pricing
Pick a tier — billed monthly, cancel anytime.
Free
Free
- 1,360 calls / month
- 2 requests / second
- Hard cap (429 above quota, no overage)
- 1,360 calls/month
- 2 req/sec
- Handlebars + Mustache
- No credit card
Starter
€5.40 /month
- 21,000 calls / month
- 8 requests / second
- Hard cap (429 above quota, no overage)
- 21k calls/month
- 8 req/sec
- Blocks, sections, escaping
- Email support
Pro
€25.00 /month
- 168,000 calls / month
- 20 requests / second
- Hard cap (429 above quota, no overage)
- 168k calls/month
- 20 req/sec
- Email / document pipelines
- Priority support
Mega
€61.00 /month
- 860,000 calls / month
- 50 requests / second
- Hard cap (429 above quota, no overage)
- 860k calls/month
- 50 req/sec
- Platform scale
- Dedicated SLA
Built by
Related APIs
Other APIs with overlapping tags.
Equine Care API
Horse-care maths as an API, computed locally and deterministically — the everyday numbers a horse owner, barn manager or vet tech runs without reaching for a chart. The weight endpoint estimates body weight from a weight-tape measurement using the classic formula weight ≈ heart girth² × body length ÷ a type divisor (adult 330, yearling 301, weanling 280, pony 299) with measurements in inches — a horse with a 72-inch girth and 66-inch length comes out at about 1,037 lb (470 kg), the number you actually dose wormer and feed against. The feed endpoint turns body weight and a goal into daily forage: horses eat roughly 1.5–2.5 % of body weight in dry-matter forage a day, so a 1,000 lb horse on maintenance wants about 15–20 lb of hay, more to gain and less to slim. The gestation endpoint gives the foaling due date and the normal 320–362 day window from a breeding date — a mare bred on 1 April is due around 7 March the next year, give or take three weeks. Everything is computed locally and deterministically, so it is instant and private. Ideal for barn-management and horse-care apps, breeding and foaling trackers, feed-calculator and tack-shop sites, and equine-vet tools. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational estimates — not veterinary advice.
api.oanor.com/equine-api
Darkroom API
Analog darkroom and film maths as an API, computed locally and deterministically — the three corrections that bite when you develop film and make prints by hand. The reciprocity endpoint corrects long exposures for reciprocity failure, where film loses sensitivity past about a second: corrected time = metered^p (Schwarzschild p ≈ 1.3 for many films, settable per datasheet), so a metered 10-second exposure really wants about 20 seconds, a full stop more, while anything under the threshold is left untouched. The printexposure endpoint adjusts enlarger exposure when you change print size — light spreads as you raise the head, so exposure is proportional to (magnification + 1)², where magnification is print size ÷ negative size: going from 2× to 4× magnification turns a 10-second exposure into 27.8 seconds, about 1.5 stops, ready for f-stop printing. The pushpull endpoint scales development time for pushing or pulling film by N stops — time = base × factor^stops, roughly +40 % per stop pushed — turning a 7-minute base into 13.7 minutes at +2 stops, or 5 minutes pulled a stop. Everything is computed locally and deterministically, so it is instant and private. Ideal for film-photography and darkroom apps, light-meter and timer companions, lab and workshop tools, and analog-photography sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For digital depth-of-field use a photography API; for lab molarity use a dilution API.
api.oanor.com/darkroom-api
Aquascape API
Planted-aquarium and aquascaping maths as an API, computed locally and deterministically — the dosing and water numbers a high-tech planted tank runs on, not the rolls of a dice. The co2 endpoint gives the dissolved CO2 concentration from pH and carbonate hardness using the classic relationship CO2 (ppm) ≈ 3 × KH (dKH) × 10^(7 − pH), and flags it against the 15–30 ppm window plants want — at pH 6.6 and KH 4 you are at about 30 ppm, the top of the safe zone, while pH 7.0 and KH 3 is a carbon-limited 9 ppm. The fertilizer endpoint turns a dry-salt dose into the nutrient ppm it adds, the heart of Estimative Index dosing: ppm = grams × the nutrient mass fraction × 1000 ÷ tank litres, so 1 g of KNO3 in 100 litres adds 6.1 ppm nitrate and 3.9 ppm potassium, and it knows KNO3, KH2PO4, K2SO4, MgSO4 (Epsom) and Ca(NO3)2. The substrate endpoint sizes the substrate from the footprint and target depth — a 60 × 30 cm tank at 6 cm deep needs 10.8 litres, two 9-litre aquasoil bags. Everything is computed locally and deterministically, so it is instant and private. Ideal for aquascaping and planted-tank apps, fertiliser-dosing calculators, CO2-rig tools, and aquarium-shop and hobby sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For a tank water volume or fish stocking use an aquarium API; for pool chemistry use a pool API.
api.oanor.com/aquascape-api
Reptile Husbandry API
Reptile-husbandry maths as an API, computed locally and deterministically — the keeper numbers behind a healthy vivarium, so the setup is right before the animal moves in. The enclosure endpoint turns an animal length and its habit into the minimum floor length, width and height: terrestrial snakes want a floor at least as long as the snake (a 48-inch corn snake → a 48 × 24 × 24 inch minimum, eight square feet of floor), arboreal species trade floor for height (an 18-inch chameleon → 27 × 18 × 36 inches, tall), and ground lizards and tortoises need far more floor than their body length. The uvb endpoint gives the UV-B target by Ferguson zone — the 1-to-4 classification from Baines et al. (2016) of how much sun a species basks in — returning the mean and basking UV-index ranges (zone 3 open baskers want a basking UVI of 2.9–7.4), and, if you pass a lamp UVI measured at a reference distance, an inverse-square estimate of the mounting distance for the right basking UVI. The feeding endpoint sizes prey from body weight and life stage: a meal of roughly 10–15 % of body weight, no wider than the animal, on an interval that lengthens with age — a 500 g adult snake takes a 40–60 g prey item every fortnight. Everything is computed locally and deterministically, so it is instant and private. Ideal for reptile-keeper and herpetoculture apps, pet-store and breeder tools, vivarium-planning calculators, and care-sheet sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational husbandry estimates — not veterinary advice; research your exact species.
api.oanor.com/reptile-api
Frequently asked questions
Quick answers about pricing, quotas, and integration.
How do I get an API key for Template API?
What's the rate limit for Template API?
How much does Template API cost?
Can I cancel my subscription anytime?
Is Template API GDPR-compliant?
Pick an endpoint from the list on the left to see its details and try it.
Code snippets
Sign up to get an API key, then call any path under your slug.
curl https://api.oanor.com/template-api/SOME_PATH \
-H "x-oanor-key: oanor_test_..."
const res = await fetch("https://api.oanor.com/template-api/SOME_PATH", {
headers: { "x-oanor-key": "oanor_test_..." }
});
const data = await res.json();
$ch = curl_init("https://api.oanor.com/template-api/SOME_PATH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
$response = curl_exec($ch);
import requests
r = requests.get(
"https://api.oanor.com/template-api/SOME_PATH",
headers={"x-oanor-key": "oanor_test_..."},
)
print(r.json())
Ratings
Sign in to rate.
No reviews yet.
Discussion
Ask questions, share usage tips, get answers from the provider and other developers. Public — anyone can read.
Sign in to start a thread or reply.
Sign inNew thread
·
-
Provider answer
🔒 This thread is locked — no new replies.
-
·
- No threads yet — start the discussion.
Support
Private 1:1 support with the provider — billing questions, integration issues, account problems. Only you and the provider team can see these threads.
Sign in to open a support ticket.
Sign inOpen new ticket
Describe what you need help with. The provider team gets an email and replies on the ticket page.
-
·
Urgent - No tickets yet for this API.