Practical API Examples

1 · Discover your account context /v1/authorizeV2

import os, requests, pprint
BASE="https://api.hostedcloudvideo.com"
API=os.environ["API_KEY"]
r=requests.get(f"{BASE}/v1/authorizeV2",headers={"Authorization":f"Bearer {API}"})
pprint.pp(r.json())

2 · List all cameras /v1/accounts/{accountId}/cameras

import os, requests, json
BASE="https://api.hostedcloudvideo.com";ACCT="<ACCOUNT_ID>"
r=requests.get(f"{BASE}/v1/accounts/{ACCT}/cameras",
               headers={"Authorization":f"Bearer {os.environ['API_KEY']}"})
print(json.dumps(r.json(),indent=2))

3 · Health history for cameras /v1/accounts/{accountId}/health-history

Returns every state-change event for the account’s cameras.

import os, requests, json, datetime as dt
BASE="https://api.hostedcloudvideo.com";ACCT="<ACCOUNT_ID>"
since=(dt.datetime.utcnow()-dt.timedelta(days=1)).isoformat()+"Z"
url=f"{BASE}/v1/accounts/{ACCT}/health-history?start={since}"
r=requests.get(url,headers={"Authorization":f"Bearer {os.environ['API_KEY']}"})
print(json.dumps(r.json(),indent=2))

4 · Update a camera /v1/cameras/{cameraId}

import os, requests
BASE="https://api.hostedcloudvideo.com";CAM="<CAMERA_ID>"
payload={"name":"Front Door","timezone":"America/Toronto"}
r=requests.put(f"{BASE}/v1/cameras/{CAM}",
  headers={"Authorization":f"Bearer {os.environ['API_KEY']}",
           "Content-Type":"application/json"},json=payload)
print(r.status_code)

5 · Retrieve snapshots for a timeframe /v1/cameras/{cameraId}/snapshot

Loop over ?time=ISO-8601 to pull periodic stills.

import os, requests, datetime as dt, pathlib
BASE,CAM="https://api.hostedcloudvideo.com","<CAMERA_ID>"
HEAD={"Authorization":f"Bearer {os.environ['API_KEY']}"}
start,end=dt.datetime(2025,5,1,8),dt.datetime(2025,5,1,18)
t=start
while t<=end:
  ts=t.isoformat()+"Z"
  img=requests.get(f"{BASE}/v1/cameras/{CAM}/snapshot?time={ts}",headers=HEAD).content
  pathlib.Path(f"snap_{ts}.jpg").write_bytes(img)
  t+=dt.timedelta(hours=1)

6 · Upload custom events /notify/custom/{cameraId}

Up to five events per request (EventCreateDataDtoV3).

import os, requests, datetime as dt
UP,CAM="https://upload.hostedcloudvideo.com","<CAMERA_ID>"
payload={"start":dt.datetime.utcnow().isoformat()+"Z",
         "end":(dt.datetime.utcnow()+dt.timedelta(seconds=10)).isoformat()+"Z",
         "types":{"custom":[{"types":["pointOfSale"],"actions":["Paid","Refund"],
           "boundingBox":{"width":100,"height":200,"left":300,"top":400},
           "freeformAttributes":{"storeId":"789","city":"Tampa Bay"}}]}}
r=requests.post(f"{UP}/notify/custom/{CAM}",
  headers={"Authorization":f"Bearer {os.environ['API_KEY']}",
           "Content-Type":"application/json"},json=payload)
print(r.status_code)

Need more endpoints? Check the full OpenAPI specs at https://api.hostedcloudvideo.com and https://upload.hostedcloudvideo.com.