{"openapi":"3.1.0","info":{"title":"Resin & Epoxy API","version":"1.0.0","description":"Casting and epoxy-resin maths as an API, computed locally and deterministically — the mix, coverage and mould-volume numbers a resin artist, crafter or maker pours a project by. The mix endpoint splits a two-part resin by its label ratio: resin = total × A/(A+B), hardener = total × B/(A+B), from whichever quantity you know — the total, the resin or the hardener — so a 2:1 epoxy for 300 ml is 200 + 100, and a 100:45 by-weight system for 100 g of resin needs 45 g of hardener; it keeps your unit (ml, grams, fl oz) and reminds you that some resins mix by volume and others by weight. The coverage endpoint sizes a flood or seal coat: volume = area × thickness, in metric or US units, returned in millilitres, fluid ounces and gallons plus the mass — matching the familiar art-resin rule of about a gallon per 12 ft² at an eighth of an inch. The moldfill endpoint computes the volume of a box, cylinder, sphere or cone mould (a 10×10×5 cm box is 500 ml, 550 g at epoxy’s ~1.1 g/cm³) and subtracts the displacement of anything you embed, so you never over- or under-pour. Everything is computed locally and deterministically, so it is instant and private. Ideal for resin-art, craft, jewelry, model-making, river-table and maker app developers, project-estimator and material-cost tools, and studio software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For pot life and cure follow the product data sheet.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/resin-api","description":"oanor gateway"}],"tags":[{"name":"Resin"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/coverage":{"get":{"operationId":"get_v1_coverage","tags":["Resin"],"summary":"Flood/seal-coat volume","description":"","parameters":[{"name":"unit","in":"query","required":false,"description":"metric or us (default metric)","schema":{"type":"string"},"example":"metric"},{"name":"area_cm2","in":"query","required":false,"description":"Area in cm² (metric)","schema":{"type":"string"},"example":"1000"},{"name":"thickness_mm","in":"query","required":false,"description":"Thickness in mm (metric)","schema":{"type":"string"},"example":"3"},{"name":"area_sqin","in":"query","required":false,"description":"Area in in² (us)","schema":{"type":"string"}},{"name":"thickness_in","in":"query","required":false,"description":"Thickness in inches (us)","schema":{"type":"string"}},{"name":"density_g_cm3","in":"query","required":false,"description":"Cured density (default 1.1)","schema":{"type":"string"},"example":"1.1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Volume = area × thickness. As a sanity check, the common art-resin rule is about 1 US gallon per 12 ft² at 1/8\" — mix a little extra for the cup and the spread. Flood coats are typically 1/8\" (3 mm); seal coats much thinner.","inputs":{"unit":"metric","area_cm2":1000,"thickness_mm":3,"density_g_cm3":1.1},"mass_g":330,"volume_ml":300,"volume_fl_oz":10.14,"volume_gallons":0.0793},"meta":{"timestamp":"2026-06-06T07:14:02.527Z","request_id":"985c6fc1-0f9c-4942-bd7d-2861bab51575"},"status":"ok","message":"Coverage volume","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/mix":{"get":{"operationId":"get_v1_mix","tags":["Resin"],"summary":"Two-part mix by ratio","description":"","parameters":[{"name":"ratio","in":"query","required":true,"description":"Mix ratio 'A:B' (resin:hardener)","schema":{"type":"string"},"example":"2:1"},{"name":"total_amount","in":"query","required":false,"description":"Total amount to make","schema":{"type":"string"},"example":"300"},{"name":"resin_amount","in":"query","required":false,"description":"Known resin amount","schema":{"type":"string"}},{"name":"hardener_amount","in":"query","required":false,"description":"Known hardener amount","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Mix two parts by the ratio: resin = total × A/(A+B), hardener = total × B/(A+B). Amounts stay in whatever unit you pass (ml, g, fl oz). Many epoxies mix by VOLUME (e.g. 2:1) or by WEIGHT (e.g. 100:45) — use the ratio the label specifies.","total":300,"inputs":{"ratio":"2:1"},"resin_part":200,"ratio_resin":2,"hardener_part":100,"ratio_hardener":1},"meta":{"timestamp":"2026-06-06T07:14:02.629Z","request_id":"0a63d69d-7cc4-426d-af63-ba7d6571a600"},"status":"ok","message":"Resin mix","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/moldfill":{"get":{"operationId":"get_v1_moldfill","tags":["Resin"],"summary":"Mould fill volume","description":"","parameters":[{"name":"shape","in":"query","required":true,"description":"box, cylinder, sphere or cone","schema":{"type":"string"},"example":"box"},{"name":"length_cm","in":"query","required":false,"description":"Length (box)","schema":{"type":"string"},"example":"10"},{"name":"width_cm","in":"query","required":false,"description":"Width (box)","schema":{"type":"string"},"example":"10"},{"name":"height_cm","in":"query","required":false,"description":"Height (box/cylinder/cone)","schema":{"type":"string"},"example":"5"},{"name":"diameter_cm","in":"query","required":false,"description":"Diameter (cylinder/sphere/cone)","schema":{"type":"string"}},{"name":"embedded_cm3","in":"query","required":false,"description":"Embedded object volume to subtract","schema":{"type":"string"},"example":"0"},{"name":"density_g_cm3","in":"query","required":false,"description":"Cured density (default 1.1)","schema":{"type":"string"},"example":"1.1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Mould volume by shape (box L×W×H; cylinder/cone use πD²; sphere πD³/6). Subtract the volume of anything you embed (a displacement measurement works well). 1 cm³ = 1 ml; mass = volume × density (cured epoxy ≈ 1.1 g/cm³).","inputs":{"shape":"box","width_cm":10,"height_cm":5,"length_cm":10,"embedded_cm3":0,"density_g_cm3":1.1},"resin_mass_g":550,"mold_volume_cm3":500,"resin_volume_ml":500,"resin_volume_cm3":500,"resin_volume_fl_oz":16.91},"meta":{"timestamp":"2026-06-06T07:14:02.734Z","request_id":"c57c3089-5c74-4e71-9457-5590631ed16a"},"status":"ok","message":"Mold fill","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"Mix amounts stay in your unit (ml/g/fl oz) — use the label's ratio (volume e.g. 2:1, or weight e.g. 100:45). Coverage and mould volume in metric or US units; mass uses density (cured epoxy ≈ 1.1 g/cm³). For pot life and cure schedule follow the product data sheet.","service":"resin-api","endpoints":{"GET /v1/mix":"Split a two-part resin by its mix ratio from one known quantity.","GET /v1/meta":"This document.","GET /v1/coverage":"Resin volume to coat a flat area at a thickness.","GET /v1/moldfill":"Resin to fill a box/cylinder/sphere/cone mould, minus embedded objects."},"description":"Casting/epoxy resin maths: two-part mix by ratio, flood-coat coverage volume, and mould fill volume for common shapes."},"meta":{"timestamp":"2026-06-06T07:14:02.840Z","request_id":"5af8adff-90ec-4537-bcef-f2ba5bacd2d8"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":7000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":418,"monthly_call_quota":56800,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1165,"monthly_call_quota":230000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3710,"monthly_call_quota":1342000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/resin-api"}