{"openapi":"3.1.0","info":{"title":"Leathercraft API","version":"1.0.0","description":"Leathercraft maths as an API, computed locally and deterministically — the weight, area and strap numbers a leatherworker, saddler or maker cuts a project by. The thickness endpoint handles the quirk that leather “weight” is really a thickness: one ounce equals one sixty-fourth of an inch, or 0.397 mm, so 8 oz leather is 3.18 mm — and it converts in either direction between ounces, millimetres and inches and suggests typical uses, from 2–3 oz linings and wallets up to 9 oz-plus belts and saddlery. The area endpoint converts hide area between the US square foot, the European square decimetre (1 ft² = 9.29 dm²) and square metres, and sizes a project: given the leather a project needs and a waste allowance — 25–40 % is normal because hides have irregular edges and flaws — it returns the usable area and how many hides to buy. The strap endpoint counts straps cut from a rectangular piece (count = ⌊width ÷ strap width⌋, each as long as the piece) or the continuous lace length a spiral cut yields from an area (length = area ÷ width). Everything is computed locally and deterministically, so it is instant and private. Ideal for leatherwork, saddlery, crafting, bag-making and maker app developers, project-estimator and material-cost tools, and workshop software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/leather-api","description":"oanor gateway"}],"tags":[{"name":"Leather"},{"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/area":{"get":{"operationId":"get_v1_area","tags":["Leather"],"summary":"Hide area + project yield","description":"","parameters":[{"name":"value","in":"query","required":true,"description":"Area value","schema":{"type":"string"},"example":"50"},{"name":"from","in":"query","required":false,"description":"sqft, sqdm or sqm (default sqft)","schema":{"type":"string"},"example":"sqft"},{"name":"project_sqft","in":"query","required":false,"description":"Project area to size hides for","schema":{"type":"string"}},{"name":"waste_percent","in":"query","required":false,"description":"Waste allowance % (default 30)","schema":{"type":"string"},"example":"30"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Hide area converted between US square feet, EU square decimetres (1 ft² = 9.29 dm²) and m². Pass project_sqft (and waste_percent) to size how many such hides a project needs.","inputs":{"from":"sqft","value":50},"square_feet":50,"square_meters":4.645,"square_decimeters":464.52},"meta":{"timestamp":"2026-06-06T07:14:01.526Z","request_id":"8038f48d-d275-4946-a029-80219a939aaa"},"status":"ok","message":"Hide area","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/strap":{"get":{"operationId":"get_v1_strap","tags":["Leather"],"summary":"Strap / lace yield","description":"","parameters":[{"name":"strap_width","in":"query","required":true,"description":"Strap/lace width","schema":{"type":"string"},"example":"1"},{"name":"piece_length","in":"query","required":false,"description":"Piece length (cut straps)","schema":{"type":"string"},"example":"24"},{"name":"piece_width","in":"query","required":false,"description":"Piece width (cut straps)","schema":{"type":"string"},"example":"12"},{"name":"kerf","in":"query","required":false,"description":"Blade/gap per cut","schema":{"type":"string"},"example":"0"},{"name":"area_sqft","in":"query","required":false,"description":"Area for continuous lace (width in inches)","schema":{"type":"string"}},{"name":"waste_percent","in":"query","required":false,"description":"Lace waste % (default 15)","schema":{"type":"string"},"example":"15"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Straps cut along the length of a rectangular piece: count = ⌊(width + kerf) ÷ (strap width + kerf)⌋, each as long as the piece. Cut straps along the backbone, not across, for the least stretch.","inputs":{"strap_width":1},"each_length":24,"piece_width":12,"strap_count":12,"piece_length":24,"total_strap_length":288},"meta":{"timestamp":"2026-06-06T07:14:01.612Z","request_id":"b7a20368-a1e6-4254-adcf-1af80c6e3eac"},"status":"ok","message":"Strap yield","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/thickness":{"get":{"operationId":"get_v1_thickness","tags":["Leather"],"summary":"Weight ↔ thickness","description":"","parameters":[{"name":"value","in":"query","required":true,"description":"The value to convert","schema":{"type":"string"},"example":"8"},{"name":"from","in":"query","required":false,"description":"oz, mm or in (default oz)","schema":{"type":"string"},"example":"oz"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Leather weight IS its thickness: 1 oz = 1/64 inch = 0.397 mm. Leather is often sold in a 2-oz range (e.g. 8-9 oz) because thickness varies across a hide. Quoted weight is per square foot but only depends on thickness.","inches":0.125,"inputs":{"from":"oz","value":8},"ounces":8,"millimeters":3.175,"typical_use":"belts, straps, holsters","weight_range_oz":"8-8 oz"},"meta":{"timestamp":"2026-06-06T07:14:01.709Z","request_id":"e87e574b-e5d6-4283-af12-a8602b374847"},"status":"ok","message":"Leather thickness","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":"Leather weight is thickness: 1 oz = 1/64\" = 0.397 mm. Area in ft² (US), dm² (EU) or m². Budget 25–40 % waste for hides. For tooling stamp sizes or dye coverage use a different tool.","service":"leather-api","endpoints":{"GET /v1/area":"Convert hide area (ft²/dm²/m²) and size how many hides a project needs.","GET /v1/meta":"This document.","GET /v1/strap":"Strap count from a piece, or continuous lace length from an area.","GET /v1/thickness":"Convert leather weight (oz) ↔ thickness (mm/inch) with typical uses."},"description":"Leathercraft maths: leather weight ↔ thickness, hide-area unit conversion with project yield, and strap/lace yield."},"meta":{"timestamp":"2026-06-06T07:14:01.811Z","request_id":"d318771b-e8f6-4d80-af43-c41f6963f351"},"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":6750,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":412,"monthly_call_quota":57200,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1150,"monthly_call_quota":233000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3650,"monthly_call_quota":1346000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/leather-api"}