{"openapi":"3.1.0","info":{"title":"Data Transfer API","version":"1.0.0","description":"Data-transfer and bandwidth maths as an API, computed locally and deterministically. The time endpoint computes how long a file takes to transfer at a given bandwidth, time = file bits ÷ (rate × (1 − overhead)), accepting sizes in B, KB, MB, GB, TB or the binary KiB/MiB/GiB and rates in bps, Kbps, Mbps, Gbps or bytes-per-second (MB/s), with an optional protocol-overhead allowance, and returns the time in seconds, minutes, hours and a human-readable form. The bandwidth endpoint works backwards: the bandwidth needed to move a file within a target time, in bps, Mbps, Gbps and MB/s. The convert endpoint converts a data size between decimal (1 MB = 1,000,000 bytes) and binary (MiB = 1,048,576) units, or a data rate between bit-rates and byte-rates. Everything is computed locally and deterministically, so it is instant and private. Ideal for networking, cloud, backup and streaming app developers, download-time and capacity-planning tools, and dev dashboards. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is transfer time and bandwidth; for media encoding bitrate use a bitrate API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/transfer-api","description":"oanor gateway"}],"tags":[{"name":"Transfer"},{"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/bandwidth":{"get":{"operationId":"get_v1_bandwidth","tags":["Transfer"],"summary":"Required bandwidth","description":"","parameters":[{"name":"file_size","in":"query","required":true,"description":"File size","schema":{"type":"string"},"example":"1"},{"name":"size_unit","in":"query","required":false,"description":"Size unit (default GB)","schema":{"type":"string"},"example":"GB"},{"name":"seconds","in":"query","required":true,"description":"Target time (seconds)","schema":{"type":"string"},"example":"60"},{"name":"overhead_percent","in":"query","required":false,"description":"Protocol overhead % (default 0)","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"gbps":0.133333333,"mbps":133.333333,"note":"bandwidth = file bits / time / (1 − overhead). Mbps is megabits per second; MB/s is megabytes per second (×8).","inputs":{"seconds":60,"file_size":1,"size_unit":"GB","overhead_percent":0},"mb_per_s":16.666667,"bits_per_second":133333333.3333},"meta":{"timestamp":"2026-06-04T18:38:13.969Z","request_id":"987c81b2-5840-421c-a7fc-7c7f121dcca6"},"status":"ok","message":"Required bandwidth","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/convert":{"get":{"operationId":"get_v1_convert","tags":["Transfer"],"summary":"Data unit conversion","description":"","parameters":[{"name":"value","in":"query","required":true,"description":"Value to convert","schema":{"type":"string"},"example":"1"},{"name":"from","in":"query","required":true,"description":"Unit (GB, MiB, Mbps, MB/s …)","schema":{"type":"string"},"example":"GB"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"GB":1,"KB":1000000,"MB":1000,"TB":0.001,"GiB":0.931322575,"KiB":976562.5,"MiB":953.674316,"bits":8000000000,"mode":"size","note":"Decimal (KB=1000) and binary (KiB=1024) sizes from the input.","bytes":1000000000,"inputs":{"from":"GB","value":1}},"meta":{"timestamp":"2026-06-04T18:38:14.093Z","request_id":"a8e9e379-f0fe-48c8-aaad-b1fda5b0b4be"},"status":"ok","message":"Data unit convert","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/time":{"get":{"operationId":"get_v1_time","tags":["Transfer"],"summary":"Transfer time","description":"","parameters":[{"name":"file_size","in":"query","required":true,"description":"File size","schema":{"type":"string"},"example":"1"},{"name":"size_unit","in":"query","required":false,"description":"B | KB | MB | GB | TB | GiB … (default GB)","schema":{"type":"string"},"example":"GB"},{"name":"bandwidth","in":"query","required":true,"description":"Bandwidth value","schema":{"type":"string"},"example":"100"},{"name":"bandwidth_unit","in":"query","required":false,"description":"bps | Mbps | Gbps | MB/s (default Mbps)","schema":{"type":"string"},"example":"Mbps"},{"name":"overhead_percent","in":"query","required":false,"description":"Protocol overhead % (default 0)","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"time = file bits / (bandwidth bits-per-second × (1 − overhead)). Bytes are 8 bits; SI units (1 MB = 1,000,000 bytes).","hours":0.02222222,"human":"0h 1m 20s","inputs":{"bandwidth":100,"file_size":1,"size_unit":"GB","bandwidth_unit":"Mbps","overhead_percent":0},"minutes":1.333333,"seconds":80},"meta":{"timestamp":"2026-06-04T18:38:14.204Z","request_id":"e2b654f4-a198-4280-81c2-ecee71ad613d"},"status":"ok","message":"Transfer time","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":"Sizes in SI (1 MB = 1,000,000 bytes) or binary (MiB = 1,048,576). Rates in bits/s (Mbps) or bytes/s (MB/s). Real throughput is usually below the line rate — add overhead.","service":"transfer-api","formulae":{"bits":"1 byte = 8 bits","time":"time = file_bits / (rate_bits_per_s × (1 − overhead))","bandwidth":"rate = file_bits / time / (1 − overhead)"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/time":"Transfer time for a file at a bandwidth, with an optional protocol-overhead allowance.","GET /v1/convert":"Convert a data size (B…TiB) or rate (bps…Gbps, MB/s) between units.","GET /v1/bandwidth":"Bandwidth needed to move a file within a target time."},"description":"Data-transfer and bandwidth calculator: transfer time, required bandwidth, and data size/rate unit conversion."},"meta":{"timestamp":"2026-06-04T18:38:14.292Z","request_id":"dfa02682-8549-4bfd-a9ea-ec56b88fdce7"},"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":600,"monthly_call_quota":40000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1800,"monthly_call_quota":300000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5900,"monthly_call_quota":1500000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/transfer-api"}