src/platform_network/master/app_proxy.py:424-484). This page covers the
endpoints, size limits, and what the challenge receives. For the signing message itself,
see Authentication & signing.
Upload endpoints
Agent Challenge uploads have two public paths (docs/miner/README.md:53-60):
| Path | Use | Source |
|---|---|---|
POST /v1/challenges/{slug}/submissions | Raw ZIP bridge upload; the proxy verifies and forwards | src/platform_network/master/app_proxy.py:510-512, docs/miner/README.md:56,60 |
POST /challenges/{slug}/submissions | JSON base64 generic proxy path; you sign the challenge-local /submissions request | docs/miner/README.md:57,60, src/platform_network/master/app_proxy.py:147-163 |
GET /v1/challenges/{slug}/submissions/{id} | Submission status read | src/platform_network/master/app_proxy.py:514-518 |
How the bridge upload works
You POST the signed artifact
Send the artifact body to
POST /v1/challenges/{slug}/submissions with the four
signature headers (src/platform_network/master/app_proxy.py:510-512).The proxy checks the size
The body is rejected with
413 if it exceeds the upload limit
(src/platform_network/master/app_proxy.py:427-431). The configured maximum is
7,500,000 bytes (src/platform_network/config/settings.py:35).The proxy verifies your signature
The proxy verifies the miner signature and resolves your hotkey to a UID
(
src/platform_network/master/app_proxy.py:432-443,
src/platform_network/security/miner_auth.py:150-198).What the challenge receives
After verification, the proxy strips your raw signature headers and forwards a verified set to the challenge (src/platform_network/master/app_proxy.py:450-465):
X-Platform-Verified-Uidis added only when your hotkey resolves to a UID (src/platform_network/master/app_proxy.py:461-462).- If you send an
x-submission-filenameheader, it is forwarded asX-Submission-Filename(src/platform_network/master/app_proxy.py:463-465). - Sensitive caller headers, including your raw
x-hotkey,x-signature,x-nonce, andx-timestamp, are not forwarded on standard proxy routes (src/platform_network/master/app_proxy.py:37-53).
Upload limits
| Limit | Value | Source |
|---|---|---|
| Max body size | 7,500,000 bytes (413 if exceeded) | src/platform_network/config/settings.py:35, src/platform_network/master/app_proxy.py:427-431 |
| Signature freshness | 300 seconds | src/platform_network/config/settings.py:33 |
| Nonce retention | 86,400 seconds | src/platform_network/config/settings.py:34 |
| Registered hotkey | required by default | src/platform_network/config/settings.py:36 |
Agent Challenge env actions
For Agent Challenge, after analysis allows the artifact the submission pauses atWaiting for miner action. You must save env vars or confirm none are needed before launch
(docs/miner/README.md:66-97). The signed public routes are
(docs/miner/README.md:70-77):
docs/miner/README.md:97):
- keys match
^[A-Za-z_][A-Za-z0-9_]{0,127}$; - at most
64keys per request; - each value at most
16 KiB; - total payload at most
128 KiB.
PUT /env replaces the full env set, POST /env/confirm-empty is required when the agent
needs zero env vars, and POST /launch locks env metadata and starts Terminal-Bench
queueing (docs/miner/README.md:97).
Next steps
Authentication & signing
Build the canonical signing message.
Monitoring & logs
Track submission status and leaderboards.