{"openapi":"3.1.0","info":{"title":"Darts API","version":"1.0.0","description":"Darts scoring maths as an API, computed locally and deterministically — the X01 checkout and average numbers a darts player, league or scoring app runs on. The checkout endpoint solves a remaining score with an exact full-board search: whether it can be finished, the minimum number of darts and one valid combination that ends on a double or the bull — 170 finishes T20 T20 Bull (the highest possible three-dart checkout), 100 is T20 D20, 40 is simply D20, while 1 cannot be finished (the last dart must be a double, minimum 2) and the bogey numbers 169, 168, 166, 165, 163, 162 and 159 cannot be checked out in three darts at all. The average endpoint computes the three-dart average — total score ÷ darts × 3 — so 501 in 15 darts is a 100.2 average; a 100-plus average is strong play. Everything is computed locally and deterministically, so it is instant and private. Ideal for darts, league-scoring, pub-game and sports app developers, checkout-assistant and practice tools, and darts education. Pure local computation — no key, no third-party service, instant. Standard X01 rules; legs end on a double or the bull. Live, nothing stored. 2 compute endpoints. An exact scoring aid for the standard 20-segment board.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/darts-api","description":"oanor gateway"}],"tags":[{"name":"Darts"},{"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/average":{"get":{"operationId":"get_v1_average","tags":["Darts"],"summary":"Three-dart average","description":"","parameters":[{"name":"total_score","in":"query","required":true,"description":"Total points scored","schema":{"type":"string"},"example":"501"},{"name":"darts_thrown","in":"query","required":true,"description":"Darts thrown","schema":{"type":"string"},"example":"15"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Three-dart average = total score ÷ darts × 3. A 100+ average is strong club play; pros run 95–110+ over a match.","turns":5,"inputs":{"total_score":501,"darts_thrown":15},"per_dart_average":33.4,"three_dart_average":100.2},"meta":{"timestamp":"2026-06-06T07:14:08.020Z","request_id":"4afa61a6-72e1-48cb-863e-7958141e2ed0"},"status":"ok","message":"Three-dart average","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/checkout":{"get":{"operationId":"get_v1_checkout","tags":["Darts"],"summary":"X01 checkout solver","description":"","parameters":[{"name":"score","in":"query","required":true,"description":"Remaining score (2–170)","schema":{"type":"string"},"example":"170"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Minimum darts to finish and one valid route, ending on a double or the bull. 170 = T20 T20 Bull; 40 = D20.","inputs":{"score":170},"checkable":true,"minimum_darts":3,"suggested_checkout":"T20 T20 Bull"},"meta":{"timestamp":"2026-06-06T07:14:08.137Z","request_id":"588af421-e5e4-4d37-934d-da4b61a46308"},"status":"ok","message":"X01 checkout","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":"X01 legs end on a double or the bull (50). 170 is the highest three-dart checkout; 169/168/166/165/163/162/159 are bogey numbers. Exact full-board search.","service":"darts-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/average":"Three-dart average from a total score and darts thrown.","GET /v1/checkout":"Whether a remaining score can be checked out, the minimum darts and a suggested combination."},"description":"Darts maths: X01 checkout solver (finishable, minimum darts, suggested route, bogey numbers) and three-dart average."},"meta":{"timestamp":"2026-06-06T07:14:08.233Z","request_id":"6578bbdb-aaae-4377-af66-82ef10d1ea9d"},"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":6450,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":395,"monthly_call_quota":58500,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1100,"monthly_call_quota":243000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3500,"monthly_call_quota":1365000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/darts-api"}