{"openapi":"3.1.0","info":{"title":"Network Calc","version":"1.0.0","description":"Network engineering maths for agents: subnetting, IPv6 formats, CIDR aggregation, bandwidth, TCP windows, MTU and VoIP. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Network Calc: Network engineering maths for agents: subnetting, IPv6 formats, CIDR aggregation, bandwidth, TCP windows, MTU and VoIP. Use /subnet-vlsm to split a network by host needs, /cidr-ipv6 for IPv6 blocks, /ip-format to convert address notations, /cidr-aggregate and /cidr-compare for supernets and overlaps, /netmask-convert for masks, /transfer-time and /tcp-throughput for bandwidth and window sizing, /mtu-mss for tunnel overhead, /ethernet-efficiency for line-rate packet maths, /voip-bandwidth for call bandwidth and /propagation-delay for fibre latency. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://network-calc.x402tookit.com"}],"paths":{"/cidr-aggregate":{"get":{"operationId":"cidr_aggregate","summary":"Summarise IPv4 or IPv6 CIDR blocks into the minimal set (merging adjacent and overlapping blocks) plus the covering supernet.","description":"Summarise IPv4 or IPv6 CIDR blocks into the minimal set (merging adjacent and overlapping blocks) plus the covering supernet.","tags":["cidr","aggregation","supernet","route-summarization"],"parameters":[{"name":"cidrs","in":"query","required":true,"description":"Prefixes separated by commas, spaces or newlines, for example 10.0.0.0/24,10.0.1.0/24,10.0.3.0/24","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"inputCount":{"type":["null","number"]},"outputCount":{"type":["null","number"]},"ipv4":{"type":["array","null"],"items":{"type":"string"}},"ipv6":{"type":["array","null"]},"ipv4Supernet":{"type":["null","string"]},"ipv6Supernet":{},"ipv4AddressesCovered":{"type":["null","string"]},"ipv4SupernetGap":{"type":["null","string"]},"ipv6AddressesCovered":{"type":["null","string"]},"ipv6SupernetGap":{"type":["null","string"]},"ipv4SingleSupernetExact":{"type":["boolean","null"]},"ipv6SingleSupernetExact":{"type":["boolean","null"]},"reductionPercent":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"AGGREGATED","summary":"6 prefixes reduce to 2: IPv4 10.0.0.0/22, 10.0.8.0/24.","reasons":["Overlapping and adjacent blocks are merged, then the merged ranges are written as the fewest aligned CIDR blocks (the minimal cover is unique).","The single covering supernet also contains addresses that are NOT in your list (see the gap): do not announce it unless you hold all of that space."],"inputCount":6,"outputCount":2,"ipv4":["10.0.0.0/22","10.0.8.0/24"],"ipv6":[],"ipv4Supernet":"10.0.0.0/20","ipv6Supernet":null,"ipv4AddressesCovered":"1280","ipv4SupernetGap":"2816","ipv6AddressesCovered":"0","ipv6SupernetGap":"0","ipv4SingleSupernetExact":false,"ipv6SingleSupernetExact":false,"reductionPercent":66.67,"degraded":false,"notChecked":["whether you may announce the summary: aggregating routes that include space you do not hold creates a hijack risk","route-map or IRR/RPKI consequences of changing announced prefixes","…1 more"],"source":"RFC 4632 CIDR aggregation (exact minimal cover by aligned blocks), computed locally","asOf":"2026-10-11T14:45:30.250Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-aggregate"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-aggregate"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-aggregate"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-aggregate"}}]}}},"/cidr-compare":{"get":{"operationId":"cidr_compare","summary":"Compare two IPv4 or IPv6 CIDR blocks: equal, contains, contained, adjacent or disjoint, their common supernet, and test an IP.","description":"Compare two IPv4 or IPv6 CIDR blocks: equal, contains, contained, adjacent or disjoint, their common supernet, and test an IP.","tags":["cidr","overlap","containment","subnetting"],"parameters":[{"name":"a","in":"query","required":true,"description":"First block, for example 10.0.0.0/16","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second block, for example 10.0.5.0/24","schema":{"type":"string"}},{"name":"ip","in":"query","required":false,"description":"Optional address to test against both blocks","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"a":{"type":["null","string"]},"b":{"type":["null","string"]},"version":{"type":["null","number"]},"relationship":{"type":["null","string"]},"overlaps":{"type":["boolean","null"]},"overlapAddresses":{"type":["null","string"]},"siblings":{"type":["boolean","null"]},"mergedParent":{},"commonSupernet":{"type":["null","string"]},"addressesInA":{"type":["null","string"]},"addressesInB":{"type":["null","string"]},"ipTested":{"type":["null","string"]},"ipInA":{"type":["boolean","null"]},"ipInB":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"A_CONTAINS_B","summary":"10.0.0.0/16 contains 10.0.5.0/24.","reasons":["CIDR blocks are either nested or disjoint: they never partially overlap.","10.0.5.77 is inside 10.0.0.0/16 and inside 10.0.5.0/24."],"a":"10.0.0.0/16","b":"10.0.5.0/24","version":4,"relationship":"A_CONTAINS_B","overlaps":true,"overlapAddresses":"256","siblings":false,"mergedParent":null,"commonSupernet":"10.0.0.0/16","addressesInA":"65536","addressesInB":"256","ipTested":"10.0.5.77","ipInA":true,"ipInB":true,"degraded":false,"notChecked":["whether either block is allocated or routed","the host bits of inputs, which are cleared to the network address"],"source":"CIDR containment arithmetic (RFC 4632), computed locally","asOf":"2026-10-11T14:45:30.515Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-compare"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-compare"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-compare"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-compare"}}]}}},"/cidr-ipv6":{"get":{"operationId":"cidr_ipv6","summary":"IPv6 prefix calculator: first and last address, size, number of /64s, the nth subnet, address type and reverse DNS zone.","description":"IPv6 prefix calculator: first and last address, size, number of /64s, the nth subnet, address type and reverse DNS zone.","tags":["ipv6","cidr","subnetting","prefix"],"parameters":[{"name":"cidr","in":"query","required":true,"description":"IPv6 prefix, for example 2001:db8:abcd::/48","schema":{"type":"string"}},{"name":"subnetPrefix","in":"query","required":false,"description":"Prefix length of subnets to carve (greater than the prefix, up to 128)","schema":{"type":"integer"}},{"name":"index","in":"query","required":false,"description":"Zero-based number of the subnet to show (with subnetPrefix, default 0)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"cidr":{"type":["null","string"]},"prefixLength":{"type":["null","number"]},"network":{"type":["null","string"]},"first":{"type":["null","string"]},"last":{"type":["null","string"]},"expandedFirst":{"type":["null","string"]},"expandedLast":{"type":["null","string"]},"totalAddresses":{"type":["null","string"]},"totalAddressesPowerOfTwo":{"type":["null","number"]},"slash64Count":{"type":["null","string"]},"slash48Count":{"type":["null","string"]},"addressType":{"type":["null","string"]},"matchedSpecialPrefix":{"type":["null","string"]},"hostBitsSet":{"type":["boolean","null"]},"reverseZone":{"type":["null","string"]},"subnet":{"type":["null","object"],"properties":{"cidr":{"type":["null","string"]},"first":{"type":["null","string"]},"last":{"type":["null","string"]},"index":{"type":["null","string"]},"totalSubnets":{"type":["null","string"]}}},"netmask":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"2001:db8:abcd::/48: 1208925819614629174706176 addresses, 65536 /64 networks; documentation (RFC 3849).","reasons":["Network address matches the prefix.","Reverse zone: d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa."],"cidr":"2001:db8:abcd::/48","prefixLength":48,"network":"2001:db8:abcd::","first":"2001:db8:abcd::","last":"2001:db8:abcd:ffff:ffff:ffff:ffff:ffff","expandedFirst":"2001:0db8:abcd:0000:0000:0000:0000:0000","expandedLast":"2001:0db8:abcd:ffff:ffff:ffff:ffff:ffff","totalAddresses":"1208925819614629174706176","totalAddressesPowerOfTwo":80,"slash64Count":"65536","slash48Count":"1","addressType":"documentation (RFC 3849)","matchedSpecialPrefix":"2001:db8::/32","hostBitsSet":false,"reverseZone":"d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa","subnet":{"cidr":"2001:db8:abcd:5::/64","first":"2001:db8:abcd:5::","last":"2001:db8:abcd:5:ffff:ffff:ffff:ffff","index":"5","totalSubnets":"65536"},"netmask":"ffff:ffff:ffff:0000:0000:0000:0000:0000","degraded":false,"notChecked":["whether the prefix is allocated or routed (use a registry or routing lookup)","operational norms such as /64 per LAN and /48 per site, which are recommendations (RFC 6177)","…1 more"],"source":"RFC 4291 addressing architecture and RFC 5952 text form, computed locally","asOf":"2026-10-11T14:45:30.781Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-ipv6"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-ipv6"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-ipv6"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/cidr-ipv6"}}]}}},"/ethernet-efficiency":{"get":{"operationId":"ethernet_efficiency","summary":"Ethernet wire overhead, TCP/UDP goodput and maximum packets per second at line rate for a packet size and link speed.","description":"Ethernet wire overhead, TCP/UDP goodput and maximum packets per second at line rate for a packet size and link speed.","tags":["ethernet","goodput","line-rate","pps"],"parameters":[{"name":"linkMbps","in":"query","required":true,"description":"Link speed in Mbps, for example 1000 or 10000","schema":{"type":"number"}},{"name":"ipPacketBytes","in":"query","required":false,"description":"IP packet size in bytes, 20 to 9216 (default 1500)","schema":{"type":"integer"}},{"name":"protocol","in":"query","required":false,"description":"raw, tcp4 (default), tcp6, udp4 or udp6","schema":{"type":"string","enum":["raw","tcp4","tcp6","udp4","udp6"]}},{"name":"tcpTimestamps","in":"query","required":false,"description":"true: TCP timestamp option (12 bytes) is in use","schema":{"type":"string"}},{"name":"vlan","in":"query","required":false,"description":"true: 802.1Q VLAN tag (4 bytes) on the frame","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"linkMbps":{"type":["null","number"]},"ipPacketBytes":{"type":["null","number"]},"protocol":{"type":["null","string"]},"protocolHeaderBytes":{"type":["null","number"]},"payloadBytes":{"type":["null","number"]},"frameBytes":{"type":["null","number"]},"wireBytes":{"type":["null","number"]},"minimumFramePadding":{"type":["null","number"]},"overheadBytesPerPacket":{"type":["null","number"]},"l3EfficiencyPercent":{"type":["null","number"]},"goodputEfficiencyPercent":{"type":["null","number"]},"goodputMbps":{"type":["null","number"]},"goodputMBps":{"type":["null","number"]},"l3ThroughputMbps":{"type":["null","number"]},"packetsPerSecond":{"type":["null","number"]},"nanosecondsPerPacket":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"1500-byte IP packets (TCP over IPv4 (20 + 20)) use 1538 bytes on the wire; 94.15% efficiency gives 941.48 Mbps of goodput on a 1000 Mbps link; 81274 packets per second.","reasons":["Wire bytes = 1500 IP + 18 Ethernet (header, FCS) + 8 preamble + 12 interframe gap.","Goodput counts only transport payload bytes (the data inside TCP or UDP)."],"linkMbps":1000,"ipPacketBytes":1500,"protocol":"tcp4","protocolHeaderBytes":52,"payloadBytes":1448,"frameBytes":1518,"wireBytes":1538,"minimumFramePadding":0,"overheadBytesPerPacket":90,"l3EfficiencyPercent":97.5293,"goodputEfficiencyPercent":94.1482,"goodputMbps":941.4824,"goodputMBps":117.6853,"l3ThroughputMbps":975.2926,"packetsPerSecond":81274.38,"nanosecondsPerPacket":12304,"degraded":false,"notChecked":["TCP acknowledgements and retransmissions, which consume reverse-path and forward-path capacity","real devices that cannot forward minimum-size packets at line rate","…3 more"],"source":"IEEE 802.3 framing: preamble and start delimiter 8, header 14, FCS 4, interframe gap 12 bytes, 64-byte minimum frame, computed locally","asOf":"2026-10-11T14:45:31.046Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ethernet-efficiency"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ethernet-efficiency"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ethernet-efficiency"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ethernet-efficiency"}}]}}},"/ip-format":{"get":{"operationId":"ip_format","summary":"Convert an IPv4 or IPv6 address between notations: RFC 5952 compressed, expanded, integer, hex, binary, reverse DNS, NAT64.","description":"Convert an IPv4 or IPv6 address between notations: RFC 5952 compressed, expanded, integer, hex, binary, reverse DNS, NAT64.","tags":["ipv6","ipv4","ip-address","converter"],"parameters":[{"name":"ip","in":"query","required":true,"description":"IPv4 (192.0.2.1) or IPv6 address, any valid form, for example 2001:0db8:0:0:0:ff00:42:8329","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"valid":{"type":["boolean","null"]},"version":{"type":["null","number"]},"canonical":{"type":["null","string"]},"compressed":{"type":["null","string"]},"expanded":{"type":["null","string"]},"integer":{"type":["null","string"]},"hex":{"type":["null","string"]},"binary":{"type":["null","string"]},"reverseDns":{"type":["null","string"]},"ipv4Mapped":{},"ipv4MappedHex":{},"nat64":{},"sixToFourPrefix":{},"embeddedIpv4":{},"addressType":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CONVERTED","summary":"2001:db8::ff00:42:8329 (compressed per RFC 5952) = 2001:0db8:0000:0000:0000:ff00:0042:8329; documentation (RFC 3849).","reasons":["RFC 5952: lower case, leading zeros dropped, the longest run of two or more zero groups becomes ::, the first one if tied, and a single zero group is never shortened.","No embedded IPv4 address."],"valid":true,"version":6,"canonical":"2001:db8::ff00:42:8329","compressed":"2001:db8::ff00:42:8329","expanded":"2001:0db8:0000:0000:0000:ff00:0042:8329","integer":"42540766411282592856904265327123268393","hex":"0x20010db8000000000000ff0000428329","binary":"0010000000000001:0000110110111000:0000000000000000:0000000000000000:0000000000000000:1111111100000000:0000000001000010:1000001100101001","reverseDns":"9.2.3.8.2.4.0.0.0.0.f.f.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa","ipv4Mapped":null,"ipv4MappedHex":null,"nat64":null,"sixToFourPrefix":null,"embeddedIpv4":null,"addressType":"documentation (RFC 3849)","degraded":false,"notChecked":["zone identifiers such as %eth0 (refused) and port numbers","whether the address is assigned or reachable","…2 more"],"source":"RFC 4291 and RFC 5952 text representations, RFC 6052 (NAT64), RFC 3056 (6to4), computed locally","asOf":"2026-10-11T14:45:31.309Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ip-format"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ip-format"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ip-format"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/ip-format"}}]}}},"/mtu-mss":{"get":{"operationId":"mtu_mss","summary":"TCP MSS from an MTU for IPv4 or IPv6, effective MTU through tunnels (PPPoE, GRE, VXLAN, WireGuard) and IPv4 fragment counts.","description":"TCP MSS from an MTU for IPv4 or IPv6, effective MTU through tunnels (PPPoE, GRE, VXLAN, WireGuard) and IPv4 fragment counts.","tags":["mtu","mss","tunnel","fragmentation"],"parameters":[{"name":"mtu","in":"query","required":true,"description":"Link MTU in bytes (the IP packet size, 1500 for Ethernet)","schema":{"type":"integer"}},{"name":"ipVersion","in":"query","required":false,"description":"4 (default) or 6","schema":{"type":"integer"}},{"name":"tunnel","in":"query","required":false,"description":"Encapsulation: none, pppoe, gre, gre-ipv6, ipip, vxlan, geneve, wireguard-ipv4, wireguard-ipv6, mpls (default none)","schema":{"type":"string","enum":["none","pppoe","gre","gre-ipv6","ipip","vxlan","geneve","wireguard-ipv4","wireguard-ipv6","mpls"]}},{"name":"tcpTimestamps","in":"query","required":false,"description":"true: TCP timestamp option (12 bytes) is in use","schema":{"type":"string"}},{"name":"payloadBytes","in":"query","required":false,"description":"IPv4 payload to send, to count fragments (UDP datagram incl. 8-byte header, or any IP payload)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mtu":{"type":["null","number"]},"ipVersion":{"type":["null","number"]},"tunnel":{"type":["null","string"]},"tunnelOverheadBytes":{"type":["null","number"]},"effectiveMtu":{"type":["null","number"]},"ipHeaderBytes":{"type":["null","number"]},"tcpHeaderBytes":{"type":["null","number"]},"mssBytes":{"type":["null","number"]},"mssWithoutTimestamps":{"type":["null","number"]},"udpPayloadMax":{"type":["null","number"]},"payloadEfficiencyPercent":{"type":["null","number"]},"minimumMtuForVersion":{"type":["null","number"]},"meetsMinimumMtu":{"type":["boolean","null"]},"clampMssTo":{"type":["null","number"]},"fragmentation":{"type":["null","object"],"properties":{"payloadBytes":{"type":["null","number"]},"fragmentPayloadBytes":{"type":["null","number"]},"fragments":{"type":["null","number"]},"totalIpBytes":{"type":["null","number"]}}},"tunnelNote":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"MTU 1500 - 60 (wireguard-ipv4) = 1440: TCP MSS 1400 over IPv4; 97.22% of each packet is TCP payload.","reasons":["TCP MSS = effective MTU 1440 - IP header 20 - TCP header 20 = 1400.","Tunnel overhead 60 bytes (WireGuard over IPv4 (20 IP + 8 UDP + 32 WireGuard)).","…1 more"],"mtu":1500,"ipVersion":4,"tunnel":"wireguard-ipv4","tunnelOverheadBytes":60,"effectiveMtu":1440,"ipHeaderBytes":20,"tcpHeaderBytes":20,"mssBytes":1400,"mssWithoutTimestamps":1400,"udpPayloadMax":1412,"payloadEfficiencyPercent":97.2222,"minimumMtuForVersion":576,"meetsMinimumMtu":true,"clampMssTo":1400,"fragmentation":{"payloadBytes":4000,"fragmentPayloadBytes":1416,"fragments":3,"totalIpBytes":4060},"tunnelNote":"WireGuard over IPv4 (20 IP + 8 UDP + 32 WireGuard)","degraded":false,"notChecked":["IPv4 or TCP options other than timestamps (SACK, window scale, MD5 add bytes only in SYN or specific segments)","IPsec ESP overhead, which varies with cipher, padding and NAT traversal (typically 50 to 73 bytes)","…3 more"],"source":"IPv4/IPv6/TCP header sizes (RFC 791, RFC 8200, RFC 9293), standard encapsulation overheads, computed locally","asOf":"2026-10-11T14:45:31.571Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/mtu-mss"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/mtu-mss"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/mtu-mss"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/mtu-mss"}}]}}},"/netmask-convert":{"get":{"operationId":"netmask_convert","summary":"Convert an IPv4 prefix length, netmask, wildcard or hex mask into every other form with host counts; flags bad masks.","description":"Convert an IPv4 prefix length, netmask, wildcard or hex mask into every other form with host counts; flags bad masks.","tags":["netmask","subnet","wildcard","ipv4"],"parameters":[{"name":"value","in":"query","required":true,"description":"/24, 24, 255.255.255.0, wildcard 0.0.0.255 or hex 0xffffff00","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"valid":{"type":["boolean","null"]},"inputKind":{"type":["null","string"]},"prefixLength":{"type":["null","number"]},"cidrSuffix":{"type":["null","string"]},"netmask":{"type":["null","string"]},"wildcard":{"type":["null","string"]},"hex":{"type":["null","string"]},"binary":{"type":["null","string"]},"totalAddresses":{"type":["null","number"]},"usableHosts":{"type":["null","number"]},"networkBits":{"type":["null","number"]},"hostBits":{"type":["null","number"]},"classfulDefault":{},"subnetsOfPrefix24":{"type":["null","number"]},"blockSizeLastOctet":{},"percentOfIpv4Space":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CONVERTED","summary":"/22 = 255.255.252.0 (wildcard 0.0.3.255), 1024 addresses, 1022 usable hosts.","reasons":["Input read as a dotted.","Usable hosts exclude the network and broadcast addresses."],"valid":true,"inputKind":"dotted","prefixLength":22,"cidrSuffix":"/22","netmask":"255.255.252.0","wildcard":"0.0.3.255","hex":"0xfffffc00","binary":"11111111.11111111.11111100.00000000","totalAddresses":1024,"usableHosts":1022,"networkBits":22,"hostBits":10,"classfulDefault":null,"subnetsOfPrefix24":4,"blockSizeLastOctet":null,"percentOfIpv4Space":0.00002384,"degraded":false,"notChecked":["IPv6 (prefix length only; use /cidr-ipv6)","0.0.0.0 and 255.255.255.255 are read as masks /0 and /32 (they are also the all-hosts and exact-match wildcards)","…1 more"],"source":"CIDR/netmask arithmetic (RFC 4632) and RFC 3021 for /31, computed locally","asOf":"2026-10-11T14:45:31.831Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/netmask-convert"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/netmask-convert"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/netmask-convert"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/netmask-convert"}}]}}},"/propagation-delay":{"get":{"operationId":"propagation_delay","summary":"Propagation delay (one way and round trip) over fibre, copper or radio for a distance or two coordinates, plus serialization.","description":"Propagation delay (one way and round trip) over fibre, copper or radio for a distance or two coordinates, plus serialization.","tags":["latency","propagation-delay","fiber","network"],"parameters":[{"name":"distanceKm","in":"query","required":false,"description":"Cable or path length in km (use this, or the four coordinates)","schema":{"type":"number"}},{"name":"lat1","in":"query","required":false,"description":"Start latitude (great-circle distance with lat2, lon1, lon2)","schema":{"type":"number"}},{"name":"lon1","in":"query","required":false,"description":"Start longitude","schema":{"type":"number"}},{"name":"lat2","in":"query","required":false,"description":"End latitude","schema":{"type":"number"}},{"name":"lon2","in":"query","required":false,"description":"End longitude","schema":{"type":"number"}},{"name":"medium","in":"query","required":false,"description":"fiber (default), copper, vacuum or air","schema":{"type":"string","enum":["fiber","copper","vacuum","air"]}},{"name":"routeFactor","in":"query","required":false,"description":"Real cable length divided by great-circle distance, 1 to 3 (default 1; real routes are often 1.3 to 2)","schema":{"type":"number"}},{"name":"packetBytes","in":"query","required":false,"description":"Packet size in bytes for serialization delay (default 1500)","schema":{"type":"number"}},{"name":"linkMbps","in":"query","required":false,"description":"Link speed in Mbps for serialization delay","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"distanceKm":{"type":["null","number"]},"distanceSource":{"type":["null","string"]},"routeFactor":{"type":["null","number"]},"pathKm":{"type":["null","number"]},"medium":{"type":["null","string"]},"refractiveIndex":{"type":["null","number"]},"speedKmPerSecond":{"type":["null","number"]},"percentOfLightSpeed":{"type":["null","number"]},"microsecondsPerKm":{"type":["null","number"]},"oneWayMs":{"type":["null","number"]},"roundTripMs":{"type":["null","number"]},"serializationMs":{},"packetBytes":{"type":["null","number"]},"linkMbps":{},"totalOneWayMs":{"type":["null","number"]},"vacuumOneWayMs":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"5570.2 km of fiber: 27.276 ms one way, 54.552 ms round trip at 204218 km/s (68.1% of c).","reasons":["Speed in optical fibre (group index about 1.468): c / 1.468 = 204218.3 km/s, or 4.897 microseconds per km.","This is the physical lower bound: real round-trip times are higher because of detours, queueing and equipment."],"distanceKm":5570.2299,"distanceSource":"great circle","routeFactor":1,"pathKm":5570.2299,"medium":"fiber","refractiveIndex":1.468,"speedKmPerSecond":204218.296,"percentOfLightSpeed":68.1199,"microsecondsPerKm":4.89672,"oneWayMs":27.275861,"roundTripMs":54.551722,"serializationMs":null,"packetBytes":1500,"linkMbps":null,"totalOneWayMs":27.275861,"vacuumOneWayMs":18.580287,"degraded":false,"notChecked":["real cable routes, which are longer than the great circle (submarine and terrestrial paths add 30% to 100% or more)","equipment, queueing, routing and processing delay, which usually exceed propagation delay on short paths","…3 more"],"source":"Propagation speed c / n with c = 299,792.458 km/s; great-circle distance on a 6371.0088 km sphere, computed locally","asOf":"2026-10-11T14:45:32.093Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/propagation-delay"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/propagation-delay"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/propagation-delay"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/propagation-delay"}}]}}},"/subnet-vlsm":{"get":{"operationId":"subnet_vlsm","summary":"Split an IPv4 network into equal subnets, or allocate VLSM subnets from host counts (largest first) with ranges and leftovers.","description":"Split an IPv4 network into equal subnets, or allocate VLSM subnets from host counts (largest first) with ranges and leftovers.","tags":["subnetting","vlsm","ipv4","cidr"],"parameters":[{"name":"network","in":"query","required":true,"description":"IPv4 CIDR to divide, for example 192.168.1.0/24","schema":{"type":"string"}},{"name":"hosts","in":"query","required":false,"description":"Host requirements, comma separated, optionally named: LAN-A:100,LAN-B:50,WAN:2","schema":{"type":"string"}},{"name":"parts","in":"query","required":false,"description":"Equal split into this many subnets (a power of two, up to 1024)","schema":{"type":"integer"}},{"name":"newPrefix","in":"query","required":false,"description":"Equal split into subnets of this prefix length","schema":{"type":"integer"}},{"name":"pointToPoint","in":"query","required":false,"description":"true: give 2-host links a /31 (RFC 3021) instead of a /30","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"network":{"type":["null","string"]},"mode":{"type":["null","string"]},"subnetCount":{"type":["null","number"]},"subnetPrefix":{},"addressesPerSubnet":{},"usableHostsPerSubnet":{},"subnets":{"type":["array","null"]},"allocations":{"type":["array","null"],"items":{"type":"object","properties":{"name":{"type":["null","string"]},"requestedHosts":{"type":["null","number"]},"cidr":{"type":["null","string"]},"network":{"type":["null","string"]},"netmask":{"type":["null","string"]},"firstUsable":{"type":["null","string"]},"lastUsable":{"type":["null","string"]},"broadcast":{"type":["null","string"]},"totalAddresses":{"type":["null","number"]},"usableHosts":{"type":["null","number"]},"prefix":{"type":["null","number"]},"fitsInParent":{"type":["boolean","null"]},"wastedAddresses":{"type":["null","number"]}}}},"freeBlocks":{"type":["array","null"],"items":{"type":"object","properties":{"cidr":{"type":["null","string"]},"addresses":{"type":["null","number"]}}}},"totalAddresses":{"type":["null","number"]},"usedAddresses":{"type":["null","number"]},"utilizationPercent":{"type":["null","number"]},"fits":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ALLOCATED","summary":"5 subnets allocated from 192.168.1.0/24, using 244 of 256 addresses (95.31%).","reasons":["Subnets are placed largest first, each aligned on its own boundary, so no space is lost to misalignment.","Each subnet is the smallest power of two holding the hosts plus network and broadcast addresses (a /31 point-to-point link has no broadcast, RFC 3021)."],"network":"192.168.1.0/24","mode":"vlsm","subnetCount":5,"subnetPrefix":null,"addressesPerSubnet":null,"usableHostsPerSubnet":null,"subnets":[],"allocations":[{"name":"Sales","requestedHosts":100,"cidr":"192.168.1.0/25","network":"192.168.1.0","netmask":"255.255.255.128","firstUsable":"192.168.1.1","lastUsable":"192.168.1.126","broadcast":"192.168.1.127","totalAddresses":128,"usableHosts":126,"prefix":25,"fitsInParent":true,"wastedAddresses":26},{"name":"Eng","requestedHosts":50,"cidr":"192.168.1.128/26","network":"192.168.1.128","netmask":"255.255.255.192","firstUsable":"192.168.1.129","lastUsable":"192.168.1.190","broadcast":"192.168.1.191","totalAddresses":64,"usableHosts":62,"prefix":26,"fitsInParent":true,"wastedAddresses":12}],"freeBlocks":[{"cidr":"192.168.1.244/30","addresses":4},{"cidr":"192.168.1.248/29","addresses":8}],"totalAddresses":256,"usedAddresses":244,"utilizationPercent":95.3125,"fits":true,"degraded":false,"notChecked":["whether the space is allocated to you or overlaps existing routes","growth: each subnet is sized for exactly the hosts asked for, with no spare room","…2 more"],"source":"RFC 4632 CIDR and RFC 3021 /31 arithmetic, computed locally","asOf":"2026-10-11T14:45:32.356Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/subnet-vlsm"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/subnet-vlsm"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/subnet-vlsm"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/subnet-vlsm"}}]}}},"/tcp-throughput":{"get":{"operationId":"tcp_throughput","summary":"TCP bandwidth-delay product, window size and scale factor needed, throughput limits from window and from packet loss (Mathis).","description":"TCP bandwidth-delay product, window size and scale factor needed, throughput limits from window and from packet loss (Mathis).","tags":["tcp","bdp","window-size","throughput"],"parameters":[{"name":"rttMs","in":"query","required":true,"description":"Round-trip time in milliseconds","schema":{"type":"number"}},{"name":"bandwidthMbps","in":"query","required":false,"description":"Link bandwidth in Mbps (to size the window)","schema":{"type":"number"}},{"name":"windowBytes","in":"query","required":false,"description":"Receive window in bytes (default 65535 without scaling)","schema":{"type":"number"}},{"name":"mssBytes","in":"query","required":false,"description":"Maximum segment size in bytes (default 1460)","schema":{"type":"number"}},{"name":"lossPercent","in":"query","required":false,"description":"Packet loss in percent (for the Mathis limit)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"rttMs":{"type":["null","number"]},"windowBytes":{"type":["null","number"]},"mssBytes":{"type":["null","number"]},"windowLimitedMbps":{"type":["null","number"]},"windowLimitedMBps":{"type":["null","number"]},"bdpBytes":{"type":["null","number"]},"bdpKiB":{"type":["null","number"]},"bdpMiB":{"type":["null","number"]},"windowToFillLink":{"type":["null","number"]},"windowScaleShift":{"type":["null","number"]},"windowScaleMultiplier":{"type":["null","number"]},"segmentsInFlight":{"type":["null","number"]},"linkUtilizationPercent":{"type":["null","number"]},"expectedMbps":{"type":["null","number"]},"limitedBy":{"type":["null","string"]},"mathisLimitMbps":{"type":["null","number"]},"mathisLossPercent":{"type":["null","number"]},"bandwidthMbps":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"LOSS_LIMITED","summary":"Expected throughput about 2.861004 Mbps, limited by loss; BDP 5.96 MiB.","reasons":["Window-limited: window / RTT = 65535 bytes x 8 / 50 ms = 10.4856 Mbps.","Bandwidth-delay product = 1000 Mbps x 50 ms = 6250000 bytes in flight to keep the link full; that needs window scaling with shift 7 (x128).","…1 more"],"rttMs":50,"windowBytes":65535,"mssBytes":1460,"windowLimitedMbps":10.4856,"windowLimitedMBps":1.3107,"bdpBytes":6250000,"bdpKiB":6103.5156,"bdpMiB":5.960464,"windowToFillLink":6250000,"windowScaleShift":7,"windowScaleMultiplier":128,"segmentsInFlight":4280.82,"linkUtilizationPercent":1.0486,"expectedMbps":2.861004,"limitedBy":"loss","mathisLimitMbps":2.861004,"mathisLossPercent":1,"bandwidthMbps":1000,"degraded":false,"notChecked":["congestion-control algorithm: the Mathis figure is an upper bound for Reno-style TCP; CUBIC and BBR reach different rates","slow start and short flows","…3 more"],"source":"Bandwidth-delay product, RFC 7323 window scaling (max shift 14) and Mathis et al. 1997 (throughput <= (MSS/RTT) x sqrt(3/2) / sqrt(p)), computed locally","asOf":"2026-10-11T14:45:32.620Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/tcp-throughput"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/tcp-throughput"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/tcp-throughput"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/tcp-throughput"}}]}}},"/transfer-time":{"get":{"operationId":"transfer_time","summary":"Time to transfer a file at a bandwidth (with protocol overhead), or the bandwidth or data size implied by the other two.","description":"Time to transfer a file at a bandwidth (with protocol overhead), or the bandwidth or data size implied by the other two.","tags":["bandwidth","transfer-time","throughput","download"],"parameters":[{"name":"size","in":"query","required":false,"description":"Data size (with sizeUnit)","schema":{"type":"number"}},{"name":"sizeUnit","in":"query","required":false,"description":"B, KB, MB (default), GB, TB, PB (decimal) or KiB, MiB, GiB, TiB, PiB (binary); all BYTES","schema":{"type":"string"}},{"name":"bandwidth","in":"query","required":false,"description":"Link or throughput rate (with rateUnit)","schema":{"type":"number"}},{"name":"rateUnit","in":"query","required":false,"description":"bps, kbps, Mbps (default), Gbps, Tbps, or bytes per second: KB/s, MB/s, GB/s, MiB/s, GiB/s","schema":{"type":"string"}},{"name":"seconds","in":"query","required":false,"description":"Duration in seconds (to solve for size or bandwidth)","schema":{"type":"number"}},{"name":"overheadPercent","in":"query","required":false,"description":"Share of the rate lost to protocol overhead and inefficiency, 0 to 90 (default 0)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"seconds":{"type":["null","number"]},"duration":{"type":["null","string"]},"minutes":{"type":["null","number"]},"hours":{"type":["null","number"]},"sizeBytes":{"type":["null","number"]},"sizeMB":{"type":["null","number"]},"sizeMiB":{"type":["null","number"]},"sizeGB":{"type":["null","number"]},"sizeGiB":{"type":["null","number"]},"rateMbps":{"type":["null","number"]},"effectiveMbps":{"type":["null","number"]},"effectiveMBps":{"type":["null","number"]},"effectiveMiBps":{"type":["null","number"]},"overheadPercent":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"1 GB at 100 Mbps (5% overhead) takes 1 min 24 s (84.211 s).","reasons":["Effective rate 95 Mbps = 11.875 MB/s.","Time = size x 8 / effective rate."],"seconds":84.210526,"duration":"1 min 24 s","minutes":1.403509,"hours":0.02339181,"sizeBytes":1000000000,"sizeMB":1000,"sizeMiB":953.674316,"sizeGB":1,"sizeGiB":0.93132257,"rateMbps":100,"effectiveMbps":95,"effectiveMBps":11.875,"effectiveMiBps":11.32488251,"overheadPercent":5,"degraded":false,"notChecked":["latency and TCP slow start, which make short transfers slower than size / rate suggests (see /tcp-throughput)","the real bottleneck: disk, CPU, server limits, Wi-Fi contention or a shared link","…2 more"],"source":"time = bits / (rate x efficiency), computed locally","asOf":"2026-10-11T14:45:32.871Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/transfer-time"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/transfer-time"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/transfer-time"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/transfer-time"}}]}}},"/voip-bandwidth":{"get":{"operationId":"voip_bandwidth","summary":"Bandwidth of a VoIP call (IP and Ethernet level) for a codec and packetization time, and totals for many calls.","description":"Bandwidth of a VoIP call (IP and Ethernet level) for a codec and packetization time, and totals for many calls.","tags":["voip","bandwidth","codec","rtp"],"parameters":[{"name":"codec","in":"query","required":false,"description":"g711, g722, g729, g726-32, g726-24, gsm or custom (then give bitrateKbps)","schema":{"type":"string"}},{"name":"bitrateKbps","in":"query","required":false,"description":"Codec payload bitrate in kbps (for a custom codec)","schema":{"type":"number"}},{"name":"ptimeMs","in":"query","required":false,"description":"Packetization time in ms, 10 to 120 (default 20)","schema":{"type":"number"}},{"name":"ipVersion","in":"query","required":false,"description":"4 (default) or 6","schema":{"type":"integer"}},{"name":"layer2","in":"query","required":false,"description":"ethernet (default, 18 bytes with FCS), ethernet-vlan (22), ppp (6) or none","schema":{"type":"string","enum":["ethernet","ethernet-vlan","ppp","none"]}},{"name":"calls","in":"query","required":false,"description":"Number of simultaneous calls (default 1)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"codec":{"type":["null","string"]},"codecDescription":{"type":["null","string"]},"codecBitrateKbps":{"type":["null","number"]},"ptimeMs":{"type":["null","number"]},"packetsPerSecond":{"type":["null","number"]},"payloadBytes":{"type":["null","number"]},"headerBytesIpUdpRtp":{"type":["null","number"]},"layer2HeaderBytes":{"type":["null","number"]},"ipPacketBytes":{"type":["null","number"]},"frameBytes":{"type":["null","number"]},"ipKbpsPerCall":{"type":["null","number"]},"linkKbpsPerCall":{"type":["null","number"]},"overheadPercent":{"type":["null","number"]},"calls":{"type":["null","number"]},"totalIpKbps":{"type":["null","number"]},"totalLinkKbps":{"type":["null","number"]},"totalLinkMbps":{"type":["null","number"]},"callsPerMbps":{"type":["null","number"]},"warning":{},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"g711 at 20 ms: 160-byte payload, 80 kbps at the IP level, 87.2 kbps on ethernet; 10 calls need 872 kbps each way.","reasons":["Each packet carries 160 payload bytes plus 40 bytes of IP/UDP/RTP header and 18 bytes of link header; 50 packets per second.","Calls are full duplex: the figure applies in each direction."],"codec":"g711","codecDescription":"G.711 PCMU/PCMA, 64 kbps","codecBitrateKbps":64,"ptimeMs":20,"packetsPerSecond":50,"payloadBytes":160,"headerBytesIpUdpRtp":40,"layer2HeaderBytes":18,"ipPacketBytes":200,"frameBytes":218,"ipKbpsPerCall":80,"linkKbpsPerCall":87.2,"overheadPercent":26.61,"calls":10,"totalIpKbps":800,"totalLinkKbps":872,"totalLinkMbps":0.872,"callsPerMbps":11.468,"warning":null,"degraded":false,"notChecked":["RTCP (adds roughly 5% of media bandwidth), SRTP authentication tags (4 to 10 bytes), and SIP signalling","silence suppression and VAD, which lower the average","…3 more"],"source":"RTP (RFC 3550) 12-byte header over UDP 8 and IP 20 or 40; codec bitrates per ITU-T G.711, G.722, G.726, G.729; computed locally","asOf":"2026-10-11T14:45:33.121Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/voip-bandwidth"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/voip-bandwidth"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/voip-bandwidth"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://network-calc.x402tookit.com/voip-bandwidth"}}]}}}}}