Get stream
Redeems a minted ticket for what opens the camera.
GET /v1/patrol/camera/{name}/stream/{ticket}
| Address | https://api.hanzo.ai/v1/patrol/camera/{name}/stream/{ticket} |
| Method | GET |
| Operation | get_patrol_camera_by_name_stream_by_ticket |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Redeems a minted ticket for what opens the camera.
The mint is the operation's — staff only — and it hands back the camera's address with the credential stripped out of it. This is where the holder of that address gets what actually dials the camera, and it asks for no credential of its own: whatever opens a camera is a relay, not a member of the operation, and a check only the issuer could perform checks nothing.
The ticket IS the authority. It names one camera, it covers one moment, and it is tagged with a key nobody but this deployment holds, so holding a live one is the right to open that camera until it runs out — which is the whole of what was issued, and the reason issuing one is staff-only and five minutes long.
A tag that does not verify is 404 — the route is no oracle on which tenants or cameras exist, or which tickets were ever issued — and one that verifies but has passed its moment is 410, because that ticket was real and is over.
Request
3 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
name | path | string | yes | Name is the camera's document name, from the path. |
ticket | path | string | yes | Ticket is the tag the minted address carries, from the path. |
expires | query | string | — | Expires is the moment the tag covers, as the seconds the minted address carries in its expires parameter. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | patrol.patrolTicketOut | ok |
default | problem-details | refused |
200 body — 3 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
data | body | patrol.patrolStream | — | |
data.expires | body | string | — | Expires is when that address stops working. |
data.url | body | string | — | URL is the address to open the stream at. |
Failure carries the platform error shape — see Errors.
Examples
hanzo patrol camera stream get <name> <ticket>import { Configuration, PatrolApi } from 'hanzoai';
const api = new PatrolApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getPatrolCameraByNameStreamByTicket({ name: 'name', ticket: 'ticket' });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import PatrolApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = PatrolApi(client).get_patrol_camera_by_name_stream_by_ticket(name='name', ticket='ticket')cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.PatrolAPI.GetPatrolCameraByNameStreamByTicket(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, patrol_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = patrol_api::get_patrol_camera_by_name_stream_by_ticket(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.PatrolApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new PatrolApi(client).getPatrolCameraByNameStreamByTicket();The method above is the one at the current release of the document. [email protected] (npm) was generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl https://api.hanzo.ai/v1/patrol/camera/<name>/stream/<ticket> \
-H "Authorization: Bearer $HANZO_API_KEY"MCP declares no tool for patrol — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
How is this guide?