#developer-tools
100 APIs with this tag
Programming Languages API
The language definitions GitHub uses to recognise code (the open-source Linguist data) as an API — a clean reference for syntax highlighting, file-type detection, repository dashboards and developer tooling. For each of 800+ languages the API returns its type (programming, markup, data or prose), its brand colour (the hex GitHub paints it), the file extensions associated with it, common aliases, the GitHub language id and the editor (ace) mode. Look a language up by name or alias (golang resolves to Go), reverse-look-up which language(s) own a file extension (.py → Python; .h → C, C++, Objective-C), list the languages of a type, search, or list them all. Distinct from languages-api (ISO 639 human languages) — this is the programming-language reference. Served from memory — always fast.
api.oanor.com/proglang-api
MIME Types API
The canonical MIME / media-type database (the jshttp mime-db used by Express and most of the Node ecosystem: IANA + Apache + nginx), served from memory — no key. Resolve a media type to its file extensions, charset and compressibility; reverse-lookup the media type(s) for a file extension (e.g. png → image/png); and search or list types by source. 2,600+ media types, 1,000+ with file extensions. Lean, predictable JSON. Ideal for upload validation, Content-Type resolution, file-type detection, download handlers and developer tooling.
api.oanor.com/mimetypes-api
MusicBrainz API
The open music-metadata database as an API — artists, release-groups (albums), releases, recordings and labels, identified by stable MusicBrainz IDs (MBIDs), returned as clean JSON. Search any entity by name or Lucene query; look up an artist with their external links and tags, an album, a release with its full track list, a recording with its ISRCs, or a label; and browse an artist's complete discography. Live data with MBIDs, disambiguations, types, countries, life spans, ISRCs, barcodes, catalogue numbers and relations — the canonical identifiers that link and de-duplicate music data across services. Ideal for metadata enrichment and matching, music catalogues, tagging and library tools, and research. 11 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/musicbrainz-api
Pinterest API
Real-time Pinterest data as an API — pins, boards and users, returned as clean JSON. Search pins, boards or users by keyword; look up any user's profile with follower, pin and board counts; pull a user's boards and their pins; fetch a pin's details (repins, comments, image, link, domain, pinner) and its related pins; and fetch a board's details and its pins. Live data with titles, descriptions, full-resolution image URLs, outbound links, repin and comment counts, dominant colours and creators. Ideal for social listening and trend research, content aggregation and discovery, e-commerce and visual-marketing tools, and dashboards. 10 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/pinterest-api
Genius Lyrics API
Real-time Genius music data as an API — songs, artists, albums and full song lyrics, returned as clean JSON. Search songs, or search across songs, artists and albums at once; fetch a song, artist or album by id; list an artist's songs ranked by popularity; and pull the full, cleaned lyrics of any song by id or by Genius URL. Live data with titles, primary and featured artists, page views, release dates, artwork, follower counts and social handles. The lyrics endpoint returns the complete song text with section markers ([Verse], [Chorus]) and the contributor header stripped. Ideal for music and lyrics apps, karaoke and sing-along tools, sentiment and language analysis, and metadata enrichment. 7 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/genius-api
iTunes API
Real-time Apple iTunes catalogue data as an API — music, podcasts, ebooks and audiobooks, plus artist, album and podcast lookups, returned as clean JSON. Search songs, albums, podcasts, ebooks and audiobooks, or run a general search across any media type; look up any item by its iTunes id; fetch an artist with their albums and songs; fetch an album with its full track list; and fetch a podcast with its recent episodes. Live data with names, artists, artwork (upscaled), preview URLs, genres, prices, release dates, content ratings, track counts and podcast feed URLs. Ideal for music and podcast apps, media-catalogue and metadata enrichment, discovery and recommendation tools, and research. 12 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/itunes-api
Deezer API
Real-time Deezer music data as an API — tracks, albums, artists, playlists, charts and genres, returned as clean JSON. Search the catalogue for tracks, albums, artists and playlists; fetch any track, album (with its track list), artist or playlist by id; get an artist's top tracks and full discography; pull the global charts (top tracks, albums, artists and playlists) and the list of genres. Live data with titles, durations, ranks, fan counts, cover and picture art, 30-second preview URLs, release dates and explicit flags. Ideal for music apps and players, recommendation and discovery tools, metadata enrichment, dashboards and research. 12 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/deezer-api
Reddit API
Real-time Reddit data as an API — subreddits, posts, comments, user profiles and search, returned as clean JSON. Pull a subreddit's info and its hot, new, top or rising posts; fetch a post together with its full comment tree; look up any user's profile, karma, submissions and comments; search posts across all of Reddit or within one subreddit; and list the trending posts and the most popular subreddits. Live data, paginated with Reddit cursors, with scores, upvote ratios, comment counts, flair, timestamps, thumbnails and media URLs. Ideal for social listening and brand monitoring, trend and sentiment dashboards, content aggregation, research and market intelligence, and bots. 11 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.
api.oanor.com/reddit-api
Handrail & Baluster API
Railing and baluster layout maths as an API, computed locally and deterministically — the baluster-count, spacing and post numbers a deck builder, fabricator or balustrade designer sets a guardrail out with. The baluster-count endpoint gives the smallest number of balusters that keeps every gap within the safety limit: between two posts n balusters leave n+1 gaps, so the count = ceil((rail length − max gap) ÷ (baluster width + max gap)). The usual guardrail limit is a 100 mm (4-inch) sphere — a child-safety rule — so a 2000 mm rail with 40 mm balusters needs 14 of them at even 96 mm gaps; round up, because one fewer opens the gaps past the limit. The layout endpoint sets out a known count evenly: the gap = (rail length − total baluster width) ÷ (count + 1), the centre-to-centre pitch = baluster width + gap, and the first baluster's centre sits one gap plus half a baluster from the post face, so you mark the first centre and step off the pitch with the last gap landing equal to the first. The post-count endpoint sizes the frame: a run needs one more post than spans, spans = ceil(run ÷ max post spacing), posts = spans + 1, even spacing = run ÷ spans — a 6 m run at a 1.8 m max takes 4 spans and 5 posts at a tidy 1.5 m. Everything is computed locally and deterministically, so it is instant and private. Ideal for deck and balustrade design tools, fabrication and estimating apps, and building calculators. Pure local computation — no key, no third-party service, instant. Uses the common 100 mm infill rule — confirm your local code. 3 compute endpoints. For stair rise and run use a stair API; for fence pickets a fence API.
api.oanor.com/handrail-api
Wood Pellet API
Wood-pellet heating maths as an API, computed locally and deterministically — the consumption, heat-output and storage numbers a homeowner, installer or heating planner sizes a pellet system by. The consumption endpoint gives the pellets to meet a heat demand = the demand ÷ the usable heat per kilo, where usable = the calorific value × the boiler efficiency: ENplus wood pellets hold about 4.8 kWh/kg and a modern pellet boiler runs ~90 %, so each kilo delivers roughly 4.3 kWh — a 10,000 kWh annual demand then needs about 2.3 tonnes of pellets, around 154 fifteen-kilo bags or a bulk delivery. The heat-output endpoint inverts it: the usable heat from a mass = mass × calorific value × efficiency, so a tonne of ENplus pellets is about 4,800 kWh gross of which a 90 % boiler delivers ~4,320 kWh — the equivalent of roughly 480 litres of heating oil or 432 m³ of natural gas. The storage-volume endpoint sizes the hopper or silo: storage = the pellet mass ÷ the bulk (poured) density, about 650 kg/m³ for ENplus, so 2.3 tonnes fill roughly 3.6 m³ — size the store for the full delivery plus headroom for the fill pipe. Everything is computed locally and deterministically, so it is instant and private. Ideal for pellet-heating and installer tools, home-energy and quoting apps, and renewable-heat calculators. Pure local computation — no key, no third-party service, instant. Uses standard ENplus figures — set your own for a specific pellet grade. 3 compute endpoints. For cordwood use a firewood API; for propane/LPG a propane API.
api.oanor.com/pellet-api
Kite Flying API
Kite-flying maths as an API, computed locally and deterministically — the line-pull, altitude and minimum-wind numbers a kite flyer, festival organiser or kite app works a flight out with. The line-pull endpoint gives the tension a kite puts on the line ≈ ½ × air density × wind speed² × sail area × a force coefficient (~0.8 for a typical flat or delta kite): because it rises with the square of the wind, doubling the wind quadruples the pull — a 1.5 m² kite holds about 47 N (nearly 5 kgf) at 8 m/s but four times that in a strong blow, so the line and your grip must be sized to the gusts, not the average. The altitude endpoint gives the flying height = the line let out × the sine of the line angle above the horizontal, with the downwind distance from the cosine: 100 m of line at a 45° angle reaches about 71 m up and 71 m downwind, while a heavy or under-flown kite sags to a low angle and never climbs. The min-wind endpoint gives the lightest wind that lifts off, where the aerodynamic lift just equals the weight: min wind = √(2 × mass × g ÷ (air density × area × lift coefficient)), so a 200 g, 1.5 m² kite needs only about 1.6 m/s (6 km/h) — lighter sails and bigger area drop the threshold. Everything is computed locally and deterministically, so it is instant and private. Ideal for kite-flying and festival apps, hobby and STEM-education tools, and outdoor calculators. Pure local computation — no key, no third-party service, instant. Flat-kite estimates — combine with real wind readings. 3 compute endpoints. For drag and terminal velocity use a drag API; for structural wind load a wind-load API.
api.oanor.com/kite-api
Vinyl Record API
Vinyl-record geometry maths as an API, computed locally and deterministically — the playing-time, groove-length and groove-speed numbers a cutting engineer, pressing plant or audio hobbyist works a record out with. The playing-time endpoint gives a side's maximum time = the number of groove turns ÷ the turntable speed, where the turns = the recorded band's radial width ÷ the groove pitch (the spacing between adjacent grooves): a 12-inch LP with ~85 mm of band at a 100 µm pitch holds about 850 turns, so at 33⅓ rpm that is roughly 25 minutes a side — a tighter pitch fits more time but cuts groove amplitude and so loudness and bass, the classic time-versus-level trade. The groove-length endpoint unrolls the spiral: length ≈ turns × the mean circumference (π × the average of the outer and inner diameters), on the order of 400–500 metres for an LP side, the whole of which the stylus traces once. The groove-speed endpoint gives the linear speed under the stylus = 2π × rpm/60 × radius, so the outer grooves of an LP pass at about 50 cm/s but the inner ones only ~20 cm/s — the cause of inner-groove distortion and why engineers place quieter tracks last. Everything is computed locally and deterministically, so it is instant and private. Ideal for record-cutting and mastering tools, hi-fi and collector apps, and audio-engineering calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For musical note and tempo maths use a music API.
api.oanor.com/vinyl-api
Sundial API
Sundial gnomonics maths as an API, computed locally and deterministically — the hour-line, gnomon and longitude-correction numbers a dial maker, horologist or astronomy hobbyist lays a sundial out with. The hour-line-angle endpoint gives the angle of each hour line on the dial plate, measured from the noon line: for a horizontal dial tan(angle) = sin(latitude) × tan(hour angle), and for a vertical south-facing dial cos(latitude) is used instead, where the hour angle is 15° per hour from solar noon. At 50° latitude the 1-o'clock line sits about 11.6° from noon rather than 15° — the lines bunch near noon and spread toward the ends, which is exactly why a sundial's hours are unevenly spaced. The gnomon endpoint gives the style angle: the gnomon's shadow-casting edge must point at the celestial pole, so it rises at the latitude angle on a horizontal dial (50° at 50° N) and at 90° − latitude on a vertical dial — get this wrong and the dial keeps correct time at only one season. The longitude-correction endpoint converts the dial's local apparent time to clock time: 4 minutes of time per degree of longitude, correction = 4 × (reference meridian − local longitude), so a dial at 7.5° E on Central European Time reads 30 minutes slow versus the clock. Everything is computed locally and deterministically, so it is instant and private. Ideal for sundial-design and gnomonics tools, astronomy-education and maker apps, and horology calculators. Pure local computation — no key, no third-party service, instant. Add the equation of time for full clock accuracy. 3 compute endpoints. For the sun's position use a solar-position API; for sunrise and sunset a sunrise API.
api.oanor.com/sundial-api
Metal Casting API
Metal-casting and foundry maths as an API, computed locally and deterministically — the solidification-time, shrinkage and melt-weight numbers a foundryman, patternmaker or casting designer works a job to. The solidification-time endpoint applies Chvorinov's rule, t = B × (V/A)², where V/A is the casting modulus (volume ÷ cooling surface area) and B is the mould constant (~2–4 min/cm² for sand): a chunky part with little surface for its volume freezes slowly, a thin one fast — and because a riser must stay molten longer than the casting it feeds, its modulus has to be larger, which is the number that sizes it. The pattern-shrinkage endpoint makes the pattern oversize for the metal that shrinks as it cools: pattern = casting dimension × (1 + shrinkage/100), the patternmaker's contraction rule — about 1.0–1.6 % for grey iron, ~2 % for steel and aluminium — so a 100 mm steel feature needs a 102 mm pattern. The melt-weight endpoint gives the casting weight = volume × metal density (iron ~7.2, steel ~7.85, aluminium ~2.70 g/cm³) and the metal to actually pour = casting weight ÷ the casting yield, because the sprue, runners and risers are remelted scrap — a 7 kg iron casting at 70 % yield needs about 10 kg in the ladle. Everything is computed locally and deterministically, so it is instant and private. Ideal for foundry and patternmaking tools, casting-design and estimating apps, and metalworking calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For a part's weight from its dimensions use a metal-weight API; for welded joints a welding API.
api.oanor.com/casting-api
Basketball Stats API
Basketball efficiency-stats maths as an API, computed locally and deterministically — the shooting-efficiency and box-score numbers an analyst, coach or sports app rates a performance by. The true-shooting endpoint folds twos, threes and free throws into one number: TS% = points ÷ (2 × (field-goal attempts + 0.44 × free-throw attempts)) × 100, where the 0.44 approximates how many possessions a free-throw trip really uses — 25 points on 18 field goals and 6 free throws is about 60.6 %, against a league average near 56–58 %. The effective-field-goal endpoint credits a three for being worth 50 % more than a two: eFG% = (field goals made + 0.5 × threes made) ÷ field-goal attempts × 100, so 9 makes including 3 threes on 18 attempts is 58.3 % versus a raw 50 %, the gap being the value of the long ball. The game-score endpoint computes John Hollinger's Game Score, a single-game productivity rating scaled like points — PTS + 0.4·FGM − 0.7·FGA − 0.4·(FTA−FTM) + 0.7·ORB + 0.3·DRB + STL + 0.7·AST + 0.7·BLK − 0.4·PF − TOV — where about 10 is an average game, 20+ excellent and 40+ historic, rewarding efficient scoring and all-round play while docking misses and turnovers. Everything is computed locally and deterministically, so it is instant and private. Ideal for basketball analytics and box-score tools, fantasy and commentary apps, and sports calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For baseball stats use a baseball API; for cricket a cricket API.
api.oanor.com/basketball-api
Cricket Stats API
Cricket statistics maths as an API, computed locally and deterministically — the run-rate, strike-rate and chase numbers a scorer, commentator or cricket app works a match by. An over is six legal balls, and overs are given as whole overs plus balls, never as decimal overs — '20.3 overs' means 20 overs and 3 balls (20.5 in real terms), the classic cricket-maths trap this API avoids. The run-rate endpoint gives the runs per over = runs ÷ (balls ÷ 6), so 150 runs off 20 overs is 7.50 an over, and with a target overs figure it projects the innings score at the current pace. The strike-rate endpoint gives a batter's strike rate = runs ÷ balls faced × 100, the runs per 100 balls — 75 off 50 is a strike rate of 150, fast scoring in the limited-overs game; in Tests a lower strike rate with a high average is prized instead. The required-rate endpoint handles a chase: the required run rate = the runs still needed ÷ the balls left × 6, so needing 80 to win with 10 overs left is 8.00 an over — a figure that climbs sharply as balls run out, which is why a comfortable chase can tip away in a couple of tight overs. Everything is computed locally and deterministically, so it is instant and private. Ideal for cricket scoring and live-score apps, fantasy and commentary tools, and sports calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For baseball stats use a baseball API.
api.oanor.com/cricket-api
Time-lapse API
Time-lapse photography maths as an API, computed locally and deterministically — the clip-length, interval and storage numbers a photographer, filmmaker or camera app plans a sequence with. The clip-length endpoint trades a long shoot for a short clip: the frames captured = the shoot duration ÷ the interval, and the clip length = those frames ÷ the playback frame rate — shooting for 60 minutes at one frame every 5 seconds gives 720 frames, and at 24 fps that plays back in 30 seconds, a 120× speed-up. Longer intervals compress time harder but can stutter on fast motion. The interval endpoint works backwards from a target clip: the frames needed = the target clip length × the frame rate, and the interval = the shoot duration ÷ those frames, so a 60-minute shoot for a 20-second clip at 24 fps needs 480 frames, one every 7.5 seconds. The storage endpoint sizes the card and disk: total storage = the frame count × the size of one frame, and because time-lapse shoots full-resolution stills (RAW ~20–30 MB each), 720 RAW frames at 25 MB is about 18 GB for a single 30-second clip — which is why a long lapse eats cards fast. Everything is computed locally and deterministically, so it is instant and private. Ideal for time-lapse and intervalometer apps, photography-planning tools, and production calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For video bitrate and file size use a bitrate API.
api.oanor.com/timelapse-api
Jam & Preserve API
Jam and preserve maths as an API, computed locally and deterministically — the sugar, setting-point and yield numbers a jam maker, preserver or recipe app works a batch to. The sugar endpoint sets the sugar from the sugar-to-fruit ratio: a traditional full-sugar jam is 1:1, so 1 kg of fruit takes 1 kg of sugar for a 2 kg batch at 50 % sugar, while lower ratios (0.6–0.75) make a softer, fresher, less-sweet preserve that needs added pectin and keeps less well — the sugar both preserves and helps the gel. The setting-point endpoint gives the gel temperature adjusted for altitude: jam sets at about 4.5 °C (8 °F) above the temperature water boils at — 104.5 °C at sea level — but because water boils lower as you climb (roughly 1 °C per 285 m), the target falls to near 99 °C at 1500 m, so cooking to the sea-level figure up a mountain over-boils the batch. The yield endpoint boils the batch down to a target soluble-solids (Brix): jam keeps at about 65 % Brix, the finished weight = the solids (sugar plus the fruit's own ~10 % dry matter) ÷ the target Brix, and the rest evaporates as water — 1 kg sugar and 1 kg fruit boils down to about 1690 g of jam, losing roughly 310 g of water. Everything is computed locally and deterministically, so it is instant and private. Ideal for preserving and recipe tools, homestead and kitchen apps, and food-production calculators. Pure local computation — no key, no third-party service, instant. Gel chemistry, not canning safety. 3 compute endpoints. For processing-time altitude adjustment use a canning API.
api.oanor.com/jam-api
Swimming API
Swimming maths as an API, computed locally and deterministically — the SWOLF, threshold-pace and per-100 m numbers a swimmer, coach or training app works a set out with. The swolf endpoint scores stroke efficiency for one length: SWOLF (swim + golf) = the strokes taken plus the seconds taken, and like golf lower is better — gliding further per stroke or swimming faster both cut it, so a 25 m length in 18 strokes and 30 s is a SWOLF of 48. Because it is pool-length and stroke dependent, the score is normalized to 25 m so lengths in different pools compare. The css endpoint computes Critical Swim Speed, the swimmer's threshold pace, from two all-out time trials: CSS = (distance1 − distance2) ÷ (time1 − time2) — the classic 400 m and 200 m test, where 6:00 and 2:50 give about 1.05 m/s, a 1:35 / 100 m threshold; training paces are then set as offsets from CSS, the swimmer's equivalent of a runner's threshold or an erg's 2 k pace. The pace endpoint gives speed and the per-100 m pace swimmers actually quote (time ÷ distance × 100), so 100 m in 1:30 is a 1:30 / 100 m pace at 1.11 m/s. Everything is computed locally and deterministically, so it is instant and private. Ideal for swim-training and coaching tools, lap-tracker and triathlon apps, and fitness calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For running pace use a pace API; for indoor rowing a rowing API.
api.oanor.com/swimming-api
Indoor Rowing API
Indoor-rowing (Concept2 erg) maths as an API, computed locally and deterministically — the watts, split and calorie numbers a rower, coach or fitness app works a piece out with, using the published Concept2 relations. The split-to-watts endpoint turns a 500 m split into power: on an erg the power is fixed by the pace, not the stroke rate, so watts = 2.80 ÷ pace³ where the pace is the seconds per metre (the split ÷ 500) — a 2:00 split is about 202 W. Because power goes as the inverse cube of pace, small split gains cost a lot of watts: pulling 1:50 instead of 2:00 is roughly 270 W, not 220. The watts-to-split endpoint inverts it — pace = (2.80 ÷ watts)^(1/3), split = pace × 500 — so a target wattage maps to the split on the monitor and a rower's power compares directly with a cyclist's or any other watts figure. The calories endpoint applies the Concept2 calorie formula, Cal/hr = (watts × 4 × 0.8604) + 300, where the +300 is a fixed resting-metabolism term that makes the erg's count run higher than pure mechanical work; 200 W is about 988 Cal/hr, roughly 494 calories over 30 minutes. Everything is computed locally and deterministically, so it is instant and private. Ideal for rowing and erg training tools, coaching and leaderboard apps, and fitness calculators. Pure local computation — no key, no third-party service, instant. Concept2 model — a machine estimate, not lab calorimetry. 3 compute endpoints. For running pace use a pace API; for cycling a cycling API.
api.oanor.com/rowing-api
Cross-Stitch API
Cross-stitch and embroidery maths as an API, computed locally and deterministically — the design-size, fabric and floss numbers a cross-stitcher, embroidery designer or needlework-shop works a project out with. The design-size endpoint turns a stitch count and a fabric count (stitches per inch) into the finished size: size = stitch count ÷ fabric count, so a 140 × 98 design on 14-count Aida finishes at 10 × 7 inches (25.4 × 17.8 cm), smaller on 18-count and larger on 11-count because a higher count packs more stitches per inch — and it returns the total stitch count (width × height) that drives the floss and the hours. The fabric-needed endpoint adds a margin on every side to give the fabric to cut: design size + twice the margin per dimension, with the usual 3 inches per side for hooping, framing and finishing, so a 10 × 7 design wants a 16 × 13 inch cut. The thread-length endpoint estimates floss from the geometry of a full cross — the front two diagonals plus the back returns is about (2√2 + 2) ÷ fabric count inches per stitch — so 5,000 stitches on 14-count is roughly 1,724 inches, about 44 m, and it estimates the skeins given the number of strands (a 6-strand skein is ~8 m). Everything is computed locally and deterministically, so it is instant and private. Ideal for cross-stitch and embroidery pattern tools, needlework-shop and kit apps, and craft-project calculators. Pure local computation — no key, no third-party service, instant. Floss figures are planning estimates — buy a little extra and dye-lot match. 3 compute endpoints. For sewing yardage use a sewing API; for knitting gauge a knitting API.
api.oanor.com/embroidery-api
Ice Cream API
Ice-cream and gelato batch maths as an API, computed locally and deterministically — the overrun, yield and solids numbers a gelatiere, ice-cream maker or production planner balances a mix by. The overrun endpoint measures the air whipped into the mix during freezing by the weight method: from the same container filled first with mix and then with frozen ice cream, overrun = (mix weight − frozen weight) ÷ frozen weight × 100 — a cup that drops from 1000 g to 625 g ran 60 % overrun. Dense gelato sits around 20–35 %, premium ice cream 25–50 %, soft-serve and economy tubs 50–100 %+; more air means a lighter, cheaper, faster-melting product. The yield endpoint turns a mix volume and an overrun into the frozen volume (mix × (1 + overrun/100)) and the number of scoops at a given scoop size, so 2 litres of mix at 60 % overrun yields 3.2 litres and about 53 sixty-millilitre scoops — which is why overrun is a direct cost lever. The total-solids endpoint balances a recipe: total solids (sugar + fat + milk-solids-not-fat + other) as a percent of the mix weight, with the fat, sugar, MSNF and water percentages — a typical ice cream runs 36–42 % total solids, gelato lower in fat, and balancing solids against water is what keeps the texture smooth rather than icy. Everything is computed locally and deterministically, so it is instant and private. Ideal for gelateria and creamery tools, recipe-balancing apps, and food-production calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For general cooking measure conversions use a cooking API.
api.oanor.com/icecream-api
Wood Moisture API
Wood-moisture maths as an API, computed locally and deterministically — the moisture-content, oven-dry-weight and drying-target numbers a woodworker, sawyer, kiln operator or firewood seller weighs timber by. The moisture-content endpoint takes a wet weight and an oven-dry weight and returns the moisture content on both conventions: the dry basis (water ÷ oven-dry weight × 100, the forestry and woodworking standard) and the wet/green basis (water ÷ wet weight × 100, common in agriculture and paper) — a board weighing 120 g that dries to 100 g holds 20 g of water and is 20 % dry-basis or 16.7 % wet-basis, so it always matters which is quoted. Above fibre saturation (~28–30 %) the wood is still shedding free water and has not begun to shrink. The dry-weight endpoint back-calculates the unchanging oven-dry weight from a current weight and a meter reading (wet ÷ (1 + MC/100)), the anchor for any drying plan because the wood substance does not change as water leaves. The target-weight endpoint uses that anchor to give the weight a piece should reach for a target moisture content and the water still to drive off — taking 120 g at 20 % down to 12 % means a 112 g target and 8 g of water to lose, so you simply weigh the piece down to that figure. Everything is computed locally and deterministically, so it is instant and private. Ideal for woodworking and lutherie tools, sawmill and kiln-drying apps, and firewood-seasoning calculators. Pure local computation — no key, no third-party service, instant. Mass-balance maths — pair it with a real moisture meter. 3 compute endpoints. For board feet use a lumber API; for a wood-stack volume a firewood API.
api.oanor.com/woodmoisture-api
Gemstone Weight API
Gemstone weight maths as an API, computed locally and deterministically — the carat, gram, point and measured-weight numbers a jeweller, gem dealer, appraiser or lapidary works to. The carat-to-grams endpoint converts a carat weight to grams, milligrams and points: the metric carat is exactly 0.2 g (200 mg) and is split into 100 points, so a 1.5 ct stone is 0.3 g and 150 points and a quarter-carat is a twenty-five pointer — the carat is a mass unit, not a size, so a 1 ct diamond and a 1 ct emerald weigh the same but look different because their densities differ. The grams-to-carat endpoint inverts it (divide grams by 0.2, or multiply by 5), for a weight taken on a gram balance. The round-brilliant-weight endpoint gives the trade estimate used when a stone is set and cannot be put on a scale: carat ≈ diameter² × depth × 0.0061, with the girdle diameter and total depth in millimetres — a 6.5 mm round about 4 mm deep estimates near 1 carat, which is exactly why a 1 ct round brilliant measures roughly 6.5 mm across; the factor can be nudged for a thick girdle or a different cut. Everything is computed locally and deterministically, so it is instant and private. Ideal for jewellery and appraisal tools, gem-dealer and auction apps, and lapidary calculators. Pure local computation — no key, no third-party service, instant. Weight maths only — it does not price the stone or grade the colour and clarity. 3 compute endpoints. For gold karat and fineness use a gold-purity API.
api.oanor.com/gemstone-api
Gold Purity API
Gold purity and karat maths as an API, computed locally and deterministically — the karat, fineness and alloy numbers a jeweller, goldsmith, assayer or refiner works to. The karat-to-fineness endpoint converts between the two purity systems: karat is the number of 24ths of a piece that is pure gold, so the fineness (parts per thousand, the figure on a hallmark stamp) = karat ÷ 24 × 1000 and the gold percentage = karat ÷ 24 × 100 — 24K is pure (1000‰), 18K is 750‰ (75 %), 14K is 583‰, 9K is 375‰. The pure-gold-weight endpoint gives the actual fine gold in a piece = its total weight × the gold fraction (karat ÷ 24): a 10 g 18K ring holds 7.5 g of gold and 2.5 g of alloy, the fine-gold content a refiner pays on and the basis of the intrinsic metal value. The alloy-mix endpoint inverts it for the bench: to bring refined fine gold down to a target karat, the total weight = the fine gold ÷ (target karat ÷ 24) and the alloy to add = the total − the fine gold, so 7.5 g of pure gold makes 10 g of 18K with 2.5 g of master alloy. Everything is computed locally and deterministically, so it is instant and private. Ideal for jewellery and goldsmithing tools, pawn and scrap-gold apps, and assay and metal-value calculators. Pure local computation — no key, no third-party service, instant. Purity maths only — it does not fetch the live gold price. 3 compute endpoints. For a metal part's weight from its dimensions use a metal-weight API.
api.oanor.com/goldpurity-api
Arch Geometry API
Circular-segment arch geometry as an API, computed locally and deterministically — the radius, arc-length and set-out numbers a mason, joiner, stonemason or CAD user lays a segmental arch out with. A segmental arch is an arc of a circle struck through the two springings and the crown: the from-span-rise endpoint takes the span and the rise (the height of the crown above the springing line) and returns the radius = (span²/4 + rise²) ÷ (2·rise), the central angle it subtends, the arc length along the curve, and the segment area of the void below it — flatter arches with a small rise have surprisingly huge radii. The from-radius-angle endpoint inverts it, returning the chord (span), the rise (sagitta), the arc length and the area from a known radius and central angle, the way a curve struck with a trammel or a router on a pivot is described. The setout-ordinates endpoint gives the practical numbers to mark a template: the rise of the arc above a straight base line at equally spaced stations across the span (y = √(R² − x²) − (R − rise)), so you can plot the heights, connect them and cut a plywood former or bend a batten without a giant compass — the ends come out zero at the springings and the middle equals the rise at the crown. Everything is computed locally and deterministically, so it is instant and private. Ideal for masonry and joinery layout tools, stair and window-head design, and CAD and woodworking calculators. Pure local computation — no key, no third-party service, instant. Segmental (up to a semicircle) arcs. 3 compute endpoints. For road curves use a horizontal- or vertical-curve API; for plain shape areas a geometry API.
api.oanor.com/arch-api
Riveted Joint API
Riveted-joint strength maths as an API, computed locally and deterministically — the shear, bearing and rivet-count numbers a structural, sheet-metal or aircraft fitter checks a riveted connection by. The shear-capacity endpoint gives the load a rivet group carries across its shanks = the rivet area (π/4·d²) × the shear strength × the number of rivets × the shear planes — a rivet in single shear is cut on one plane, in double shear (the centre plate of a butt joint with cover plates) on two, so it carries twice. The bearing-capacity endpoint gives the load the rivets can press against the sides of their holes before the plate crushes = the projected contact area (diameter × plate thickness) × the bearing strength × the number of rivets; thin plates fail in bearing long before the rivet shears, which is exactly why both must be checked — the joint strength is the lesser of the two. The rivets-required endpoint inverts it: the rivets a design load needs = the load ÷ the allowable load per rivet (area × allowable shear × planes), rounded up to a whole rivet, using the working shear (strength ÷ safety factor) not the raw value. Everything is computed locally and deterministically, so it is instant and private. Ideal for structural and sheet-metal estimating, mechanical-design and fastener tools, and engineering calculators. Pure local computation — no key, no third-party service, instant. Shank-shear and bearing only — also confirm edge tear-out and minimum pitch. 3 compute endpoints. For bolt preload and torque use a bolt-torque API; for thread geometry a thread API; for welded joints a welding API.
api.oanor.com/rivet-api
Slackline Tension API
Tensioned-line point-load statics as an API, computed locally and deterministically — the line-tension and anchor-force numbers a slackliner, highliner or rigger works out before they weight a line. This is the V a loaded line makes under a person, not a self-weight catenary: the tension endpoint takes the span, the sag and the body load and returns the line tension and the horizontal anchor pull, because vertical balance is 2·T·sin(angle) = the body weight — so the flatter the line (the smaller the sag) the more the tension blows up, which is exactly why drum-tightening a line to kill the bounce can load the anchors to many times body weight. The sag endpoint inverts it: from a known line tension it returns the sag a mid-span load settles to (sin angle = weight ÷ twice the tension), and flags when the tension is too low to hold the load at all. The off-centre-load endpoint handles standing away from the middle, where the two halves carry different tensions: the horizontal pull is equal on both sides (H = weight × a × b ÷ (sag × span)) but the shorter, steeper segment runs at the higher tension and fails first — the reason a highliner near an anchor stresses that leash harder than one in the centre. Everything is computed locally and deterministically, so it is instant and private. Ideal for slackline and highline rigging tools, climbing and outdoor-gear apps, and tension-and-anchor calculators. Pure local computation — no key, no third-party service, instant. Geometric statics — combine with the real webbing and anchor ratings. 3 compute endpoints. For a self-weight hanging cable use a catenary API; for working-load-limit and safety factor a rigging API.
api.oanor.com/slackline-api
Textile Dyeing API
Textile-dyeing recipe maths as an API, computed locally and deterministically — the dye, water and auxiliary numbers a dyer weighs out to mix a repeatable dye-bath, whether for a swatch or a full bolt. The dye-weight endpoint gives the dye to weigh = the weight of fabric × the depth of shade, the percentage of dye on the weight of the goods: a 2 % shade on 100 g of fabric is 2 g of dye, pale shades run under half a percent, deep blacks 4 % or more — working on-weight-of-fabric is exactly what makes a recipe scale and repeat. The liquor-ratio endpoint gives the dye-bath volume = the weight of goods in kilos × the liquor ratio, the litres of bath per kilo (a 20:1 ratio is 20 L per kg); lower ratios save water, dye and energy and exhaust deeper, higher ratios level more evenly on delicate or pale work. The auxiliary endpoint gives the salt, soda ash or levelling agent to add = the bath volume × the dosing concentration in grams per litre — salt (50–80 g/L) drives reactive and direct dyes onto cotton, soda ash (10–20 g/L) raises the pH to fix them. Everything is on-weight or per-litre, so the same recipe gives the same colour and chemistry at any scale, and it is computed locally and deterministically, so it is instant and private. Ideal for craft and studio dyers, textile and yarn shops, and dye-recipe and batch-calculator tools. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For knitting yardage and gauge use a knitting API; for vegetable-ferment or meat-cure salt a fermentation or curing API.
api.oanor.com/dye-api
Solar Row Spacing API
Solar-array row-spacing and shading geometry as an API, computed locally and deterministically — the shadow-length, inter-row-spacing and ground-coverage numbers a PV designer or installer lays a ground-mount or flat-roof array out with. The shadow-length endpoint gives the shadow an object casts = its height ÷ tan(sun elevation), longer the lower the sun (which is why layouts are designed for the worst-case winter-solstice low sun), stretched by 1/cos(azimuth difference) when the sun is off-axis. The row-spacing endpoint gives the minimum row pitch (front edge to front edge) to stop a row shading the one behind = the module's horizontal base (length × cos tilt) + the shadow its back edge casts (module height ÷ tan of the minimum sun elevation) — a 1.7 m module at 30° tilt clearing a 20° winter sun needs about a 3.8 m pitch — and returns the resulting ground coverage ratio. The ground-coverage endpoint gives that GCR = module length ÷ row pitch, the packing density: fixed-tilt fields typically run 0.4–0.5, higher packs more kW per acre but loses winter yield to mutual shading, lower wastes land. Everything is computed locally and deterministically, so it is instant and private. Ideal for solar-design and layout tools, EPC and site-assessment apps, and renewable-energy calculators. Pure local computation — no key, no third-party service, instant. Geometric model — use the real worst-hour sun altitude. 3 compute endpoints. For solar position/altitude use a solar-position API; for irradiance a solar API; for off-grid sizing an off-grid API.
api.oanor.com/pvspacing-api
Winch Drum API
Winch and cable-drum maths as an API, computed locally and deterministically — the rope-capacity, line-pull and rope-out numbers a winch operator, rigger or recovery driver works a drum with. The capacity endpoint gives the rope a drum holds by exact layer geometry: the sum over every full layer of the turns per layer × π × that layer's mean wrap diameter, where turns per layer = drum width ÷ rope diameter and the number of layers = the flange-to-barrel depth ÷ rope diameter — a 10-inch barrel, 20-inch flange, 12-inch-wide drum on half-inch rope holds about 940 ft over 10 layers. The layer-pull endpoint shows why pull falls as the drum fills: the rated pull is for the bare-drum first layer, and as rope piles on, the growing lever arm cuts the line pull and raises the line speed in the same ratio — pull × (first-layer diameter ÷ this layer's diameter) — so the top layer of a deep drum can pull barely half the bottom-layer rating, which is why you spool off to bare drum for a hard pull or add a snatch block. The length-at-layer endpoint gives the rope wound after a number of full layers, for marking the rope or knowing how much line is out. Everything is computed locally and deterministically, so it is instant and private. Ideal for winch- and hoist-sizing tools, recovery and off-road apps, marine and industrial-rigging utilities, and engineering calculators. Pure local computation — no key, no third-party service, instant. Geometric estimate — allow for nesting and freeboard. 3 compute endpoints. For capstan friction use a capstan API; for block-and-tackle a pulley API.
api.oanor.com/winch-api
Mobile Crane Lift API
Mobile-crane lift-planning maths as an API, computed locally and deterministically — the load-moment, tipping-capacity and outrigger-pad numbers a crane operator, lift planner or rigging engineer checks a pick with. The load-moment endpoint gives the load × its working radius (the horizontal distance from the slew centre to the hook), the single figure a crane's rated-capacity limiter watches: a 5-tonne load at 8 m is a 40 tonne-metre moment, the same as 10 tonnes at 4 m, which is why chart capacity falls steeply as the boom luffs out — moment, not weight, tips the crane. The capacity endpoint gives a simplified tipping balance about the fulcrum: the load that just tips = counterweight × its radius ÷ the load radius, and the rated safe load is a stability fraction of that (~75 % on outriggers, ~66 % on crawlers per the standards) — a teaching/sanity figure that ignores the boom and superstructure, never a substitute for the load chart. The outrigger-pad endpoint sizes the float: required pad area = the outrigger leg load ÷ the soil's allowable bearing pressure (and the side of a square mat), since overloading weak ground is a leading cause of overturns — a 30-tonne leg on 200 kPa wants about a 1.2 m square mat. Everything is computed locally and deterministically, so it is instant and private. Ideal for lift-planning and rigging tools, construction and crane-operations apps, and site-safety utilities. Pure local computation — no key, no third-party service, instant. Simplified — always use the manufacturer load chart. 3 compute endpoints. For sling and WLL loads use a rigging API.
api.oanor.com/crane-api
Elevator Traction API
Traction-elevator engineering maths as an API, computed locally and deterministically — the counterweight, hoist-motor and rope-traction numbers a lift engineer or building-services designer sizes a passenger elevator with. The counterweight endpoint gives the balancing mass = the empty car plus a fraction of the rated load (the overbalance, typically 40–50 %, 45 % common), so a 1,000 kg car rated for 1,000 kg uses a 1,450 kg counterweight — the car and weight balance near half load and the machine is sized for the worst-case imbalance, not the full load. The motor-power endpoint uses that: because the counterweight cancels most of the car, the motor only lifts the out-of-balance load = rated load × (1 − overbalance), so power = that × g × speed ÷ efficiency (~65–75 % geared) — a 1,000 kg lift at 1.5 m/s needs only about 11–12 kW, half what a counterweight-less hoist would draw. The traction-ratio endpoint checks the friction grip: a traction elevator moves the ropes by friction over the sheave, so the available traction (e^(μθ), the capstan equation) must beat the T1/T2 tension ratio at both worst cases — a full car at the bottom and an empty car at the top — and it returns the governing ratio. Everything is computed locally and deterministically, so it is instant and private. Ideal for lift-design and building-services tools, vertical-transport and MEP utilities, and engineering calculators. Pure local computation — no key, no third-party service, instant. Sizing estimates — follow the lift code and maker data. 3 compute endpoints. For block-and-tackle use a pulley API; for capstan friction a capstan API.
api.oanor.com/elevator-api
Railway Tractive Effort API
Railway train-performance maths as an API, computed locally and deterministically — the tractive-effort, resistance and adhesion numbers a railway engineer, train planner or rail-sim developer rates motive power with. The tractive-effort endpoint gives the pulling force a locomotive develops = 375 × horsepower × efficiency ÷ speed (mph), the classic hyperbolic curve where a constant-power loco pulls hardest at low speed and tapers as it accelerates — 4,000 hp at 25 mph and 82 % efficiency is about 49,200 lbf at the rail. The resistance endpoint gives the forces a train fights: grade resistance ≈ 20 lb per ton per 1 % of grade (the weight component along the slope, the dominant force on a hill — a 5,000-ton train on a 1 % grade fights 100,000 lbf) plus curve resistance ≈ 0.8 lb per ton per degree of curve from flange friction. The adhesion endpoint gives the hard ceiling: however much power a loco has, it can only pull as hard as the wheels grip — maximum starting tractive effort = the adhesion coefficient (≈ 0.25 dry, more with sand) × the weight on the driving wheels, so 200 tons on the drivers is about 100,000 lbf before slip. Everything is computed locally and deterministically, so it is instant and private. Ideal for rail-operations and motive-power planning tools, train-simulator and railfan apps, and transport-engineering utilities. Pure local computation — no key, no third-party service, instant. Excludes the speed-dependent Davis rolling/air resistance. 3 compute endpoints. For highway curve geometry use a horizontal-curve API.
api.oanor.com/railway-api
Sea Horizon API
Sea-horizon and visibility maths as an API, computed locally and deterministically — the distance-to-horizon, geographic-range and dip numbers a mariner, coastal navigator or marine app works sightings with. The horizon endpoint gives the distance to the sea horizon ≈ 1.169·√(height of eye in feet) nautical miles, including the standard atmospheric refraction that bends the line of sight a little past the geometric edge — at 9 ft of eye height the horizon is about 3.5 nm off — together with the dip, how far below true horizontal that watery edge lies (≈ 0.97′·√h), the correction subtracted from a sextant altitude shot to the sea horizon. The geographic-range endpoint gives how far off a light or landmark first peeps over the horizon = the sum of two horizon distances, your own plus the object's: 1.169·(√h_eye + √h_object), so a 100 ft lighthouse from a 9 ft cockpit lifts above the sea at about 15 nm — purely geometric, before the light's own luminous range and the visibility. The object-height endpoint inverts it: how tall a tower, light or headland must stand to break the horizon at a target range, or how close you must be before a known landmark appears. Everything is computed locally and deterministically, so it is instant and private. Ideal for marine-navigation and chartplotter apps, coastal-pilotage and lighthouse tools, and sailing utilities. Pure local computation — no key, no third-party service, instant. Geometric/refraction model. 3 compute endpoints. For great-circle distance use a geo-distance API; for set & drift a set-and-drift API.
api.oanor.com/horizon-api
Set and Drift API
Current-sailing (set and drift) navigation maths as an API, computed locally and deterministically — the course-over-ground, course-to-steer and current numbers a mariner, navigator or marine app plots a passage with. The course-made-good endpoint adds the boat's velocity through the water to the current vector to give the real track: the course over ground (COG) and speed over ground (SOG), with the drift angle the current pushes you off your nose — steering 090° through the water at 10 knots with a 2-knot current setting north comes out around 079° over the ground at 10.2 knots. The course-to-steer endpoint solves the other way: the heading to steer to make good a desired ground track, steering up-current to cancel the across-track set (sin(H−T) = −drift·sin(set−track) ÷ speed), and the resulting SOG — usually slower into a current, faster with it astern, and impossible if the current across the track beats your speed. The current endpoint finds the set and drift from the offset between a dead-reckoning position and an observed fix: the set is the bearing DR-to-fix and the drift is that distance ÷ the elapsed time, ready to carry forward. Everything is computed locally and deterministically, so it is instant and private. Ideal for marine-navigation and chartplotter apps, sailing and boating tools, and maritime-training utilities. Pure local computation — no key, no third-party service, instant. Degrees true. 3 compute endpoints. For great-circle distance use a geo-distance API; for tide times a tides API.
api.oanor.com/setanddrift-api
Hay Bale Weight API
Hay and forage bale maths as an API, computed locally and deterministically — the weight, dry-matter and feed-supply numbers a rancher, hay producer or livestock manager plans winter feed with. The round-bale endpoint gives the weight from the cylinder volume (π·r²·width) × the dry-matter density (typically ~9–12 lb/ft³ for cured hay), so a 5×5 ft bale runs about 1,000 lb, and reports the dry-matter weight (≈88 % of as-fed) that actually feeds the animals — buy and ration on dry matter, not gate weight. The square-bale endpoint gives the weight of a rectangular bale from its length, width and height (÷ 1,728 for cubic feet from inches) × the density — a typical 14×18×36-inch small square is about 50 lb, big 3×3 or 4×4 ft bales hundreds — with a reminder that high moisture both adds weight and risks mould and barn-fire heating. The feed-supply endpoint sizes the stack: feed needed = head × daily intake × days (cattle eat ~2–2.5 % of bodyweight, about 25–30 lb of dry matter for a beef cow), and bales = that ÷ the bale weight, so 30 cows for 120 days at 30 lb is about 108 thousand-pound bales — add 10–20 % for feeding waste. Everything is computed locally and deterministically, so it is instant and private. Ideal for ranch- and farm-management tools, hay-trading and livestock apps, and ag calculators. Pure local computation — no key, no third-party service, instant. US units; densities are estimates. 3 compute endpoints. For grain storage use a grain-bin API; for rotational grazing a grazing API.
api.oanor.com/baleweight-api
Seeding Rate API
Planting seed-rate maths as an API, computed locally and deterministically — the plant-population, seed-spacing and seeding-rate numbers a farmer, agronomist or precision-ag tool sets a planter or drill to. The population endpoint gives the plants per acre = 6,272,640 ÷ (row spacing × in-row seed spacing) in inches (the 6,272,640 is the square inches in an acre), so 30-inch rows with seeds 6 inches apart give about 34,800 plants per acre — closer spacing raises the population and the competition. The seed-spacing endpoint runs it the other way: the in-row spacing for a target population = 6,272,640 ÷ (target plants × row spacing), so 35,000 plants per acre in 30-inch rows means a seed about every 6 inches, the value to set on a singulating meter or seed-rate drive. The seeding-rate endpoint gives the pounds of seed per acre = the target population ÷ the germination rate ÷ the seeds per pound, over-seeding for the seeds that never come up — 35,000 plants of a 1,500-seeds-per-lb crop at 95 % germination needs about 24.6 lb/acre, working from the seed lot's own tag. Everything is computed locally and deterministically, so it is instant and private. Ideal for precision-ag and farm-management tools, planter-calibration and agronomy apps, and seed-retail utilities. Pure local computation — no key, no third-party service, instant. US units. 3 compute endpoints. For sprayer rates use a spray API; for fertiliser a fertilizer API.
api.oanor.com/seedrate-api
Sprayer Calibration API
Agricultural sprayer maths as an API, computed locally and deterministically — the calibration, coverage and tank-mix numbers a farmer, agronomist or custom applicator dials a boom sprayer in with. The calibration endpoint gives the broadcast application rate GPA = 5940 × the per-nozzle flow (GPM) ÷ (ground speed in mph × nozzle spacing in inches), the 5940 converting the units for a full-coverage boom — so a 0.4 GPM nozzle at 5 mph on 20-inch spacing lays down about 24 gallons per acre, and driving faster or spacing nozzles wider drops the rate. The coverage endpoint gives the acres a tank covers (tank ÷ GPA) and, for a field size, the total spray volume and the number of tank-loads, with the partial last fill called out so it can be mixed to the leftover acres. The product endpoint gives the pesticide or nutrient to add per tank = the acres a tank covers × the label rate per acre (in whatever unit the rate uses — ounces, pints, pounds), plus the total product for the field. Everything is computed locally and deterministically, so it is instant and private. Ideal for precision-ag and farm-management tools, sprayer-calibration and tank-mix apps, and ag-retail utilities. Pure local computation — no key, no third-party service, instant. Always follow the product label and calibrate with a real catch test. 3 compute endpoints. For fertiliser rates use a fertilizer API; for sprinkler/irrigation design an irrigation API.
api.oanor.com/spray-api
RTD Pt100 Sensor API
RTD (resistance-temperature-detector) sensor maths as an API, computed locally and deterministically with the IEC 60751 Callendar–Van Dusen equation — the resistance, temperature and tolerance numbers an instrumentation or controls engineer reads a Pt100 or Pt1000 with. The resistance endpoint gives the sensor resistance from temperature: above 0 °C, R = R₀·(1 + A·T + B·T²) with A = 3.9083×10⁻³ and B = −5.775×10⁻⁷; below 0 °C a third term adds C·(T−100)·T³ — a standard Pt100 (100 Ω at 0 °C) reads 138.51 Ω at 100 °C and 80.31 Ω at −50 °C, and a Pt1000 is ten times that. The temperature endpoint inverts it to turn a measured resistance back into temperature — analytically above 0 °C, iteratively below — exactly what a transmitter does with the bridge reading, and a reminder that a 3- or 4-wire connection cancels the lead-wire resistance so it does not read as extra degrees. The tolerance endpoint gives the IEC 60751 accuracy band in both °C and Ω by class — AA ±(0.10 + 0.0017·|T|), A ±(0.15 + 0.002·|T|), B ±(0.30 + 0.005·|T|), C ±(0.60 + 0.010·|T|) — the error growing with distance from 0 °C. Everything is computed locally and deterministically, so it is instant and private. Ideal for instrumentation and controls software, data-logger and transmitter firmware, calibration and industrial-IoT tools. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For NTC thermistors use a thermistor API; for thermocouples a thermocouple API.
api.oanor.com/rtd-api
Sauna Heater API
Sauna-heater sizing maths as an API, computed locally and deterministically — the heater-power, stone-mass and electrical numbers a sauna builder, installer or wellness retailer sizes a cabin with. The heater-size endpoint gives the power: about 1 kW per 1.3 m³ of well-insulated cabin (room volume ÷ 1.3), with cold surfaces the heater must also warm — a glass door or wall, bare stone, tile or uninsulated timber — adding roughly 1.2 m³ of equivalent volume per square metre, so a 10 m³ room with a 2 m² glass door wants about a 10 kW heater, rounded up to the next standard size. The stones endpoint gives the recommended sauna-stone mass, roughly 10–20 kg per kW (more stones for a softer, steamier löyly, fewer for a faster warm-up), with a note to use proper peridotite/olivine stones stacked loosely. The electrical endpoint gives the current the resistive heater draws — power ÷ voltage for single-phase or ÷ (√3 × voltage) for three-phase, since most heaters above ~4 kW are wired three-phase to keep the per-leg current and cable size down — to size the breaker and the dedicated RCD-protected circuit. Everything is computed locally and deterministically, so it is instant and private. Ideal for sauna and wellness retailers, home-improvement and DIY tools, and HVAC/electrical estimating apps. Pure local computation — no key, no third-party service, instant. Estimates — follow the heater maker's chart and local wiring code. 3 compute endpoints. For steam-boiler maths use a boiler API; for room heat loss a U-value API.
api.oanor.com/saunaheater-api
Hot Air Balloon Lift API
Hot-air-balloon lift maths as an API, computed locally and deterministically — the thermal-lift, envelope-temperature and air-density numbers a balloon pilot, designer or physics teacher works a flight out with. The lift endpoint gives the buoyant lift from heating the air: gross lift = envelope volume × (outside air density − inside air density), the densities from the ideal-gas law — a 2,500 m³ envelope at 100 °C on a 15 °C day lifts about 698 kg gross, from which you subtract the envelope, basket, burner and fuel for the payload, and the hotter the air and colder the day the more it lifts. The required-temp endpoint inverts it: to carry a target lift the inside air must reach a particular density and so a particular temperature, with a check that it stays under the ~120 °C that nylon envelopes can take — the everyday pre-flight question of whether the balloon can lift today's crew and fuel. The air-density endpoint gives the moist-air density ρ = (P − 0.378·Pv) ÷ (R·T), and explains the counter-intuitive fact that humid air is LESS dense than dry air, slightly cutting the lift. Everything is computed locally and deterministically, so it is instant and private. Ideal for ballooning and aviation tools, STEM and physics-education apps, and buoyancy calculators. Pure local computation — no key, no third-party service, instant. Idealised dry-lift model. 3 compute endpoints. For Archimedes flotation in water use a buoyancy API; for party-balloon helium lift a balloon API.
api.oanor.com/hotairballoon-api
Water Hammer API
Water-hammer (hydraulic-transient) maths as an API, computed locally and deterministically — the surge-pressure, wave-speed and valve-timing numbers a piping or plumbing engineer guards a system with. The surge endpoint applies the Joukowsky equation Δp = ρ · a · Δv: a sudden stop of the flow spikes the pressure by the fluid density × the pressure-wave speed × the velocity change — stopping 2 m/s of water at a ≈ 1200 m/s adds about 24 bar (348 psi), far above the line pressure, which is what bangs the pipes and can split fittings. The wave-speed endpoint gives that pressure-wave speed: a = √(K/ρ) in a rigid pipe (≈ 1,480 m/s for water), slowed in a real elastic pipe to √(K/ρ) ÷ √(1 + (K·D)/(E·t)) — a thin or plastic pipe gives a lower wave speed and a gentler surge, which is why PVC tolerates hammer better than steel. The critical-time endpoint gives 2L/a, the round-trip time of the wave: close a valve faster than this and you get the full Joukowsky surge, slower and the returning relief wave eats into it, so sizing closure times (or fitting a surge tank or air chamber) above the critical time is the standard cure. Everything is computed locally and deterministically, so it is instant and private. Ideal for piping- and plumbing-design tools, pump-station and pipeline-surge analysis, and hydraulic-engineering utilities. Pure local computation — no key, no third-party service, instant. Idealised single-pipe transient. 3 compute endpoints. For steady pipe pressure drop use a Darcy API; for pump head and affinity a pump API.
api.oanor.com/waterhammer-api
HVAC Air-Side Load API
HVAC air-side heat maths as an API, computed locally and deterministically with the classic standard-air factors — the sensible, latent and airflow numbers a mechanical engineer or HVAC technician sizes ducts and equipment with. The sensible endpoint gives the sensible heat an airflow carries to change temperature: Qs = 1.08 × CFM × ΔT (dry-bulb difference), where the 1.08 bundles standard-air density and specific heat — 2,000 CFM across a 20 °F difference is 43,200 BTU/hr, 3.6 tons — with the result in BTU/hr, tons and kW. The latent endpoint gives the latent (moisture) heat: Ql = 0.68 × CFM × ΔW, where ΔW is the humidity-ratio difference in grains of water per pound of dry air, the dehumidification part of a cooling load that runs high in humid climates and from people and cooking, and why air conditioners are sized on total, not just temperature. The airflow endpoint inverts the sensible relation: CFM = sensible load ÷ (1.08 × ΔT), the supply air needed at a chosen supply-to-room temperature difference (comfort cooling runs ~18–22 °F below room), the number that sets fan and duct size — sanity-checked against ~400 CFM per ton. Everything is computed locally and deterministically, so it is instant and private. Ideal for HVAC-design and load-calc tools, mechanical-estimating and commissioning utilities, and building-engineering apps. Pure local computation — no key, no third-party service, instant. Standard-air factors — adjust for altitude. 3 compute endpoints. For room rule-of-thumb sizing use an HVAC API; for moist-air properties a psychrometric API; for duct sizing a ductwork API.
api.oanor.com/hvacload-api
Earthwork Volume API
Earthwork volume maths as an API, computed locally and deterministically — the cut/fill-quantity and soil-state numbers a civil engineer, estimator or grading contractor runs for a road, trench or site. The average-end-area endpoint gives the volume between two cross-sections = the mean of the two end areas × the distance between them, ÷ 27 for cubic yards — the everyday earthwork-quantity method you sum section by section down an alignment (a 100 ft²/150 ft² pair 100 ft apart is about 463 cy). The prismoidal endpoint gives the more accurate Simpson volume = length ÷ 6 × (A₁ + 4·A_mid + A₂) using the true middle-section area, preferred for payment quantities where the average-end-area over-estimate would matter. The soil-state endpoint converts between the three states earth passes through: loose = bank × (1 + swell %) (excavating loosens it, ~25 %, so you haul more cubic yards than you cut) and compacted = bank × (1 − shrinkage %) (placing and compacting shrinks it, ~10 %) — which is why a balanced cut-and-fill needs more bank cut than the compacted fill, with the load factor for truck sizing. Everything is computed locally and deterministically, so it is instant and private. Ideal for grading and site-work estimating, surveying and civil-design tools, and earthmoving calculators. Pure local computation — no key, no third-party service, instant. US units (ft², ft, cy). 3 compute endpoints. For tank/storage volumes use a tank API; for concrete mix a concrete API.
api.oanor.com/earthwork-api
Highway Vertical Curve API
Vertical (parabolic) road-curve geometry as an API, computed locally and deterministically — the K-value, profile-elevation and design-length numbers a highway engineer or surveyor lays a crest or sag curve out with. The geometry endpoint takes the incoming and outgoing grades and the length and returns the algebraic grade difference A = g2 − g1 (negative is a crest, positive a sag), the K value = length ÷ |A| (the headline number on every design chart), the high or low point offset −g1·L/A from the PVC, and — given the PVI station and elevation — the PVC and PVT coordinates and the turning-point station and elevation. The elevation endpoint evaluates the parabola at any station: elevation = PVC elevation + (g1/100)·x + (A/(200·L))·x², with the instantaneous grade g1 + (A/L)·x that sweeps smoothly from g1 to g2 — the smooth change of grade that makes the ride and sight line comfortable. The min-length endpoint gives the AASHTO minimum length for stopping sight distance: crest L = A·S² ÷ 2158 and sag (headlight) L = A·S² ÷ (400 + 3.5·S), with the controlling K, because a crest hides the road over the hump and a sag limits the headlight reach at night. Everything is computed locally and deterministically, so it is instant and private. Ideal for highway- and rail-design tools, surveying and civil-engineering utilities, and CAD/GIS profile work. Pure local computation — no key, no third-party service, instant. US units (ft, %, mph). 3 compute endpoints. For horizontal curves use a horizontal-curve API; for slope conversion a slope API.
api.oanor.com/verticalcurve-api
Highway Horizontal Curve API
Horizontal road-curve geometry as an API, computed locally and deterministically — the curve-element, stationing and design-radius numbers a highway engineer, surveyor or civil-design tool lays out a road or railway curve with. The geometry endpoint takes the radius and the intersection (deflection) angle and returns the full simple circular curve: the tangent T = R·tan(Δ/2), the curve length L = R·Δ in radians, the long chord LC = 2R·sin(Δ/2), the middle ordinate M = R(1−cos(Δ/2)) and the external distance E = R(sec(Δ/2)−1), plus the degree of curve (arc definition) = 5729.578 ÷ R, the US shorthand for sharpness. The stations endpoint lays the curve out from the PI: the PC (point of curvature) = PI − tangent and the PT (point of tangency) = PC + curve length — and it reminds you the PT is reached along the arc, not by adding the tangent again. The min-radius endpoint gives the minimum radius for a design speed (AASHTO) R = V² ÷ (15·(e + f)), where e is the superelevation and f the side-friction factor, the banking-plus-grip that holds a vehicle in the turn. Everything is computed locally and deterministically, so it is instant and private. Ideal for highway- and rail-design tools, surveying and civil-engineering utilities, and CAD/GIS road layout. Pure local computation — no key, no third-party service, instant. US units (ft, mph). 3 compute endpoints. For slope and grade use a slope API; for open-channel drainage a Manning API.
api.oanor.com/horizontalcurve-api
Telescope Optics API
Telescope optics maths as an API, computed locally and deterministically — the magnification, exit-pupil and resolving-power numbers an amateur astronomer or stargazing-app developer picks gear and eyepieces with. The magnification endpoint gives magnification = the telescope's focal length ÷ the eyepiece focal length (a 1000 mm scope with a 10 mm eyepiece is 100×), the focal ratio, and — from the aperture — the useful range from about the aperture in mm ÷ 7 (lowest useful, a 7 mm exit pupil) up to roughly 2× the aperture in mm, beyond which the image only dims and blurs; pass an eyepiece apparent field and it returns the true field of view. The exit-pupil endpoint gives aperture ÷ magnification, the width of the light beam leaving the eyepiece — a big 4–7 mm exit pupil for bright wide views of nebulae, a small 0.5–2 mm for the Moon and planets at high power. The resolution endpoint gives the Dawes limit ≈ 116 ÷ aperture(mm) and the slightly stricter Rayleigh limit ≈ 138 ÷ aperture in arcseconds, plus the limiting magnitude ≈ 2.7 + 5·log₁₀(aperture mm) — bigger glass splits finer doubles and reaches fainter stars, though seeing usually caps real resolution near 1 arcsecond. Everything is computed locally and deterministically, so it is instant and private. Ideal for astronomy and stargazing apps, telescope-shop and eyepiece-calculator tools, and observing-planner utilities. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For camera/thin-lens imaging use a lens API; for stellar magnitudes a star-magnitude API.
api.oanor.com/telescope-api
Powerlifting Score API
Powerlifting strength-score maths as an API, computed locally and deterministically — the Wilks, DOTS and IPF GL numbers a meet, gym or training app uses to compare lifters across bodyweights and sexes. The wilks endpoint gives the classic Wilks coefficient (1996) and score: total × 500 ÷ a fifth-order polynomial in bodyweight, with separate male and female curves — long the federation standard for "best lifter", a 100 kg man totalling 600 kg scores about 365. The dots endpoint gives the modern DOTS score (2019), the same total × 500 ÷ polynomial idea but fitted to updated data with a fourth-order curve that is fairer across the weight classes and not skewed to the middleweights, now the default in most raw meet software. The ipf-gl endpoint gives the International Powerlifting Federation's current GL Points (2020): 100 × total ÷ (A − B·e^(−C·bodyweight)), with separate constants for sex and for raw (classic) versus equipped lifting, the official metric at IPF championships. Everything is computed locally and deterministically, so it is instant and private. Ideal for meet-management and scoring software, gym leaderboards and training-log apps, and strength-sport tools. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For one-rep-max estimation and plate loading use a strength-training API.
api.oanor.com/powerlifting-api
Cable Tray Fill API
Cable-tray fill engineering maths as an API, computed locally and deterministically from NEC Article 392 — the allowable-fill, single-layer and tray-width numbers an electrician, estimator or designer runs for a tray run. The fill endpoint applies NEC 392.22(A)(1) Column 1 for multiconductor power and lighting cables no larger than 4/0 in a ladder or ventilated-bottom tray: the total cable cross-sectional area is capped at the tray width × 7/6, so a 12-inch tray allows 14 in² — sum every cable's csa, get the percentage fill and whether it is within code, with the spare area left. The large-cable endpoint covers cables 4/0 and larger, which must lie in a single layer with the sum of their diameters not exceeding the tray width — no stacking — so it returns the spare width and the code check. The min-width endpoint inverts the rule to size the tray: minimum width = cable area × 6/7, rounded up to a standard 6/9/12/18/24/30/36-inch width, leaving room for spare capacity and future cables. Everything is computed locally and deterministically, so it is instant and private. Ideal for electrical-design and estimating tools, industrial and OSP utilities, and code-check calculators. Pure local computation — no key, no third-party service, instant. Ladder/ventilated trays; solid-bottom and mixed fills use the other NEC columns, and ampacity must be derated for fill. 3 compute endpoints. For conduit and box fill use a conduit API.
api.oanor.com/cabletray-api
Off-Grid Solar Sizing API
Off-grid solar system-sizing maths as an API, computed locally and deterministically — the battery-bank, solar-array and charge-controller numbers an RV, cabin, boat or off-grid homeowner sizes a system with. The battery-bank endpoint gives the storage you need = (daily load × days of autonomy) ÷ (depth of discharge × round-trip efficiency), then ÷ the system voltage for amp-hours: the autonomy carries you through cloudy days and the depth-of-discharge limit protects the cells (lead-acid ~50 %, lithium 80–100 %, which is why lithium banks run smaller), so a 2 kWh/day load at 12 V with 2 days autonomy, 50 % DoD and 85 % efficiency needs about 785 Ah. The array endpoint gives the panels = daily energy ÷ (peak sun hours × system efficiency), where peak sun hours is the day's irradiance as equivalent full-sun hours (~3–6 by place and season) and the efficiency rolls up controller, wiring, heat and dust losses — about 670 W for that load at 4 sun hours and 75 %. The charge-controller endpoint sizes the controller = array watts ÷ battery voltage × a 1.25 safety factor, so a 700 W array on a 12 V bank wants roughly an 80 A controller. Everything is computed locally and deterministically, so it is instant and private. Ideal for solar-installer and DIY tools, RV/marine/cabin power planners, and renewable-energy calculators. Pure local computation — no key, no third-party service, instant. Size for the worst month. 3 compute endpoints. For solar irradiance and sun hours use a solar API; for battery runtime under load a battery API.
api.oanor.com/offgrid-api
Aircraft Fuel Planning API
Aircraft fuel-planning maths as an API, computed locally and deterministically — the endurance, range and fuel-required numbers a pilot, dispatcher or flight-sim developer plans a flight with, all honouring a reserve. The endurance endpoint gives how long you can fly = usable fuel ÷ burn rate, holding back a reserve (30 min day / 45 min night VFR, 45 min IFR is typical), so the usable endurance is the time you can actually plan to rather than the tanks-dry figure — 50 gallons at 10 gph is 5:00 total but 4:15 usable on a 45-minute reserve. The range endpoint turns that into distance = usable endurance × ground speed, so it lives or dies on the wind: a headwind cuts the ground speed and the range while burning the same fuel per hour, which is why you plan on the forecast ground speed, not the true airspeed. The fuel-required endpoint sizes the load for a leg = trip time × burn plus the reserve — 300 nm at 120 kt and 10 gph needs 25 gallons of trip fuel plus 7.5 reserve, 32.5 total — to which a real flight adds taxi and climb allowances. Everything is computed locally and deterministically, so it is instant and private. Ideal for flight-planning and EFB apps, dispatch and flight-school tools, flight-simulator utilities, and general-aviation calculators. Pure local computation — no key, no third-party service, instant. Add taxi/climb and a personal margin; confirm against tank capacity and weight-and-balance. 3 compute endpoints. For glide range use a glide-ratio API; for density altitude a density-altitude API.
api.oanor.com/fuelburn-api
Glide Ratio API
Aircraft glide-performance maths as an API, computed locally and deterministically — the glide-distance, glide-ratio and reachability numbers a pilot, flight-instructor or flight-sim developer works an engine-out or soaring problem with. The glide-distance endpoint gives the still-air distance you can cover = height above the ground × the glide ratio (L/D): from 5,000 ft at a 9:1 ratio you reach about 45,000 ft, ~7.4 nm, with the answer in feet, nautical miles and kilometres. The glide-ratio endpoint reads the slope straight off the polar — glide ratio = forward speed ÷ sink rate (1 knot ≈ 101.27 ft/min), so 60 kt at a 600 ft/min sink is about 10:1, a 5.6° glide path — and gliders reach 40–60:1, a light single ~9:1, an airliner ~17:1. The reach endpoint answers the practical question: the height needed to reach a field = distance ÷ glide ratio, the arrival height is what is left, and it only counts as making it if that clears a safety reserve (default 1,000 ft) for the circuit and approach. Everything is computed locally and deterministically, so it is instant and private. Ideal for flight-planning and EFB apps, gliding and soaring tools, flight-simulator and training utilities, and aviation-safety calculators. Pure local computation — no key, no third-party service, instant. Still-air estimates — adjust for wind, configuration and a margin. 3 compute endpoints. For density altitude use a density-altitude API; for runway wind components a crosswind API.
api.oanor.com/glideratio-api
Turbocharger Boost API
Turbocharger and boost engineering maths as an API, computed locally and deterministically — the pressure-ratio, charge-air and airflow numbers a tuner, engine builder or motorsport engineer sizes forced induction with. The pressure-ratio endpoint gives the compressor pressure ratio = absolute manifold pressure ÷ ambient = (atmospheric + boost) ÷ atmospheric, so 10 psi at sea level is a 1.68 ratio — the x-axis of every compressor map, which climbs at altitude where ambient pressure is lower. The charge-air endpoint shows why an intercooler matters: compressing air heats it (T₂ = T₁ × (1 + (PR^0.2857 − 1)/efficiency)), and hot air is less dense, so the real gain is the charge density ratio = pressure ratio × (T₁/T_charge), not the pressure ratio alone — 10 psi at 70 % compressor efficiency makes ~93 °C and a 1.37 density ratio with no intercooler, rising toward 1.6 once an intercooler claws back the heat, and the estimated power gain tracks the density. The airflow endpoint gives the engine mass airflow ≈ displacement × (rpm/2) × volumetric efficiency × charge density, in lb/min — the y-axis of the compressor map you plot against the pressure ratio to land in the efficient island and avoid surge or choke. Everything is computed locally and deterministically, so it is instant and private. Ideal for engine-tuning and turbo-sizing tools, dyno and data-logging apps, and motorsport calculators. Pure local computation — no key, no third-party service, instant. Sizing estimates — verify on a dyno. 3 compute endpoints. For engine displacement and compression use an engine API; for shop compressed air a compressor API.
api.oanor.com/turbo-api
Electric Motor FLA API
Electric-motor electrical maths as an API, computed locally and deterministically — the full-load-current, NEC-sizing and starting-current numbers an electrician, panel designer or estimator runs for every motor circuit. The full-load-amps endpoint gives the motor current from its power, voltage and phase: FLA = (output ÷ efficiency) ÷ (√3 × volts × power factor) for three-phase (drop the √3 for single-phase) — a 10 hp, 460 V, three-phase motor at 90 % efficiency and 0.85 power factor draws about 12.2 A — and it also returns the input kW and kVA. The sizing endpoint applies NEC Article 430 from the full-load current: branch-circuit conductors at 125 %, overload protection at 115–125 % by service factor, and branch-circuit short-circuit/ground-fault protection up to 250 % for an inverse-time breaker or 175 % for a time-delay fuse — the larger protection lets the inrush pass while the overload guards the windings. The starting endpoint gives the locked-rotor (inrush) current, about six times full-load for an across-the-line start, the figure that sets the voltage dip and why soft starters and VFDs exist. Everything is computed locally and deterministically, so it is instant and private. Ideal for electrical-design and estimating tools, panel-builder and field utilities, and engineering calculators. Pure local computation — no key, no third-party service, instant. Calculated values — use the NEC FLC tables for code work. 3 compute endpoints. For general three-phase power use a three-phase API; for conduit fill a conduit API.
api.oanor.com/motorfla-api
Photography Exposure API
Photographic exposure maths as an API, computed locally and deterministically — the exposure-value, equivalent-exposure and Sunny-16 numbers a photographer, camera-app developer or educator works the exposure triangle with. The exposure-value endpoint gives EV = log₂(aperture² ÷ shutter) and the ISO-100-normalised EV100 (subtracting log₂(ISO/100)) — every one-EV step is a stop, a doubling or halving of light — so bright sun reads about EV 15 and a typical interior EV 6–8, and equal-EV settings give the same exposure. The equivalent endpoint applies the reciprocity at the heart of the triangle: exposure ∝ shutter × ISO ÷ f-number², so when you close the aperture or drop the ISO it returns the new shutter that keeps the brightness constant — going from f/2.8 to f/5.6 needs four times the shutter time. The sunny16 endpoint gives the classic meterless rule: in bright sun shoot f/16 at about 1/ISO (1/125 s at ISO 100), opening up in stops for softer light — slight overcast f/11, overcast f/8, heavy overcast f/5.6, open shade f/4, and f/22 on snow or sand — solving the shutter for your chosen ISO and aperture. Everything is computed locally and deterministically, so it is instant and private. Ideal for camera and photography apps, exposure-calculator and teaching tools, and metering and automation utilities. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For depth of field and hyperfocal distance use a photography (optics) API.
api.oanor.com/exposure-api
Fiber Optic Link Budget API
Fiber-optic link-budget engineering maths as an API, computed locally and deterministically — the power-budget, loss and reach numbers a network or fibre engineer designs an optical link with. The power-budget endpoint gives the optical power budget = transmit power − receiver sensitivity (in dBm), the total loss the link can tolerate: a 0 dBm transmitter into a −23 dBm receiver gives a 23 dB budget, with the powers also shown in milliwatts. The loss endpoint adds up the real link loss from the fibre attenuation × length plus the connector and splice losses — single-mode fibre runs about 0.35 dB/km at 1310 nm and 0.20 dB/km at 1550 nm, each mated connector ~0.5 dB and each fusion splice ~0.1 dB — so 10 km of fibre with two connectors is 4.5 dB. The reach endpoint gives the maximum distance = (power budget − fixed losses − system margin) ÷ the fibre attenuation, reserving a margin (typically 3 dB) for ageing, bends and future repair splices so the link still works years on. Everything is computed locally and deterministically, so it is instant and private. Ideal for FTTx and data-centre link planning, network-engineering and OSP tools, fibre-survey and design utilities, and telecom calculators. Pure local computation — no key, no third-party service, instant. Loss-limited model — at high bit rates dispersion can cap distance first. 3 compute endpoints. For fibre numerical aperture and photonics use a fiber API; for RF line-of-sight a Fresnel-zone API.
api.oanor.com/opticalbudget-api
Seawater API
Seawater oceanography maths as an API, computed locally and deterministically from the standard equations — the density, freezing-point and chlorinity numbers an oceanographer, marine scientist or aquarist works with. The density endpoint gives the seawater density and σt from salinity and temperature using the full UNESCO EOS-80 one-atmosphere equation of state — it reproduces the official check value of 1027.675 kg/m³ at 35 PSU and 5 °C exactly — around 1,025 kg/m³, rising with salinity and falling with temperature, the two drivers of the ocean's density-driven circulation where cold salty water sinks. The freezing-point endpoint gives the freezing point from salinity (Millero): about −1.9 °C at the ocean's typical 35 ppt, and because salt also pushes the temperature of maximum density below freezing, seawater keeps overturning and cooling all the way down instead of stratifying like a freshwater lake — why the open ocean rarely freezes outside the polar seas. The chlorinity endpoint converts between salinity and chlorinity through the Knudsen relation S = 1.80655 × Cl, the classic titration measure that the constant major-ion proportions of seawater make reliable. Everything is computed locally and deterministically, so it is instant and private. Ideal for oceanography and marine-science tools, ocean-model and sensor pipelines, aquarium and aquaculture apps, and environmental dashboards. Pure local computation — no key, no third-party service, instant. Surface (atmospheric-pressure) forms. 3 compute endpoints. For the speed of sound in seawater use a sonar API; for general colligative properties a colligative-properties API.
api.oanor.com/seawater-api
Worm Gear API
Worm-gear engineering maths as an API, computed locally and deterministically — the ratio, lead-angle and efficiency numbers a machine designer or millwright sizes a worm drive with. The ratio endpoint gives the reduction = wheel teeth ÷ worm starts, so a single-start worm on a 40-tooth wheel is a big 40:1 reduction in one compact stage — the high ratio in a small package is the whole appeal of a worm drive. The geometry endpoint gives the lead (= starts × axial pitch, with axial pitch = π × module) and the lead angle = atan(lead ÷ (π × worm pitch diameter)), and tests for self-locking: a small lead angle (roughly under 5–6° for typical steel-on-bronze) means the wheel cannot back-drive the worm — invaluable for hoists and holding loads, at the cost of efficiency. The efficiency endpoint gives the mesh efficiency when the worm drives = tan(lead angle) ÷ tan(lead angle + friction angle), which is low for the small lead angles that give big ratios — often 50–70 %, which is why worm gears run warm and need good lubrication — while high-lead multi-start worms reach 90 %+; when the lead angle drops to the friction angle the drive becomes self-locking. Everything is computed locally and deterministically, so it is instant and private. Ideal for mechanical-design and gearbox tools, machine-building and CAD utilities, and engineering calculators. Pure local computation — no key, no third-party service, instant. Confirm self-locking dynamically — vibration can unlock a marginal pair. 3 compute endpoints. For spur gears use a spur-gear API; for a general ratio a gear-ratio API.
api.oanor.com/wormgear-api
RC Servo & PWM API
RC servo and PWM maths as an API, computed locally and deterministically — the pulse-width, angle and duty-cycle numbers a robotics, RC or embedded developer drives a servo with. The angle endpoint turns a pulse width into the servo angle: a hobby servo reads the width of the pulse (not a duty cycle), so the standard 1000–2000 µs maps linearly across the travel with 1500 µs at centre — angle = (pulse − min) ÷ the min-to-max span × the travel — and it flags when a pulse asks for more than the configured range so you do not drive the servo into its mechanical stops. The pulse endpoint runs it the other way, giving the pulse width a microcontroller should write for a target angle (90° is 1500 µs on a 1000–2000 µs / 180° servo), exactly what an Arduino-style servo library computes under the hood. The duty endpoint converts a pulse and a refresh frequency into the PWM period and duty cycle: a 50 Hz servo frame is 20 ms, so a 1500 µs pulse is just 7.5 % duty — the value a timer peripheral needs — and faster frames for digital servos or multirotor ESCs (e.g. 333 Hz) change it. Everything is computed locally and deterministically, so it is instant and private. Ideal for robotics and RC firmware, microcontroller and embedded tools, drone and animatronics projects, and maker calculators. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For stepper steps-per-mm use a stepper-motor API.
api.oanor.com/servo-api
Air-Fuel Ratio API
Air-fuel ratio and lambda maths for engine tuning as an API, computed locally and deterministically — the lambda, AFR and mixture numbers a tuner, ECU developer or motorsport engineer dials fuelling in with. The lambda endpoint turns a measured air-fuel ratio into lambda (the AFR divided by the fuel's stoichiometric AFR — 14.7 for gasoline) and the equivalence ratio φ = 1/lambda, classifying the mix as rich, stoichiometric or lean: a gasoline AFR of 13.0 is lambda 0.88, an 11.6 % rich mixture, the sort used at wide-open throttle for power and a cooler, safer burn. The afr endpoint runs it the other way — pick a target lambda and it gives the AFR the wideband should read — and because the AFR number is fuel-specific (E85's stoichiometric AFR is about 9.8, not 14.7) it always works from the right fuel, which is why pros tune in lambda when switching fuels. The mixture endpoint links the air the engine breathes to the fuel the injectors must add: give an air mass and a target lambda and it returns the fuel mass (or vice-versa), the heart of how an ECU sizes fuelling from measured airflow. Built-in stoichiometric ratios for gasoline, E10, E85, ethanol, methanol, diesel, LPG, propane, methane/CNG and hydrogen, or pass your own. Everything is computed locally and deterministically, so it is instant and private. Ideal for engine-tuning and dyno tools, ECU and standalone-management apps, motorsport and data-logging utilities. Pure local computation — no key, no third-party service, instant. 3 compute endpoints. For engine displacement and power use an engine API; for chemical reaction stoichiometry a stoichiometry API.
api.oanor.com/airfuel-api
Sonar & Underwater Sound API
Underwater-sound and sonar maths as an API, computed locally and deterministically — the speed, absorption and ranging numbers a marine engineer, sonar developer or oceanographer works with. The sound-speed endpoint gives the speed of sound in seawater from the Mackenzie nine-term equation: about 1,500 m/s — far faster than in air — rising with temperature, salinity and depth, so a profile of 25 °C, 35 ppt at 1,000 m gives 1,550.7 m/s. Because the speed varies with depth, sound rays bend and form the SOFAR channel that carries whale song and signals across whole oceans. The absorption endpoint gives Thorp's sound-absorption coefficient in dB per km against frequency, with the loss over a path: seawater swallows high frequencies fast, which is why long-range sonar and whale calls are low-pitched while high-frequency sonar gives sharp images only at short range. The echo-range endpoint turns an echo sounder's or sonar's two-way travel time into the range or depth — distance = sound speed × time ÷ 2 — so a one-second round trip at 1,500 m/s is a target 750 m away, its accuracy resting on the assumed sound speed. Everything is computed locally and deterministically, so it is instant and private. Ideal for sonar and hydrophone tools, marine-survey and bathymetry apps, ocean-acoustics research, and AUV/ROV navigation utilities. Pure local computation — no key, no third-party service, instant. Standard-equation estimates over their valid ranges. 3 compute endpoints. For the speed of sound in air and Mach use a Mach-number API; for decibels a sound-level API.
api.oanor.com/sonar-api
Stepper Motor API
Stepper-motor motion maths as an API, computed locally and deterministically — the steps-per-millimetre and speed numbers a 3D-printer, CNC or robotics builder configures a machine with. The leadscrew endpoint gives the steps per mm for a lead-screw or ball-screw axis: (motor steps per revolution × microstepping) ÷ the screw lead, so a 1.8° motor (200 steps) at 16 microsteps on an 8 mm-lead screw is 400 steps/mm with 2.5 µm of resolution — the value that goes straight into the firmware. The belt endpoint does the same for a belt-and-pulley axis, where the travel per motor turn is the pulley teeth × the belt pitch (GT2 belt = 2 mm), so a 20-tooth GT2 pulley gives the classic 80 steps/mm of a 3D-printer X/Y axis, and shows the speed-versus-precision trade of a bigger pulley. The speed endpoint turns a steps-per-mm and a step pulse rate into the axis speed in mm/s and mm/min — at 80 steps/mm a 40 kHz step rate is 500 mm/s, though the real limit is the motor stalling at high step rates and the controller pulse ceiling. It also notes that microstepping adds smoothness, not true accuracy, since torque per microstep falls. Everything is computed locally and deterministically, so it is instant and private. Ideal for 3D-printer and CNC firmware setup, motion-control and robotics tools, and maker calculators. Pure local computation — no key, no third-party service, instant. Ideal-geometry estimates — leave a margin below the theoretical top speed. 3 compute endpoints. For CNC surface finish use a CNC-finish API; for gear ratios a gear-ratio API.
api.oanor.com/steppermotor-api
Battery Pack API
Battery-pack design maths as an API, computed locally and deterministically — the voltage, capacity, energy, current and charge-time numbers an EV, e-bike, solar or robotics pack builder lays out a battery with. The configuration endpoint turns a series-parallel cell layout into the pack: cells in series add their voltages (the series count sets the pack voltage) and cells in parallel add their amp-hours (the parallel count sets the capacity), with the energy in watt-hours = voltage × capacity — a 13S4P pack of 3.6 V / 3.5 Ah cells is 46.8 V, 14 Ah and about 655 Wh from 52 cells, and it also reports the full-charge voltage (series × 4.2 V for Li-ion) to size the charger and BMS. The c-rate endpoint relates current to capacity both ways — give a C-rate to get the current, or a current to get the C-rate — because 1C draws or charges the whole capacity in an hour, so a 14 Ah pack at 2C is 28 A, and it returns the power if you pass the pack voltage. The charge-time endpoint gives the time to charge between two states of charge from the charge current. Everything is computed locally and deterministically, so it is instant and private. Ideal for EV and e-bike builders, solar and off-grid storage tools, robotics and drone packs, and battery-engineering apps. Pure local computation — no key, no third-party service, instant. Pack-design estimates — real cells taper on charge and sag under load. 3 compute endpoints. For runtime under a load use a battery API; for EV charging an EV-charging API.
api.oanor.com/batterypack-api
Hydraulic Cylinder API
Hydraulic-cylinder engineering maths as an API, computed locally and deterministically — the force, speed and oil-volume numbers a fluid-power designer, machine builder or hydraulics technician sizes a cylinder with. The force endpoint gives the push and pull from the bore, rod diameter and working pressure: extending, the oil acts on the full bore area, so the cylinder is strongest pushing out; retracting, it acts only on the annulus left by the rod, giving less force — a 100 mm bore with a 56 mm rod at 160 bar pushes about 125.7 kN out but pulls only 86.3 kN back, which is why a press or an excavator does its hard work on the extend stroke. The speed endpoint gives the piston speed from the pump flow (speed = flow ÷ area), so extending is the slower stroke and retracting the faster, the trade-off every circuit designer balances against force. The volume endpoint gives the swept oil volume per stroke for extend and retract, the rod displacement and the bore-to-annulus area ratio — the differential (regeneration) ratio used to speed the extend stroke in a regen circuit — so the pump, tank and lines can be sized for the larger volume. Everything is computed locally and deterministically, so it is instant and private. Ideal for fluid-power and machine-design tools, hydraulics-sizing calculators, mobile- and industrial-equipment utilities, and engineering apps. Pure local computation — no key, no third-party service, instant. Ideal-area estimates — allow for friction, back-pressure and efficiency. 3 compute endpoints. For Pascal force-multiplication use a hydraulics API; for valve sizing a valve-flow (Cv/Kv) API.
api.oanor.com/hydrauliccylinder-api
Press Fit API
Interference (press and shrink) fit engineering maths as an API, computed locally and deterministically from the Lamé thick-wall equations — the contact-pressure, holding-capacity and assembly-temperature numbers a mechanical designer or machinist sizes a shaft-and-hub joint with. The pressure endpoint gives the contact pressure that builds at the interface from the diametral interference, the shaft and hub diameters and the elastic modulus, plus the tensile hoop stress at the hub bore — the highest stress in the joint, which a thin hub can split if it exceeds the yield: a 50 mm solid steel shaft in a 100 mm hub with 0.05 mm interference makes about 75 MPa of contact pressure and 125 MPa of bore hoop stress, and doubling the interference doubles the pressure. The holding endpoint turns that pressure into the axial push-out force and the transmissible torque through the friction at the interface (force = pressure × contact area × friction, torque = force × shaft radius), the figures that decide whether the joint slips under load. The assembly-temperature endpoint gives the heating (hub) or cooling (shaft) temperature change for a shrink fit — ΔT = (interference + clearance) ÷ (α × diameter) — so the part slides on freely and grips as it returns to temperature. Everything is computed locally and deterministically, so it is instant and private. Ideal for mechanical-design and machine-building tools, manufacturing and CAD utilities, and engineering calculators. Pure local computation — no key, no third-party service, instant. Same-material Lamé estimates — verify against the material yield with a safety factor. 3 compute endpoints. For thin-wall pressure-vessel stress use a pressure-vessel API.
api.oanor.com/pressfit-api
Ship Stability API
Ship initial-stability maths as an API, computed locally and deterministically — the metacentric-height, righting-moment and rolling-period numbers a naval architect, ship officer or marine-surveyor judges a vessel by. The metacentric-height endpoint gives GM = KM − KG, the single most important stability figure: the height of the metacentre (set by the hull form and draught) above the centre of gravity (set by how the ship is loaded), with a classification from a dangerous negative GM, through tender and comfortable, to a stiff GM that rolls violently — naval architects aim for the middle, because too little is unsafe and too much is hard on cargo and crew. The righting-moment endpoint gives the small-angle righting arm GZ ≈ GM · sin(heel) and the righting moment (GZ × displacement) that pushes the ship back upright, valid up to roughly 7–10° before the true GZ curve bends away. The roll-period endpoint gives the natural transverse rolling period T = 2π·k / √(g·GM) from the GM and beam — the same relation sailors run in reverse as the rolling-period test, where a suddenly longer roll warns that GM has dropped. Everything is computed locally and deterministically, so it is instant and private. Ideal for naval-architecture and ship-design tools, marine-surveyor and loading-software utilities, maritime-training apps and stability dashboards. Pure local computation — no key, no third-party service, instant. Initial-stability estimates — use full KN cross-curves for large angles. 3 compute endpoints. For hull speed and design ratios use a sailing API.
api.oanor.com/shipstability-api
Apparent Temperature API
Apparent ("feels-like") temperature maths as an API, computed locally and deterministically from the official meteorological formulas — the three indices a weather app, dashboard or safety tool reports alongside the raw thermometer reading. The heat-index endpoint gives the US National Weather Service heat index from the air temperature and relative humidity using the full Rothfusz regression with its low- and high-humidity adjustments: because high humidity stops sweat evaporating, the body cannot shed heat and it feels far hotter than the thermometer — 90 °F at 70 % humidity feels like about 106 °F — and the result comes with a risk category from caution through danger to extreme danger. The wind-chill endpoint gives the 2001 NWS / Environment Canada wind chill from the temperature and wind speed, the cold-weather counterpart, with the frostbite-time risk band — 0 °F in a 15 mph wind feels like about −19 °F. The humidex endpoint gives Canada's warm-weather index from the temperature and humidity on the same Celsius scale, derived through the water-vapour pressure. Everything is returned in both °F and °C and computed locally and deterministically, so it is instant and private. Ideal for weather and outdoor apps, occupational-safety and sports tools, smart-home and HVAC dashboards, and climate and health utilities. Pure local computation — no key, no third-party service, instant. Human-comfort estimates in shade and light wind. 3 compute endpoints. For dew point and moist-air properties use a psychrometric API; for live conditions a weather API.
api.oanor.com/apparenttemp-api
Density Altitude API
Aviation atmosphere maths as an API, computed locally and deterministically using the exact International Standard Atmosphere relations — the numbers a pilot, dispatcher or flight-planning tool needs before take-off, not a rough rule of thumb. The density-altitude endpoint turns the field elevation, altimeter setting and outside air temperature into the pressure altitude (elevation + (29.92 − setting) × 1000) and then the density altitude — the altitude the air actually feels like to the wings and engine — computed from the true ISA density ratio rather than the approximate 120-foot-per-degree rule, with the ISA temperature deviation: on a hot, high day the density altitude soars, robbing lift and thrust and lengthening the take-off roll, the classic mountain-airport hazard. The true-airspeed endpoint gives TAS from calibrated airspeed as CAS ÷ √(density ratio), so the navigator gets the real speed through the air that climbs above the indicated reading with altitude and temperature. The isa endpoint returns the standard-atmosphere temperature, pressure, pressure and density ratios and the speed of sound at any altitude in the troposphere — the reference every altimeter, performance chart and engine rating is built on. Everything is computed locally and deterministically, so it is instant and private. Ideal for flight-planning and EFB apps, drone and UAV tools, aviation weather dashboards, and aerospace-engineering utilities. Pure local computation — no key, no third-party service, instant. Troposphere (≤ 36,089 ft); incompressible TAS. 3 compute endpoints. For the speed of sound and Mach use a Mach-number API; for runway wind components a crosswind API.
api.oanor.com/densityaltitude-api
Quarter Mile Drag API
Quarter-mile drag-strip maths as an API, computed locally and deterministically — the classic empirical estimates a racer, tuner or car enthusiast uses to relate a car's power and weight to its performance. The et endpoint gives the predicted elapsed time and trap speed from flywheel horsepower and race weight using the standard formulas — ET = 5.825 × (weight ÷ hp) raised to the one-third, trap speed = 234 × (hp ÷ weight) raised to the one-third — so a 3,000 lb car with 300 hp is predicted to run about 12.6 seconds at 109 mph, assuming a competent launch and decent traction. The horsepower endpoint runs it in reverse: because trap speed is set by power-to-weight and barely by the launch, hp ≈ weight × (trap ÷ 234) cubed is a popular way to estimate flywheel power straight off a timeslip. The power-to-weight endpoint gives the ratio that actually decides acceleration — in horsepower per pound, horsepower per ton and watts per kilogram, the cleanest cross-unit figure — with a performance class from commuter through hot hatch and supercar to hypercar, because a light 200 hp car can beat a heavy 400 hp one. Everything is computed locally and deterministically, so it is instant and private. Ideal for drag-racing and tuner apps, car-spec and comparison tools, automotive enthusiasts and motorsport dashboards. Pure local computation — no key, no third-party service, instant. Empirical estimates assuming a good launch and traction — not a timeslip. 3 compute endpoints. For aerodynamic drag use a drag API; for gearing use a gear-ratio API.
api.oanor.com/quartermile-api
Heat Pump COP API
Heat-pump and refrigeration performance maths as an API, computed locally and deterministically — the efficiency numbers an HVAC engineer, energy auditor or heat-pump installer actually works with. The cop endpoint gives the coefficient of performance and the US EER rating from the thermal capacity and the electrical power: a unit moving 7 kW of heat on 2 kW of electricity has a COP of 3.5 (an EER of 12), meaning 3.5 units of heating or cooling for every unit of electricity — which is why a heat pump beats resistance heating, where the COP is exactly 1. The carnot endpoint gives the unbeatable ideal limit set only by the absolute temperatures — heating = Th ÷ (Th − Tc), cooling = Tc ÷ (Th − Tc) in kelvin, where heating COP always equals cooling COP plus one — and, given a real COP, the second-law efficiency that says how close the machine runs to that ceiling; the smaller the temperature lift, the higher the limit, which is why ground-source and low-temperature systems beat air-source on a cold day. The capacity endpoint turns electrical power and a COP into the delivered heating or cooling in kilowatts, BTU per hour and tons of refrigeration — the extra energy over the electricity is pulled from the outside air, ground or water. Everything is computed locally and deterministically, so it is instant and private. Ideal for HVAC and refrigeration engineers, energy auditors, heat-pump and building-performance tools, and sustainability dashboards. Pure local computation — no key, no third-party service, instant. Estimates at the stated conditions — real COP falls as the temperature lift rises. 3 compute endpoints. For room sizing use an HVAC BTU API; for moist-air properties use a psychrometric API.
api.oanor.com/heatpump-api
Steam Boiler API
Steam-boiler engineering maths as an API, computed locally and deterministically — the three numbers a boiler operator, plant engineer or steam-system designer actually works with. The boiler-hp endpoint converts a required heat output into boiler horsepower (heat ÷ 33,475 BTU/hr, the standard definition), the equivalent steam output in pounds per hour "from and at" 212 °F (34.5 lb/hr per BHP) and the output in kilowatts — a 1,000,000 BTU/hr load is about 29.9 BHP or 1,031 lb/hr of steam. The factor-of-evaporation endpoint gives the real capacity for your feedwater: the factor = (the total heat of the steam − the feedwater heat) ÷ 970.3, always greater than one because the boiler must add the sensible heat to bring water up to boiling, so a boiler rated "from and at" 212 °F actually makes less with 60 °F feedwater — which is exactly why preheating feedwater with an economiser raises capacity and saves fuel. The blowdown endpoint gives the continuous blowdown rate to hold the boiler water within its dissolved-solids limit: blowdown = steam × feedwater TDS ÷ (boiler limit − feedwater TDS), with the cycles of concentration and the blowdown as a percentage of feedwater — better feedwater means more cycles, less blowdown and less wasted hot water. Everything is computed locally and deterministically, so it is instant and private. Ideal for boiler operators, steam-plant and HVAC engineers, energy auditors, water-treatment specialists and process-engineering tools. Pure local computation — no key, no third-party service, instant. Engineering estimates — verify against the manufacturer data and local code. 3 compute endpoints. For moist-air properties use a psychrometric API; for compressed air use a compressor API.
api.oanor.com/boiler-api
EV Charging API
Electric-vehicle charging maths as an API, computed locally and deterministically — the three numbers every EV driver and charging app actually needs. The charge-time endpoint gives how long a session takes: from the battery size and the gap between the starting and target state of charge it works out the energy to add and the time at a given charger power and efficiency — a 60 kWh battery from 20 % to 80 % on a 7.2 kW home charger at 90 % efficiency takes about 5.6 hours, and it reminds you that DC fast charging slows sharply above 80 % so road trips should be planned around the fast part of the curve. The range-added endpoint turns a charging session into miles: from the charger power, the minutes plugged in and the car's miles per kWh it gives the energy and range added, plus the handy "miles per hour of charging" figure — a 7 kW home charger adds roughly 22 mi/hr, a 150 kW DC station hundreds. The cost endpoint gives what a charge costs, correctly billing the energy drawn from the grid (the energy to the battery divided by the charging efficiency) times the price per kWh, with the effective cost per usable kWh — home overnight rates make EV miles very cheap while DC fast chargers cost several times more. Everything is computed locally and deterministically, so it is instant and private. Ideal for EV apps, route and trip planners, fleet and charging-station tools, charge-cost calculators and dashboards. Pure local computation — no key, no third-party service, instant. Estimates — real DC charging tapers above 80 % and cold weather cuts range. 3 compute endpoints. For battery runtime use a battery API; for generic energy cost use an energy-cost API.
api.oanor.com/evcharging-api
Drone Build API
Multirotor (drone) flight maths as an API, computed locally and deterministically — the thrust, efficiency and hover numbers an FPV builder or UAV designer dials a quadcopter in with. The thrust-weight endpoint gives the thrust-to-weight ratio, total motor thrust ÷ all-up weight: aim for at least 2:1 so the craft has authority to hold position and fight wind, with freestyle wanting 3–5:1 and heavy-lift living near 1.5:1 — four 800-gram motors on a 1,200-gram quad is a punchy 2.67:1. The disk-loading endpoint gives the rotor disk loading, weight ÷ total prop disk area, where lower is more efficient: big slow props move more air for less power, which is why endurance and cinematic rigs run large props at low disk loading. The hover-throttle endpoint gives the hover throttle, all-up weight ÷ total thrust — a good build hovers near 40–50 % leaving headroom for manoeuvres, while hovering above ~60 % means it is overweight, sluggish and runs hot. Everything is computed locally and deterministically, so it is instant and private. Ideal for FPV and drone-build apps, UAV-design and motor-selection tools, hobbyist calculators, and maker sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — bench-test motors at your voltage and prop. For battery runtime use a battery API.
api.oanor.com/drone-api
Pressure Washer API
Pressure-washer maths as an API, computed locally and deterministically — the cleaning-power, nozzle and water numbers a buyer or pro sizes and runs a machine by. The cleaning-units endpoint gives the cleaning power, PSI × GPM, with a duty class — both matter because pressure breaks the dirt loose and flow flushes it away, so a 3,000 PSI / 2.5 GPM machine (7,500 cleaning units) cleans far faster than the same pressure at 1.5 GPM. The nozzle endpoint gives the flow at a different pressure (a fixed nozzle flows with the square root of pressure) and the nozzle reaction force you feel, ≈ 0.0526 × GPM × √PSI in pounds — a few pounds on a consumer unit, enough on a big machine to need two hands. The water-usage endpoint gives the water used over a run, flow × time, in gallons and litres with an optional cost — a pressure washer actually uses far less water than a garden hose for the same cleaning. Everything is computed locally and deterministically, so it is instant and private. Ideal for pressure-washer shops and rental apps, cleaning-contractor and buying-guide tools, equipment calculators, and DIY sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — surface and detergent matter as much as the numbers.
api.oanor.com/pressurewasher-api
Solar Thermal API
Solar-thermal (solar hot water) maths as an API, computed locally and deterministically — the collector, sizing and storage numbers a solar installer or homeowner designs a hot-water system with. The output endpoint gives the useful daily heat a collector makes: area × the daily solar energy on it × the collector efficiency (flat-plate ~40–60 %, evacuated tubes higher), so a 40 ft² collector under 1,800 BTU/ft²/day at 50 % delivers about 36,000 BTU (10.5 kWh) — a family's hot water on a good day. The area endpoint sizes the collector for a demand: area = (daily gallons × 8.34 × the temperature rise) ÷ (irradiance × efficiency), so 60 gallons raised 70 °F needs about 39 ft² — sized for an average day with a backup heater, since a 60–80 % solar fraction is the economic sweet spot. The tank endpoint sizes solar storage at about 1.5 gallons per square foot of collector, big enough to bank a sunny afternoon without stalling the collector. Everything is computed locally and deterministically, so it is instant and private. Ideal for solar-installer and renewable-energy apps, hot-water-system design tools, home-energy calculators, and sustainability sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For the local solar resource use a solar-irradiance API; for pool heating use a pool API.
api.oanor.com/solarthermal-api
Pipe Insulation API
Pipe-insulation heat-loss maths as an API, computed locally and deterministically — the radial heat loss, thickness and energy-cost numbers a mechanical engineer or energy auditor sizes lagging with. The heat-loss endpoint gives the loss per linear foot through cylindrical insulation, Q/L = 2π·(k/12)·ΔT ÷ ln(r2/r1), where k is the insulation conductivity (BTU·in/hr·ft²·°F, ~0.25 for fibreglass), r1 the pipe radius and r2 the outer radius — a 2-inch line at 300 °F with one inch of fibreglass loses about 43 BTU/hr per foot, and because the relationship is logarithmic, doubling the thickness does not halve the loss. The thickness endpoint inverts it for a target loss: ln(r2/r1) = 2π·(k/12)·ΔT ÷ target, then thickness = r2 − r1, showing the economic-thickness point beyond which more material rarely pays. The annual-cost endpoint turns loss per foot into the yearly heat lost and fuel cost over a run of pipe, the number that justifies the lagging. Everything is computed locally and deterministically, so it is instant and private. Ideal for mechanical-design and energy-audit apps, insulation-contractor and process-piping tools, building-services calculators, and engineering aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Ignores the outer air film (real loss slightly lower). For flat walls and roofs use a U-value API.
api.oanor.com/pipeinsulation-api
CNC Surface Finish API
CNC surface-finishing maths as an API, computed locally and deterministically — the scallop, stepover and pass numbers a CNC machinist dials in for a smooth finish. The scallop endpoint gives the cusp height a ball-nose tool leaves between passes, h = R − √(R² − (stepover/2)²), so a half-inch ball at a 0.05-inch stepover leaves about a 1.25-thou ridge — tighter stepover, smaller cusp, far more passes. The stepover endpoint inverts it: the stepover for a target scallop height, 2·√(R² − (R−h)²), reported also as a percent of tool diameter (fine finishing runs ~4–10 %) so it carries across jobs — and a bigger finishing ball reaches the same finish at a wider, faster stepover. The passes endpoint turns a surface into work: passes = width ÷ stepover rounded up plus one, the total cutting travel, and the cutting time at a given feed rate — surfacing a 4×6-inch area at a 0.05-inch stepover is 81 passes and 486 inches of travel, under five minutes at 100 ipm. Everything is computed locally and deterministically, so it is instant and private. Ideal for CNC and CAM apps, machinist and toolpath calculators, maker and job-shop tools, and engineering aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For cutting speed, feed and rpm use a machining API.
api.oanor.com/cncfinish-api
Roller Chain Drive API
Roller-chain drive maths as an API, computed locally and deterministically — the chain-length, sprocket and speed numbers a machine designer or millwright lays out a drive with. The chain-length endpoint gives the chain in pitches from the two sprocket tooth counts, the chain pitch and the centre distance: L = 2·C + (N1+N2)/2 + ((N2−N1)/2π)² ÷ C (C in pitches), rounded UP to an even number so the chain closes without an offset link — a 17- and 34-tooth pair at 15-inch centres on #40 (half-inch) chain comes to 86 pitches, 43 inches. The sprocket endpoint gives the pitch diameter, pitch ÷ sin(180°/teeth), and the outside diameter — a 17-tooth #40 sprocket has a 2.72-inch pitch circle. The speed endpoint gives the chain's linear speed, pitch × teeth × rpm ÷ 12, so a 17-tooth #40 sprocket at 100 rpm runs the chain at about 71 ft/min. Everything is computed locally and deterministically, so it is instant and private. Ideal for machine-design and drivetrain apps, conveyor and equipment-build tools, maker and CAD calculators, and engineering aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For gear ratios use a gear-ratio API; for belts use a pulley API.
api.oanor.com/chaindrive-api
Water Well API
Water-well maths as an API, computed locally and deterministically — the casing, yield and pump-setting numbers a well driller, pump installer or rural homeowner works to. The casing-volume endpoint gives the standing water in a well: gallons per foot = π/4 · diameter² × 12 ÷ 231 (about 1.47 gal/ft for a 6-inch casing, 0.65 for a 4-inch) times the water column, so 100 feet of water in a 6-inch casing holds about 147 gallons — the figure you need to purge a few well volumes before sampling or to dose shock-chlorination. The specific-capacity endpoint turns a drawdown test into how freely the well gives up water: specific capacity = pumping rate ÷ drawdown (gpm per foot), and the projected yield ≈ that times the available drawdown — 15 GPM at 20 feet of drawdown is 0.75 gpm/ft and roughly 45 GPM at 60 feet. The pump-setting endpoint gives the depth to hang the pump: static water level + drawdown + submergence (typically 10–20 feet), so it never air-locks as the level draws down, with a check against the well depth. Everything is computed locally and deterministically, so it is instant and private. Ideal for well-drilling and pump-installer apps, rural-water and homeowner tools, hydrogeology calculators, and trade aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — verify with a real drawdown test. For pump power/head use a pump API; for well chlorination use a pool-chemistry API.
api.oanor.com/wellpump-api
Screw Auger API
Screw-conveyor and grain-auger maths as an API, computed locally and deterministically — the capacity, speed and throughput numbers a farmer, millwright or material-handling engineer sizes an auger with. The capacity endpoint gives the volumetric throughput from the screw geometry: the annular flight volume per turn ((π/4)(diameter² − shaft²) × pitch) × rpm × 60 × the trough loading, so a 9-inch full-pitch screw on a 2.5-inch shaft at 40 rpm and 45 % loading moves about 330 cubic feet — 265 bushels — an hour. The speed endpoint inverts it, the rpm needed for a target capacity, so you don't overspeed a small auger and grind the grain. The bushels endpoint converts a volumetric rate to bushels and tons per hour (1 bushel = 1.2445 ft³, tons = bushels × test weight ÷ 2000), so 330 ft³/hr of 56-lb corn is 265 bushels or 7.4 tons an hour — the number you match to the dryer or the truck. Everything is computed locally and deterministically, so it is instant and private. Ideal for grain-handling and ag-equipment apps, material-handling and conveyor-design tools, farm-build calculators, and engineering aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — incline and material change real throughput. For belt conveyors use a conveyor API.
api.oanor.com/auger-api
Radiant Floor API
Radiant-floor and hydronic heating maths as an API, computed locally and deterministically — the output, tubing and flow numbers an installer or DIYer designs a warm floor with. The output endpoint gives the heat a warm floor puts out: about 2 BTU/hr per square foot for every °F the floor surface is above the room, so an 85 °F floor in a 70 °F room delivers roughly 30 BTU/hr/ft² — about 9,000 BTU/hr over 300 ft², the comfort ceiling since the floor is held at ~85 °F. The tubing endpoint gives the tube and loops for an area at a spacing: field tubing = area × 12 ÷ spacing, so 300 ft² at 9-inch spacing needs 400 feet of tube, split into loops kept under ~300 feet (two 200-foot loops) so the pump can push them. The flow endpoint gives the loop flow rate for a heat load, GPM = load ÷ (500 × ΔT) where 500 is water's constant and ΔT is the supply-to-return drop — 9,000 BTU/hr at a 20 °F ΔT wants 0.9 GPM. Everything is computed locally and deterministically, so it is instant and private. Ideal for radiant-heating and plumbing apps, hydronic-design and PEX-layout tools, HVAC contractor calculators, and DIY-build sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — verify with a full heat-loss calc. For building load use an HVAC API; for pipe velocity use a flow-rate API.
api.oanor.com/radiant-api
Ladder Safety API
Ladder-safety maths as an API, computed locally and deterministically — the angle, reach and load numbers that keep a ladder from sliding out or buckling. The angle endpoint applies the 4:1 rule: the base goes out one foot for every four feet of working length, which lands the ladder at about 75.5° — a 24-foot ladder sits 6 feet from the wall and reaches roughly 23 feet up, steep enough not to tip back and shallow enough not to slide. The extension endpoint gives the usable length and reach of a two-section extension ladder, which loses the overlap the sections share (3 feet up to 36, 4 to 48, 5 beyond), and the working height at the safe angle — remembering the ladder must extend 3 feet above a roof edge you step onto. The duty-rating endpoint turns a total load — your weight plus tools and materials, not just bodyweight — into the right duty class, from Type III household (200 lb) through I industrial (250) to IAA professional (375). Everything is computed locally and deterministically, so it is instant and private. Ideal for construction-safety and trades apps, jobsite and rental tools, OSHA training aids, and home-improvement sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — always follow the manufacturer's labels and OSHA/ANSI rules.
api.oanor.com/ladder-api
Guitar Luthier API
Guitar and luthier maths as an API, computed locally and deterministically — the string-tension and fret numbers a player, builder or tech sets an instrument up with. The string-tension endpoint gives the tension a string pulls at pitch from the physics, tension = unit weight × (2 × scale length × frequency)² ÷ 386.4, where the unit weight (lb/in) comes from the string maker's chart — a .010 plain-steel high E on a 25.5-inch scale tuned to 329.6 Hz pulls about 16 lb. The fret-position endpoint gives the distance from the nut to any fret in equal temperament, scale × (1 − 2^(−fret/12)), so the 12th fret sits exactly halfway and the first fret of a 25.5-inch scale is 1.43 inches down — the maths behind every fretboard slot. The set-tension endpoint sums a whole string set into the total load on the neck (a typical six-string runs ~95–120 lb), the number that decides whether a gauge or tuning change needs a truss-rod re-setup. Everything is computed locally and deterministically, so it is instant and private. Ideal for luthier and guitar-tech apps, string-tension and fret-slotting calculators, setup and re-string tools, and music-gear sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Get unit weights from the string maker's chart. For note↔frequency conversion use a music-theory API.
api.oanor.com/guitar-api
Air Compressor API
Compressed-air maths as an API, computed locally and deterministically — the receiver, pump-up and SCFM numbers a pneumatics tech or shop owner sizes a system with. The receiver-size endpoint gives the tank you need to ride out a demand burst: volume = demand (free-air CFM) × minutes × 14.7 ÷ the usable pressure window (max − min) — pulling 20 CFM for a minute over a 175-to-100 psi window wants about a 30-gallon receiver, the buffer that lets the pump catch up. The pumpup endpoint gives the time to raise a receiver from one pressure to another: volume × pressure rise ÷ (14.7 × compressor CFM), so a 60-gallon tank from 100 to 175 psi on a 15 CFM compressor takes about 2.7 minutes. The scfm endpoint corrects actual CFM to standard CFM for the inlet conditions — SCFM = ACFM × (inlet pressure ÷ 14.696) × (528 ÷ inlet temperature in Rankine) — so a compressor at 5,000 feet delivers about 17 % fewer SCFM than at sea level, the reason you size tools on SCFM, not the nameplate. Everything is computed locally and deterministically, so it is instant and private. Ideal for pneumatics and shop-air apps, compressor-sizing and tool-demand tools, industrial-air calculators, and trade aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — duty cycle and the pump curve shift real numbers.
api.oanor.com/compressor-api
Tire Calculator API
Tire maths as an API, computed locally and deterministically — the size, pressure and speedometer numbers a driver, fitter or fleet manager works out before fitting a tyre. The size endpoint turns a P-metric spec into the real dimensions: overall diameter = rim + 2 × the sidewall (section width × aspect ratio), so a 225/45R17 stands about 25 inches tall, rolls a 78-inch circumference and turns roughly 808 times a mile — the numbers behind fitment, gearing and clearance. The pressure endpoint gives the hot pressure from a cold pressure and the temperature change, because pressure tracks absolute temperature (P2/P1 = T2/T1), about +1 psi per 10 °F — so 32 psi set cold at 70 °F reads ~34.6 after warming to 100 °F, and drops on a cold morning, which is what trips the warning light. The speedo-error endpoint gives the speedometer error and true speed from a tyre-size change: a taller tyre makes the speedo read low, so actual speed = indicated × new diameter ÷ old — go up 4 % and 60 on the dial is really 62.5. Everything is computed locally and deterministically, so it is instant and private. Ideal for tyre-shop and fitment apps, fleet and 4x4 build tools, speedo-recalibration calculators, and automotive sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — always set pressure cold to the placard.
api.oanor.com/tire-api
Boat Propeller API
Boat-propeller maths as an API, computed locally and deterministically — the slip, RPM and pitch numbers that decide whether a boat hits its numbers or labours. The slip endpoint gives propeller slip from the pitch, the prop RPM and the actual boat speed: theoretical speed = pitch × prop RPM ÷ 1215, and slip = (theoretical − actual) ÷ theoretical — a 19-inch prop at 2000 RPM should make 31 knots in theory, so a real 26.6 knots is about 15 % slip, normal for a clean planing boat. The prop-rpm endpoint gives the propeller RPM from the engine RPM and the gear (reduction) ratio — a 2:1 gearbox spins the prop at half engine speed — and, with a pitch, the theoretical no-slip speed at that RPM. The pitch endpoint gives the pitch needed to reach a target speed at a prop RPM and expected slip, pitch = target × 1215 ÷ (prop RPM × (1 − slip)), so you can prop the boat to let the engine reach the top of its wide-open-throttle range instead of lugging. Everything is computed locally and deterministically, so it is instant and private. Ideal for boating and marine apps, repower and prop-shop tools, performance calculators, and seamanship study aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — hull, load and bottom condition shift real slip.
api.oanor.com/propeller-api
Boat Anchoring API
Boat-anchoring maths as an API, computed locally and deterministically — the scope, swing and load numbers a sailor or boater sets the hook by. The scope endpoint gives the rode to let out: scope = rode ÷ the vertical from the seabed to the bow roller (water depth + bow height), measured at high tide, so anchoring in 20 feet with a 4-foot bow at the classic 7:1 means paying out 168 feet of rode — let out more in a blow, and never less than 5:1 on all chain. The swing endpoint gives the circle the boat swings on: radius = the horizontal reach of the rode (√(rode² − vertical²)) plus the boat length, so that 168-foot rode on a 30-foot boat sweeps a 196-foot radius — the room you must leave every other boat, which swings too. The load endpoint gives the wind load the ground tackle has to hold, 0.00256 × drag coefficient × frontal windage area × wind speed², which quadruples every time the wind doubles — 50 square feet of windage takes 138 lb at 30 mph but 553 lb at 60. Everything is computed locally and deterministically, so it is instant and private. Ideal for sailing and boating apps, anchoring and cruising tools, ground-tackle sizing calculators, and seamanship study aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — add current, waves and a safety margin.
api.oanor.com/anchor-api
Suspension Tuning API
Vehicle-suspension maths as an API, computed locally and deterministically — the spring and frequency numbers a racer, tuner or chassis engineer sets a car up with. The wheel-rate endpoint converts a spring rate to the rate the wheel actually feels: wheel rate = spring rate × motion ratio², where the motion ratio is the spring's travel per unit of wheel travel — a 200 lb/in spring at a 0.7 motion ratio gives a 98 lb/in wheel rate, because the spring's leverage softens it. The frequency endpoint gives the ride (natural) frequency at a corner, f = (1/2π)·√(wheel rate × g ÷ corner sprung weight), the number that really sets the ride: luxury cars run about 0.5–1.2 Hz, sporty street 1.2–1.7, race cars 2 Hz and up. The spring-rate endpoint inverts it — the spring rate needed to hit a target frequency for a corner weight and motion ratio — so you can pick the frequency for the car's job and get the spring straight out. Everything is computed locally and deterministically, so it is instant and private. Ideal for motorsport and tuning apps, chassis-setup and corner-balancing tools, suspension-design calculators, and engineering study aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — real ride also depends on damping and tyres.
api.oanor.com/suspension-api
Vacuum Technology API
Vacuum-technology maths as an API, computed locally and deterministically — the pump-down, boiling and pressure numbers a lab tech, process engineer or vacuum hobbyist works to. The pumpdown endpoint gives the ideal time to evacuate a chamber, t = (volume ÷ pump speed) × ln(start ÷ target pressure) — a 10-litre chamber on a 5 L/s pump drops from 1000 to 1 mbar in about 14 seconds in theory, though outgassing and falling pump speed stretch the real low-pressure stage. The boiling-point endpoint gives the temperature water boils at under reduced pressure from the Antoine equation: about 100 °C at sea level, but only ~52 °C at 100 mbar and ~46 °C at 100 mbar — the physics behind vacuum degassing, freeze-drying and high-altitude cooking. The level endpoint converts a pressure across the common vacuum units (mbar, Torr/mmHg, Pa, kPa, inHg, atm, psi), reports the percent vacuum relative to atmosphere, and names the regime — rough, medium, high or ultra-high vacuum — so you know which pump and gauge the job needs. Everything is computed locally and deterministically, so it is instant and private. Ideal for vacuum-lab and process apps, pump-sizing and degassing tools, semiconductor and coating calculators, and physics teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Ideal estimates — real systems are slowed by outgassing and leaks.
api.oanor.com/vacuum-api
Craps Odds API
Craps odds maths as an API, computed locally and deterministically and exactly — the dice probabilities behind the table, derived from the 36 ways two dice fall, not pulled from a chart. The come-out endpoint gives the come-out roll: the pass line wins on a 7 or 11 (8 of 36, 22.2 %), loses on craps 2, 3 or 12 (4 of 36, 11.1 %), and otherwise sets a point (24 of 36, 66.7 %). The point endpoint gives the odds of making a point before a seven — probability = ways(point) ÷ (ways(point) + 6) — so a 6 or 8 makes 45.5 % of the time and a 4 or 10 only 33.3 %, with the TRUE odds (2:1, 3:2, 6:5) the free odds bet behind the line pays at zero house edge. The bet endpoint gives the house edge of the main bets: the line bets at 1.41 % (pass) and 1.36 % (don't) and place 6/8 at 1.52 % are the table's best, while place 4/10 (6.67 %), the field and proposition bets like any seven (16.67 %) bleed you. Everything is computed locally and deterministically, so it is instant and exact. Ideal for craps and casino-game apps, gambling-education and odds tools, game-design back-ends, and probability teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — not betting advice; back the line with free odds.
api.oanor.com/craps-api
Lottery Odds API
Lottery combinatorics as an API, computed locally and deterministically and exactly — the real odds behind a ticket, the maths the jackpot poster never shows. The odds endpoint gives the jackpot odds of a pick-N game as the number of possible tickets, C(pool, picks), times the bonus-ball pool if there is one: a 6/49 game is 1 in 13,983,816, a 5/69-plus-1/26 Powerball-style game is 1 in 292,201,338, and every single line is equally unlikely. The match-odds endpoint gives the chance of matching exactly k of the main numbers — a prize tier — from the hypergeometric formula C(picks, k)·C(pool−picks, picks−k) ÷ C(pool, picks), so matching 3 of 6 in a 6/49 game is about 1 in 57. The expected-value endpoint turns a jackpot and ticket price into the expected value and the break-even jackpot (price × the odds), the threshold a jackpot must clear before a ticket is even theoretically worth it — before a shared jackpot, lump-sum and tax pull it back under. Everything is computed locally and deterministically, so it is instant and exact. Ideal for lottery and odds apps, gambling-education and responsible-play tools, probability teaching, and game back-ends. Pure local computation — no key, no third-party service, instant. Exact combinatorics. Live, nothing stored. 3 compute endpoints. Educational — not gambling advice; the odds are always against you.
api.oanor.com/lottery-api
Roulette Odds API
Roulette odds maths as an API, computed locally and deterministically and exactly — the payout, the true probability and the house edge behind every bet, the numbers a fair game tells you and a casino would rather you ignore. The payout endpoint gives a bet's payout, winning numbers, win probability and house edge for a European (single-zero) or American (double-zero) wheel: a straight-up number pays 35 to 1 but wins only 1 in 37, an edge of 2.70 % European or 5.26 % American, the same on almost every bet because the payout simply ignores the zeros. The expected-value endpoint turns a stake into its expected value — stake × (win probability × (payout + 1) − 1), always negative and equal to minus the stake times the house edge — so €10 on a single number on a European wheel is worth −€0.27 every spin. The martingale endpoint exposes the doubling system: total risked = base × (2^steps − 1), the bet that explodes after a losing streak, and the bust probability — proof on the maths that no progression beats the zero. Everything is computed locally and deterministically, so it is instant and exact. Ideal for casino-game and odds apps, gambling-education and responsible-play tools, game-design back-ends, and probability teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — not betting advice; the house always wins long-run.
api.oanor.com/roulette-api
Blackjack Strategy API
Blackjack maths as an API, computed locally and deterministically and exactly — the hand value, the textbook basic-strategy play and the dealer odds, the numbers that hold the house edge to half a percent. The hand-value endpoint scores a hand the way the table does: aces count 11 unless that busts, then 1, so it reports the best total, whether it is soft (an ace still counting 11, safe to hit) or hard, whether it busts, and whether two cards make a blackjack. The strategy endpoint gives the correct basic-strategy action — hit, stand, double or split — for any hand against the dealer's upcard, for the standard 4-to-8-deck game where the dealer stands on soft 17 with double-after-split allowed: 16 against a 10 hits, a pair of 8s always splits, soft 18 doubles against a 6 but hits against a 9, and 11 doubles against everything but an ace. The dealer-odds endpoint gives the dealer's bust probability by upcard — a 5 or 6 busts about 42 % of the time, an ace only 12 % — the reason you stand on stiffs against weak upcards. Everything is computed locally and deterministically, so it is instant and exact. Ideal for blackjack trainers and strategy apps, card-game and casino-game tools, learning aids, and game back-ends. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — not betting advice; the house always keeps an edge.
api.oanor.com/blackjack-api
Steel Heat-Treat API
Steel heat-treatment maths as an API, computed locally and deterministically — the temperatures and hardness numbers a bladesmith, machinist or metallurgist works to. The critical-temp endpoint gives the critical and process temperatures from carbon content: the lower critical A1 is 727 °C and the upper critical A3 ≈ 910 − 203·√(%C), so a 0.4 %-carbon steel has an A3 around 782 °C and hardens about 817 °C (austenitize 30–50 °C above A3, then quench), while a hypereutectoid steel austenitizes just above A1. The tempering endpoint maps temper oxide colours to temperature both ways — light straw at about 204 °C for hard cutting edges, purple around 282, blue around 304 for springs — with the typical use at each, the colour you watch on bright steel as you draw the hardness back. The hardness endpoint converts between Rockwell C, Brinell and tensile strength (SAE J417 / ASTM E140): HRC 50 is roughly 481 Brinell and about 1,660 MPa tensile, since tensile ≈ 3.45 × Brinell. Everything is computed locally and deterministically, so it is instant and private. Ideal for bladesmithing and metalworking apps, machine-shop and heat-treat tools, materials-engineering calculators, and trade study aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Plain-carbon-steel estimates — alloy steels and a tested chart differ.
api.oanor.com/heattreat-api
Industrial Coatings API
Industrial and protective-coatings maths as an API, computed locally and deterministically — the film-build numbers a coatings inspector, painter or estimator works to, the ones simple paint estimating skips. The coverage endpoint gives theoretical and practical coverage from the coating's volume solids and the target dry film thickness: coverage = 1604 × the volume-solids fraction ÷ the DFT in mils, where 1604 is the square feet a gallon covers at one mil — so a 50 %-solids coating at 2 mils dry covers about 401 ft² per gallon, less a loss factor for overspray and surface profile. The film-thickness endpoint converts between wet and dry film thickness through the volume solids: WFT = DFT ÷ the solids fraction, because the solvent flashes off and the film shrinks, so a 50 %-solids coating laid 4 mils wet dries to 2 mils — the number you check with a wet-film comb as you spray. The transfer-efficiency endpoint gives the real material needed: theoretical gallons ÷ the transfer efficiency, since conventional spray lands only ~25 % on the part, HVLP ~65 %, electrostatic up to ~95 %. Everything is computed locally and deterministically, so it is instant and private. Ideal for coatings-estimating and inspection apps, industrial-painting and protective-coating tools, NACE/SSPC study aids, and spec calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For simple wall-paint area estimating use a paint API.
api.oanor.com/coating-api
HVAC Ductwork API
HVAC duct-sizing maths as an API, computed locally and deterministically — the duct dimensions an installer or designer sizes a system with so the air moves quietly and efficiently. The round-duct endpoint gives the round duct for an airflow at a target velocity: area = airflow ÷ velocity (CFM ÷ ft/min = ft²), then diameter = √(4·area/π) — 400 CFM at a 700 fpm trunk velocity wants about a 10.2-inch round, rounded up to the next 12-inch trade size. The velocity endpoint gives the air speed inside a duct from the airflow and its size, round or rectangular — 400 CFM through a 12 × 8 duct runs at 600 fpm, comfortably quiet, while the same air in a 10-inch round moves at 733 fpm. The equivalent endpoint gives the equivalent round diameter of a rectangular duct by the ASHRAE relation De = 1.30 · (a·b)^0.625 ÷ (a+b)^0.25, so a 12 × 8 rectangular carries the same air at the same friction as a 10.7-inch round — letting you size on a round friction chart and convert to fit the space. Everything is computed locally and deterministically, so it is instant and private. Ideal for HVAC-design and installer apps, duct-sizing and takeoff tools, building-services calculators, and trade-school aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For room air changes use a ventilation API; for the cooling/heating load use an HVAC API.
api.oanor.com/ductwork-api
Canasta Scoring API
Canasta card-game scoring as an API, computed locally and deterministically and exactly — the point counting that makes Canasta famously fiddly, done for you. The card-value endpoint totals the point value of a hand or meld: a joker is 50, aces and twos 20, eights through kings 10, fours through sevens and black threes 5, and a red three a 100-point bonus card — so a joker, an ace, a king, a seven and a red three come to 185. The bonus endpoint adds the round bonuses: a natural (pure) canasta is 500, a mixed canasta 300, each red three 100 (all four double to 800), going out 100, and going out concealed a further 100 — two naturals, a mixed, three red threes and going out is 1,700. The hand-score endpoint nets it out: the card points you melded, plus the bonuses, minus the card points left stranded in your hand when the round ends. Everything is computed locally and deterministically, so it is instant and exact. Ideal for Canasta apps, online card-room scorekeepers, club and family game-night tools, and learning aids. Pure local computation — no key, no third-party service, instant. Exact integer maths. Live, nothing stored. 3 compute endpoints. Classic Canasta values; rule variants differ.
api.oanor.com/canasta-api
Chimney & Flue API
Chimney and flue sizing maths as an API, computed locally and deterministically — the draft and dimension numbers a stove installer, sweep or builder runs so a fire pulls cleanly and safely. The flue-size endpoint gives the minimum flue cross-section for a fireplace opening: at least a tenth of the opening area for a square or rectangular liner, a twelfth for a round one (which draws better) — a 36 × 30 inch opening needs about 108 square inches of rectangular flue, or a 10.7-inch round. The draft endpoint gives the theoretical draft from the stack effect, ΔP ≈ 3465 × height × (1/T_outside − 1/T_flue) with temperatures in kelvin, so a 6-metre chimney with 200 °C flue gas on a freezing day pulls about 32 pascals (0.13 inches of water column) — taller and hotter draws harder. The height endpoint applies the 3-2-10 rule: a chimney must finish at least 3 feet above where it pierces the roof and at least 2 feet above anything within 10 feet, whichever is higher. Everything is computed locally and deterministically, so it is instant and private. Ideal for hearth and stove-installer apps, chimney-sweep and inspection tools, building-design calculators, and DIY-safety sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational estimates — verify against your appliance listing and adopted code.
api.oanor.com/chimney-api
Fishing Tackle API
Angling and tackle maths as an API, computed locally and deterministically — the three numbers that decide how a reel is spooled and a lure is fished. The line-capacity endpoint works out how much line of a different diameter a reel will hold: line lies on the spool by cross-sectional area, so capacity scales with the inverse square of diameter — a reel rated for 100 yards of 0.30 mm holds about 73.5 yards of thicker 0.35 mm, or nearly 140 yards of a thinner 0.011-inch braid. The sink-time endpoint gives the countdown to fish a lure at depth: time = depth ÷ sink rate, so a minnow that sinks a foot a second reaches ten feet on a count of ten. The drag endpoint sets the reel: about 25–33 % of the line's breaking strength measured at the rod tip — a 20-pound line wants roughly 5 to 6.6 pounds of drag, enough to let a fish run before anything snaps. Everything is computed locally and deterministically, so it is instant and private. Ideal for fishing and tackle apps, reel-spooling and gear-shop tools, angler trip-planners, and learning sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Unit-agnostic — keep your units consistent; rules of thumb, conditions vary.
api.oanor.com/fishing-api