# Data Feeds: Probe & diagnostics

> Testing a poller without going live.

Glider documentation · Data · Web page: https://cgglider.com/docs/pollers/probe/

Sections of this page: [Transports](https://cgglider.com/docs/pollers.md) · [JSON, XML & text](https://cgglider.com/docs/pollers/formats.md) · [Webhooks](https://cgglider.com/docs/pollers/webhook.md) · [WebSockets](https://cgglider.com/docs/pollers/websocket.md) · [HTTP requests](https://cgglider.com/docs/pollers/compose.md) · [Auth & secrets](https://cgglider.com/docs/pollers/auth.md) · [Mapping the response](https://cgglider.com/docs/pollers/mapping.md) · [Schedule & freshness](https://cgglider.com/docs/pollers/schedule.md) · [Probe & diagnostics](https://cgglider.com/docs/pollers/probe.md)

POST /api/pages/<id>/runtime/units/<unitId>/probe runs an HTTP request once — or, with transport websocket, connects and waits for the first message — server-side, with secrets resolved, and returns the payload. GET /api/pages/<id>/feeds/<unitId> returns the last payload any feed received. The Binder's Fetch sample, Listen for sample and Capture last push buttons use these; the payload is stored on the unit as its sample so the field tree survives a reload.

| Failure | Means |
| --- | --- |
| “Enter a URL first.” | The feed has no URL. |
| “Connected, but no message arrived” | The socket opened but sent nothing within the listen time — check the subscribe text. |
| “Unknown secret: X” | The template references a secret that does not exist on this page. |
| HTTP 4xx / 5xx | The upstream rejected the request; the response text is passed through. |
| 502 | The request could not be completed — DNS, TLS, connection refused, or a timeout. |
| “Save the page first” | A probe runs server-side and needs a page id. |

> **Note:** The sample is an authoring aid only — the engine never reads it, and an oversized payload is dropped rather than persisted with the page.
