{"openapi":"3.1.0","info":{"title":"Screen PPI API","version":"1.0.0","description":"Screen and display pixel-density maths as an API, computed locally and deterministically. The ppi endpoint computes the pixels per inch of a display from its resolution and diagonal size — along with the pixels per centimetre, the dot pitch in millimetres, the diagonal in pixels, the total pixels and megapixels, the simplified aspect ratio, and the physical width and height. The size endpoint does the inverse: from a resolution and a known PPI it works out the physical dimensions and diagonal in inches and centimetres. The retina endpoint analyses a display at a viewing distance: it computes the pixels per degree, says whether the display is effectively \"retina\" (pixels indistinguishable to 20/20 vision, around 60 pixels per degree), and gives the distance at which it becomes retina. Everything is computed locally and deterministically, so it is instant and private. Ideal for display and monitor tools, AV and signage planning, UI and responsive-design work, and hardware comparison sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is screen pixel density; for print resolution and image-to-print sizing use a DPI API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/ppi-api","description":"oanor gateway"}],"tags":[{"name":"Display"},{"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/ppi":{"get":{"operationId":"get_v1_ppi","tags":["Display"],"summary":"Pixel density from resolution & diagonal","description":"","parameters":[{"name":"width","in":"query","required":true,"description":"Horizontal pixels","schema":{"type":"string"},"example":"1920"},{"name":"height","in":"query","required":true,"description":"Vertical pixels","schema":{"type":"string"},"example":"1080"},{"name":"diagonal","in":"query","required":true,"description":"Diagonal (inches)","schema":{"type":"string"},"example":"24"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ppi":91.79,"note":"PPI = √(width² + height²) ÷ diagonal (inches). Dot pitch is the distance between pixel centres.","input":{"width":1920,"height":1080,"diagonal_inches":24},"megapixels":2.07,"aspect_ratio":"16:9","dot_pitch_mm":0.2767,"total_pixels":2073600,"width_inches":20.918,"height_inches":11.766,"pixels_per_cm":36.14,"diagonal_pixels":2202.9},"meta":{"timestamp":"2026-06-03T17:41:55.923Z","request_id":"931abbdb-8d90-474c-9fc9-286c6a9d661b"},"status":"ok","message":"Pixel density","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/retina":{"get":{"operationId":"get_v1_retina","tags":["Display"],"summary":"Retina / viewing-distance analysis","description":"","parameters":[{"name":"ppi","in":"query","required":true,"description":"Pixels per inch","schema":{"type":"string"},"example":"326"},{"name":"distance_inches","in":"query","required":false,"description":"Viewing distance (inches)","schema":{"type":"string"},"example":"10"},{"name":"distance_cm","in":"query","required":false,"description":"Or in cm","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"‘Retina’ ≈ pixels indistinguishable at the viewing distance (≈60 pixels/degree for 20/20 vision). At or beyond retina_distance the display is retina.","input":{"ppi":326,"distance_cm":25.4,"distance_inches":10},"is_retina":false,"pixels_per_degree":56.9,"retina_distance_cm":26.8,"retina_threshold_ppd":60,"retina_distance_inches":10.55},"meta":{"timestamp":"2026-06-03T17:41:56.024Z","request_id":"af37958d-786f-41c4-8a41-30b6e3a8df98"},"status":"ok","message":"Retina / viewing distance","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/size":{"get":{"operationId":"get_v1_size","tags":["Display"],"summary":"Physical size from resolution & PPI","description":"","parameters":[{"name":"width","in":"query","required":true,"description":"Horizontal pixels","schema":{"type":"string"},"example":"1920"},{"name":"height","in":"query","required":true,"description":"Vertical pixels","schema":{"type":"string"},"example":"1080"},{"name":"ppi","in":"query","required":true,"description":"Pixels per inch","schema":{"type":"string"},"example":"91.79"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Physical size from a resolution and a known PPI.","input":{"ppi":91.79,"width":1920,"height":1080},"width_cm":53.13,"height_cm":29.89,"diagonal_cm":60.96,"aspect_ratio":"16:9","width_inches":20.917,"height_inches":11.766,"diagonal_inches":23.999},"meta":{"timestamp":"2026-06-03T17:41:56.121Z","request_id":"78ee238f-119a-4fbb-83bb-17aefccabc00"},"status":"ok","message":"Physical size from PPI","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":{"note":"For screen/display pixel density. For print resolution and image-to-print sizing use a DPI API.","service":"ppi","endpoints":{"/v1/ppi":"PPI, dot pitch, aspect ratio and physical size from a resolution and a diagonal (inches).","/v1/size":"Physical dimensions (inches/cm) from a resolution and a known PPI.","/v1/retina":"Pixels-per-degree and whether a display is ‘retina’ at a viewing distance."},"description":"Screen/display pixel-density maths: PPI from resolution & diagonal, physical size from PPI, and retina / viewing-distance analysis."},"meta":{"timestamp":"2026-06-03T17:41:56.225Z","request_id":"1ade03d7-0380-4ec4-b43f-14a908f9f826"},"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":10135,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1165,"monthly_call_quota":19750,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3155,"monthly_call_quota":247500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6955,"monthly_call_quota":1280000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/ppi-api"}