{"openapi":"3.1.0","info":{"title":"Cloudflare CDN Speed Tester","description":"HTTP API for testing download speed from Cloudflare CDN edge nodes. Designed for HLS playback scenarios where typical segment sizes range from 500KB to 3MB.","version":"1.0.0"},"servers":[{"url":"https://speed.vpstv.net"}],"paths":{"/":{"get":{"summary":"OpenAPI specification","operationId":"getSpec","responses":{"200":{"description":"This OpenAPI document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/info":{"get":{"summary":"Connection information","description":"Returns metadata about the current connection including PoP location, client IP, and protocol details.","operationId":"getInfo","responses":{"200":{"description":"Connection info","content":{"application/json":{"schema":{"type":"object","properties":{"colo":{"type":"string","example":"LAX","description":"Cloudflare PoP code"},"country":{"type":"string","example":"US"},"region":{"type":"string","example":"California","description":"Region or state"},"city":{"type":"string","example":"Los Angeles"},"asn":{"type":"integer","example":13335,"description":"Autonomous System Number (ISP identifier)"},"asOrganization":{"type":"string","example":"Cloudflare Inc","description":"ISP or network operator name"},"clientIp":{"type":"string","example":"1.2.3.4"},"httpProtocol":{"type":"string","example":"h2"},"tlsVersion":{"type":"string","example":"TLSv1.3"},"availableSizes":{"type":"array","items":{"type":"string","enum":["500kb","1mb","2mb","3mb"]}}}}}}}}}},"/download/{size}":{"get":{"summary":"Download test payload","description":"Core speed test endpoint. First request fills the edge cache (MISS), subsequent requests are served from cache (HIT). Use Cache-Control: no-store on the client side to bypass browser cache.","operationId":"downloadPayload","parameters":[{"name":"size","in":"path","required":true,"description":"Predefined payload size label","schema":{"type":"string","enum":["500kb","1mb","2mb","3mb"]}}],"responses":{"200":{"description":"Binary payload of the requested size","headers":{"X-Speedtest-Cache":{"schema":{"type":"string","enum":["HIT","MISS"]},"description":"Whether the response was served from edge cache"},"X-Speedtest-Size":{"schema":{"type":"string","enum":["500kb","1mb","2mb","3mb"]},"description":"Requested size label"},"X-Speedtest-Colo":{"schema":{"type":"string","example":"LAX"},"description":"Cloudflare PoP code that served the request"},"Server-Timing":{"schema":{"type":"string","example":"worker;dur=2"},"description":"Worker processing time in milliseconds"},"Content-Length":{"schema":{"type":"integer"},"description":"Exact byte count of the payload"}},"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid size parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Invalid size: 5mb. Allowed: 500kb, 1mb, 2mb, 3mb"}}}}}}}}}}}