{"openapi":"3.1.0","info":{"title":"Towing Calculator API","version":"1.0.0","description":"Trailer-towing weight maths as an API, computed locally and deterministically. The tongue endpoint computes the tongue (hitch) weight as a percentage of the loaded trailer weight and reports the recommended 10–15 % range — too little tongue weight is the main cause of trailer sway. The capacity endpoint computes the maximum trailer weight a tow vehicle can pull, GCWR − curb weight − payload (the passengers and cargo in the vehicle), and checks a proposed trailer against it with the margin remaining. The payload endpoint computes the vehicle payload still available once the trailer is hitched, GVWR − curb weight − tongue weight, since the tongue weight presses down on the tow vehicle and counts against its payload rating. Everything is computed locally and deterministically, so it is instant and private. Ideal for RV, caravan, trailer and fleet apps, tow-vehicle matching and load-planning tools, and automotive calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. Guidance only — follow the manufacturer's ratings. 3 endpoints. This is trailer-towing weights; for tyre size and rolling circumference use a tyre API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/towing-api","description":"oanor gateway"}],"tags":[{"name":"Towing"},{"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/capacity":{"get":{"operationId":"get_v1_capacity","tags":["Towing"],"summary":"Towing capacity","description":"","parameters":[{"name":"gcwr","in":"query","required":true,"description":"Gross combined weight rating","schema":{"type":"string"},"example":"7000"},{"name":"curb_weight","in":"query","required":true,"description":"Tow-vehicle curb weight","schema":{"type":"string"},"example":"2000"},{"name":"payload","in":"query","required":false,"description":"Passengers + cargo in vehicle","schema":{"type":"string"},"example":"400"},{"name":"trailer_weight","in":"query","required":false,"description":"Proposed trailer weight to check","schema":{"type":"string"},"example":"4000"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Max trailer = GCWR − curb − payload (passengers and cargo in the tow vehicle). Stay within the rating.","inputs":{"gcwr":7000,"payload":400,"curb_weight":2000},"margin":600,"trailer_weight":4000,"within_capacity":true,"max_trailer_weight":4600,"loaded_vehicle_weight":2400},"meta":{"timestamp":"2026-06-04T18:38:19.817Z","request_id":"3240a73f-aa35-409f-92fd-7fa28cd8c521"},"status":"ok","message":"Towing capacity","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/payload":{"get":{"operationId":"get_v1_payload","tags":["Towing"],"summary":"Vehicle payload","description":"","parameters":[{"name":"gvwr","in":"query","required":true,"description":"Gross vehicle weight rating","schema":{"type":"string"},"example":"3000"},{"name":"curb_weight","in":"query","required":true,"description":"Curb weight","schema":{"type":"string"},"example":"2000"},{"name":"tongue_weight","in":"query","required":false,"description":"Tongue weight","schema":{"type":"string"},"example":"360"},{"name":"trailer_weight","in":"query","required":false,"description":"Or trailer weight to derive tongue","schema":{"type":"string"}},{"name":"tongue_percent","in":"query","required":false,"description":"Tongue percentage (default 12)","schema":{"type":"string"},"example":"12"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Available payload = GVWR − curb − tongue weight. The trailer's tongue weight counts against the tow vehicle's payload.","inputs":{"gvwr":3000,"curb_weight":2000,"tongue_weight":360},"available_payload":640,"payload_before_tongue":1000},"meta":{"timestamp":"2026-06-04T18:38:19.917Z","request_id":"59a76526-a83a-4e12-b32a-6111308cbd57"},"status":"ok","message":"Vehicle payload","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/tongue":{"get":{"operationId":"get_v1_tongue","tags":["Towing"],"summary":"Tongue weight","description":"","parameters":[{"name":"trailer_weight","in":"query","required":true,"description":"Loaded trailer weight","schema":{"type":"string"},"example":"3000"},{"name":"tongue_percent","in":"query","required":false,"description":"Tongue percentage (default 12)","schema":{"type":"string"},"example":"12"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Tongue weight should be 10–15 % of the loaded trailer weight for stable towing (too little causes sway).","inputs":{"tongue_percent":12,"trailer_weight":3000},"tongue_weight":360,"recommended_max":450,"recommended_min":300,"in_recommended_range":true},"meta":{"timestamp":"2026-06-04T18:38:20.000Z","request_id":"7aa30440-ad12-4e2f-bbf2-91c43a931ef2"},"status":"ok","message":"Tongue weight","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":"All weights in the same unit (kg or lb). GCWR = gross combined weight rating, GVWR = gross vehicle weight rating, curb = empty vehicle weight. Guidance only — follow the manufacturer's ratings.","service":"towing-api","formulae":{"tongue":"tongue = percent × trailer (10–15 % recommended)","payload":"payload = GVWR − curb − tongue","capacity":"max trailer = GCWR − curb − payload"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/tongue":"Tongue weight from the trailer weight and percentage, with the 10–15 % recommended range.","GET /v1/payload":"Remaining vehicle payload = GVWR − curb − tongue weight.","GET /v1/capacity":"Maximum trailer weight = GCWR − curb − payload, with a pass/fail check."},"description":"Trailer-towing weight calculator: tongue (hitch) weight, available trailer capacity from GCWR, and remaining vehicle payload after the tongue load."},"meta":{"timestamp":"2026-06-04T18:38:20.102Z","request_id":"c40b6b8d-4698-48b5-a5db-f3f233b7c2e7"},"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":3000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":900,"monthly_call_quota":20000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":120000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6900,"monthly_call_quota":600000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/towing-api"}