Production endpoint hosted at www.promptbox.cn/api/p2p.php. This API computes P2P bandwidth and related metrics used in display/TCON planning.
https://www.promptbox.cn/api/p2p.php
The API is a single-file router using PATH_INFO. Append paths like /health or /calculate.
GET https://www.promptbox.cn/api/p2p.php/health POST https://www.promptbox.cn/api/p2p.php/calculate
Tip (Apache/Nginx): ensure PATH_INFO is forwarded so that trailing segments are visible to the script.
24.1.18125e-9 to yield Gbps.rawBandwidthGbps = hRes * vRes * refRate * bpp * 1.18125e-9 p2pBandwidthGbps = ceil(rawBandwidthGbps * 10) / 10 numDrivers = ceil((hRes * 3) / (numChannels * muxLevel)) p2pPairs = numDrivers * pairsPerPort rawSpeedPerPairGbps = p2pBandwidthGbps / p2pPairs speedPerPairGbps = ceil(rawSpeedPerPairGbps * 10) / 10
Lightweight health check.
| Query / Body | None |
|---|---|
| Response | 200 OK JSON: { "status":"ok", "time":"<ISO 8601 UTC>" } |
| Example |
curl -s https://www.promptbox.cn/api/p2p.php/health
{
"status": "ok",
"time": "2025-01-01T12:34:56Z"
}
|
Compute P2P bandwidth, number of drivers, pairs, and speed per pair.
| Headers | Content-Type: application/json |
|---|---|
| JSON Body |
{
"hRes": number, // horizontal resolution (e.g., 1920) > 0
"vRes": number, // vertical resolution (e.g., 1200) > 0
"refRate": number, // refresh rate Hz (e.g., 60) > 0
"numChannels": number, // total source channels (e.g., 1440) > 0
"pairsPerPort": number, // P2P pairs per port (e.g., 2) > 0
"muxLevel": number // muxing factor (1, 2, or 3) > 0
}
|
| Status |
200 OK on success 400 Bad Request for validation errors 405 Method Not Allowed wrong HTTP verb 404 Not Found wrong path |
|---|---|
| Body (success) |
{
"inputs": {
"hRes": number,
"vRes": number,
"refRate": number,
"numChannels": number,
"pairsPerPort": number,
"muxLevel": number,
"bpp": 24
},
"results": {
"p2pBandwidth_gbps": "number (1dp, rounded up)",
"numDrivers": number,
"p2pPairs": number,
"speedPerPair_gbps": "number (1dp, rounded up)"
},
"intermediates": {
"rawBandwidth_gbps": number,
"rawSpeedPerPair_gbps": number
}
}
|
curl -s -X POST https://www.promptbox.cn/api/p2p.php/calculate \
-H 'Content-Type: application/json' \
-d '{
"hRes": 1920,
"vRes": 1200,
"refRate": 60,
"numChannels": 1440,
"pairsPerPort": 2,
"muxLevel": 1
}'
http POST https://www.promptbox.cn/api/p2p.php/calculate \ hRes:=1920 vRes:=1200 refRate:=60 numChannels:=1440 pairsPerPort:=2 muxLevel:=1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"inputs": {
"hRes": 1920,
"vRes": 1200,
"refRate": 60,
"numChannels": 1440,
"pairsPerPort": 2,
"muxLevel": 1,
"bpp": 24
},
"results": {
"p2pBandwidth_gbps": "39.2",
"numDrivers": 4,
"p2pPairs": 8,
"speedPerPair_gbps": "4.9"
},
"intermediates": {
"rawBandwidth_gbps": 39.14496,
"rawSpeedPerPair_gbps": 4.89312
}
}
| Case | HTTP | Body |
|---|---|---|
| Missing field | 400 | {"error":"Missing field: <name>"} |
| Non-numeric value | 400 | {"error":"Field '<name>' must be numeric"} |
| Non-positive hRes/vRes/refRate | 400 | {"error":"hRes, vRes, and refRate must be > 0"} |
| Non-positive numChannels/pairsPerPort/muxLevel | 400 | {"error":"numChannels, pairsPerPort, and muxLevel must be > 0"} |
Computed p2pPairs ≤ 0 |
400 | {"error":"Computed p2pPairs <= 0; check inputs"} |
| Wrong method on endpoint | 405 | {"error":"Method not allowed"} |
| Unknown path | 404 | {"error":"Not found"} |
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
hRes | number | Yes | > 0 | Horizontal resolution in pixels. |
vRes | number | Yes | > 0 | Vertical resolution in pixels. |
refRate | number | Yes | > 0 | Refresh rate in Hz. |
numChannels | number | Yes | > 0 | Total source channels. |
pairsPerPort | number | Yes | > 0 | P2P pairs per port. |
muxLevel | number | Yes | > 0 | Muxing level (1, 2, or 3 typical). |
| Path | Type | Description |
|---|---|---|
inputs.* | number | Echo of sanitized inputs; includes fixed bpp=24. |
results.p2pBandwidth_gbps | string (1dp) | Total P2P bandwidth, rounded up to 0.1 Gbps. |
results.numDrivers | integer | Ceiling of drivers after mux consideration. |
results.p2pPairs | integer | Drivers × pairsPerPort. |
results.speedPerPair_gbps | string (1dp) | Per-pair speed, rounded up to 0.1 Gbps. |
intermediates.* | number | Raw (unrounded) values for reference/analysis. |
Request:
{
"hRes": 1920,
"vRes": 1200,
"refRate": 60,
"numChannels": 1440,
"pairsPerPort": 2,
"muxLevel": 1
}
Key results (typical):
p2pBandwidth_gbps ≈ 39.2
numDrivers = ceil((1920*3)/(1440*1)) = ceil(5760/1440) = 4
p2pPairs = 4 * 2 = 8
speedPerPair_gbps ≈ ceil((39.2/8)*10)/10 = ceil(4.9*10)/10 = 4.9
Inputs:
{ "hRes":2560,"vRes":1600,"refRate":120,"numChannels":1920,"pairsPerPort":2,"muxLevel":2 }
Sketch:
rawBandwidth = 2560*1600*120*24*1.18125e-9 ≈ 139.81 Gbps
p2pBandwidth = ceil(139.81*10)/10 = 139.9
numDrivers = ceil((2560*3)/(1920*2)) = ceil(7680/3840) = 2
p2pPairs = 2 * 2 = 4
speed/pair = ceil((139.9/4)*10)/10 = ceil(34.975*10)/10 = 35.0 Gbps
Access-Control-Allow-Origin: *, allowing browser usage from any origin.204).application/json; charset=utf-8.| Symptom | Likely Cause | Fix |
|---|---|---|
| 404 Not Found | Missing trailing path segment. | Use /health or /calculate after the PHP filename. |
| 405 Method Not Allowed | Wrong HTTP verb. | Use POST for /calculate, GET for /health. |
| 400 Bad Request: Missing field | JSON body incomplete. | Provide all required numeric fields. |
| 400: Field must be numeric | String or null supplied. | Send numbers, not quoted numerals or empty values. |
| 400: p2pPairs ≤ 0 | Inputs yield zero drivers or pairs. | Increase numChannels, pairsPerPort, or adjust muxLevel. |
Convenience snippet for generators; adjust as needed.
openapi: 3.0.3
info:
title: P2P Calculator API
version: "1.0"
servers:
- url: https://www.promptbox.cn/api/p2p.php
paths:
/health:
get:
summary: Health check
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status: { type: string, example: ok }
time: { type: string, format: date-time }
/calculate:
post:
summary: Compute P2P metrics
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [hRes,vRes,refRate,numChannels,pairsPerPort,muxLevel]
properties:
hRes: { type: number, minimum: 1 }
vRes: { type: number, minimum: 1 }
refRate: { type: number, minimum: 1 }
numChannels: { type: number, minimum: 1 }
pairsPerPort: { type: number, minimum: 1 }
muxLevel: { type: number, minimum: 1 }
responses:
'200':
description: Computation OK
content:
application/json:
schema:
type: object
properties:
inputs: { type: object }
results:
type: object
properties:
p2pBandwidth_gbps: { type: string, example: "39.2" }
numDrivers: { type: integer, example: 4 }
p2pPairs: { type: integer, example: 8 }
speedPerPair_gbps: { type: string, example: "4.9" }
intermediates: { type: object }
'400': { description: Bad Request }
'405': { description: Method Not Allowed }
'404': { description: Not Found }
/health and /calculate; schemas and examples included.