# Test Subscription

```
POST 
/v1/subscriptions/:subscription_id/test
```

Queue the subscription's render+email export immediately (on-demand).

Decouples delivery testing from the cron schedule.

**202, not 200, and `dispatched` rather than `sent`.** The render runs in a browser on the `playwright` lambda and cannot be answered inside this request — this lambda has no browser at all, which is the whole reason the feature never delivered anything in the five months it was clickable. A `{"sent": true}` here would be a claim this process is in no position to make; the truthful answer is "accepted, and here is the row to watch".

`dispatched: false` means the request never reached the renderer (no subscription, no user to impersonate, or a row whose format/channel the export lane cannot deliver — logged as `task.dashboard_export.undeliverable`; only rows predating the 2026-09-20 write-time refusal can still be in that state) — all logged under their own event names. It is NOT the answer when the deployment cannot render at all: that raises `ScreenshotCaptureUnavailableError` out of the shared export path and is translated to **409** here, because a client cannot distinguish a capability gap from a transient failure inside a 2xx.

`sent` is kept, always `false`, so a pinned client reading that key still parses — but it is now a statement about *this response*, not about the delivery, and callers should read `dispatched`.

## Request[​](#request "Enlace directo al request")

## Responses[​](#responses "Enlace directo al Responses")

* 202
* 404
* 422

Successful Response

Not found

Validation Error
