{"openapi":"3.1.0","info":{"title":"Queueing Theory API","version":"1.0.0","description":"Queueing-theory maths as an API, computed locally and deterministically. The littles-law endpoint applies Little's law, L = λ·W — the average number in a system equals the arrival rate times the average time in the system — and solves for whichever of the three you leave out; it holds for any stable system, from a checkout line to a request pipeline. The mm1 endpoint gives the full steady-state metrics of a single-server M/M/1 queue from the arrival rate λ and the service rate μ: the utilization ρ = λ/μ, the average number in the system and in the queue, the average time in the system and waiting, and the probability the system is empty — and it flags an unstable queue when ρ ≥ 1. The mmc endpoint extends this to a multi-server M/M/c queue with the Erlang-C waiting probability, returning the offered load in erlangs, the per-server utilization, the chance an arrival has to wait, and the same length and time metrics. Rates must share a time unit, and the times come out in that unit. Everything is computed locally and deterministically, so it is instant and private. Ideal for capacity-planning and operations tools, call-centre and staffing apps, server and throughput sizing, and operations-research education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is queueing theory; for descriptive statistics on a list of numbers use a statistics API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/queue-api","description":"oanor gateway"}],"tags":[{"name":"Queue"},{"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/littles-law":{"get":{"operationId":"get_v1_littles_law","tags":["Queue"],"summary":"Little's law (L = λ·W)","description":"","parameters":[{"name":"number_in_system","in":"query","required":false,"description":"Average number in system L","schema":{"type":"string"},"example":"10"},{"name":"arrival_rate","in":"query","required":false,"description":"Arrival rate λ","schema":{"type":"string"},"example":"2"},{"name":"time_in_system","in":"query","required":false,"description":"Average time in system W","schema":{"type":"string"},"example":"5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"law":"L = λ · W","note":"Little's law holds for any stable system: average number in system = arrival rate × average time in system.","solved_for":"W","arrival_rate":2,"time_in_system_W":5,"number_in_system_L":10},"meta":{"timestamp":"2026-06-04T01:59:02.710Z","request_id":"0e288407-1c59-4324-af34-a91347c218a4"},"status":"ok","message":"Little's law (L = λ·W)","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/mm1":{"get":{"operationId":"get_v1_mm1","tags":["Queue"],"summary":"M/M/1 single-server queue","description":"","parameters":[{"name":"arrival_rate","in":"query","required":true,"description":"Arrival rate λ","schema":{"type":"string"},"example":"8"},{"name":"service_rate","in":"query","required":true,"description":"Service rate μ","schema":{"type":"string"},"example":"10"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Steady-state M/M/1: ρ=λ/μ, L=ρ/(1−ρ), Lq=ρ²/(1−ρ), W=1/(μ−λ), Wq=λ/(μ(μ−λ)). Requires ρ<1.","model":"M/M/1","utilization":0.8,"arrival_rate":8,"service_rate":10,"avg_time_in_queue_Wq":0.4,"avg_time_in_system_W":0.5,"prob_system_empty_P0":0.2,"avg_number_in_queue_Lq":3.2,"avg_number_in_system_L":4},"meta":{"timestamp":"2026-06-04T01:59:02.805Z","request_id":"996e50bc-d17f-414f-a8bd-e9f2ac76aa57"},"status":"ok","message":"M/M/1 single-server queue","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/mmc":{"get":{"operationId":"get_v1_mmc","tags":["Queue"],"summary":"M/M/c multi-server queue","description":"","parameters":[{"name":"arrival_rate","in":"query","required":true,"description":"Arrival rate λ","schema":{"type":"string"},"example":"8"},{"name":"service_rate","in":"query","required":true,"description":"Service rate μ (per server)","schema":{"type":"string"},"example":"5"},{"name":"servers","in":"query","required":true,"description":"Number of servers c","schema":{"type":"string"},"example":"2"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Steady-state M/M/c with Erlang-C waiting probability. ρ=λ/(c·μ); requires ρ<1.","model":"M/M/c","servers":2,"utilization":0.8,"arrival_rate":8,"service_rate":5,"prob_wait_erlang_c":0.711111,"avg_time_in_queue_Wq":0.355556,"avg_time_in_system_W":0.555556,"offered_load_erlangs":1.6,"prob_system_empty_P0":0.111111,"avg_number_in_queue_Lq":2.844444,"avg_number_in_system_L":4.444444},"meta":{"timestamp":"2026-06-04T01:59:02.900Z","request_id":"9b8cd2ee-9dc6-42ae-94ae-0309ee711097"},"status":"ok","message":"M/M/c multi-server queue","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":{"api":"queue","note":"Queueing-theory maths (Little's law, M/M/1, M/M/c) — computed locally and deterministically, no key, no third-party service. Rates must share a time unit.","endpoints":["/v1/littles-law","/v1/mm1","/v1/mmc","/v1/meta"]},"meta":{"timestamp":"2026-06-04T01:59:02.997Z","request_id":"ff69b06e-cced-4cb6-9cc8-462ff3e71bae"},"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":2000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":900,"monthly_call_quota":40000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":250000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7500,"monthly_call_quota":1543000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/queue-api"}