Skip to main content

Carson Living Python API

https://badge.fury.io/py/carson-living-electric-boogaloo.svg https://github.com/lowlydba/python-carson-living/actions/workflows/ci.yml/badge.svg https://img.shields.io/badge/License-Apache%202.0-blue.svg https://img.shields.io/pypi/pyversions/carson-living-electric-boogaloo.svg

Python Carson Living is a library written in Python that exposes the carson.live devices as Python objects.

Tutorial

This walks through installing the library, logging in, and opening a unit door end to end.

Install the package

Carson Living Python requires Python 3.11 or newer.

pip install carson-living-electric-boogaloo

Log in and inspect the account

from carson_living import Carson

carson = Carson("account@email.com", "your password")
print(carson.user)
# >> Martin
print(carson.token)
# >> ey...

Carson Living issues long-lived JWT tokens. Copy the printed carson.token value now; Reuse a saved token below covers skipping the login request on future runs.

Open a unit door

for door in carson.first_building.doors:
    if door.is_unit_door:
        print("Opening Unit Door {}".format(door.name))
        door.open()

How-to guides

Reuse a saved token

Pass a saved JWT token during initialization to skip the login request:

carson = Carson("account@email.com", "your password", "ey....")
print(carson.token)
# >> ey...

Save a live camera image

for camera in building.cameras:
    with open("image_{}.jpeg".format(camera.entity_id), "wb") as file:
        camera.get_image(file)

Save a live camera video

for camera in building.cameras:
    with open("video_{}.flv".format(camera.entity_id), "wb") as file:
        camera.get_video(file, timedelta(seconds=10))

Download a recorded image from a timestamp

three_hours_ago = datetime.utcnow() - timedelta(hours=3)
for camera in building.cameras:
    with open("image_{}.jpeg".format(camera.entity_id), "wb") as file:
        camera.get_image(file, three_hours_ago)

Download a recorded video from a timestamp

three_days_ago = datetime.utcnow() - timedelta(days=3)
for cam in building.cameras:
    with open("video_{}.flv".format(cam.entity_id), "wb") as file:
        cam.get_video(file, timedelta(seconds=5), three_days_ago)

Generate an authenticated camera URL

camera.get_image_url() and camera.get_video_url() build a URL with an embedded auth_key (A=c000....) that something outside this library can fetch directly. Call building.eagleeye_api.update_session_auth_key() first if the building’s key may be stale; get_image() and get_video() don’t need this since they refresh internally.

building.eagleeye_api.update_session_auth_key()
for cam in building.cameras:
    img_url = cam.get_image_url(three_days_ago)
    print(img_url)
    # >> https://cXXX.eagleeyenetworks.com/asset/prev/image.jpeg?id=c0&timestamp=20200122211442.575&asset_class=pre&A=c000~...
    response = requests.get(img_url)
    with open("image_{}_with_url.jpeg".format(cam.entity_id), "wb") as file:
        file.write(response.content)
    break  # only fetch one camera in this example

Use cam.get_video_url() the same way.

Use the CLI tool

./scripts/carsoncli.py has further API usage examples.

Reference

Supported entities

  • User (carson.user): read

  • Building (carson.buildings): read

  • Doors (building.doors): read, open

  • Cameras (building.cameras): read, images, video

Not yet supported

  • Visitor functionality (/visitors)

  • Thread / messaging functionality (/threads)

  • Delivery functionality (/deliveries)

  • Dashboard functionality (/dashboard)

  • Service functionality (/service)

  • Twilio integration (twilio/access-token/)

  • A separate EagleEye API package

Install the development version

pip install git+https://github.com/lowlydba/python-carson-living@main

Explanation

Why tokens are long-lived

Carson Living issues JWT tokens with a long validity window, so this library treats carson.token as reusable across process restarts rather than something to re-fetch on every run. It also handles expired tokens and the resulting 401 responses internally, so a caller doesn’t need to check token validity before making a request.

Why Eagle Eye auth keys need refreshing

get_image() and get_video() refresh the Eagle Eye auth_key on demand, but a pre-generated URL from get_image_url()/get_video_url() embeds whatever key was current at call time and stops working once that key expires. The key is scoped to a building rather than a single camera, so one update_session_auth_key() call covers every camera in that building.

Code documentation style

Docstrings follow the Google Python Style Guide.

Git branching strategy

This project uses gitflow as its branching model.

Credits

This project is a fork of pbrink231/python-carson-living, itself forked from Martin Riedel’s original rado0x54/python-carson-living.

Project setup and the API object design were inspired by, and partly launched off, python-ring-doorbell, which saved a lot of headaches with tox, setuptools, and Travis.

Metadata

Release files for carson-living-electric-boogaloo 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carson-living-electric-boogaloo 0.1.1
File Size Uploaded Provenance Actions
carson_living_electric_boogaloo-0.1.1.tar.gz 28.1 kB With provenance Details for carson_living_electric_boogaloo-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for carson-living-electric-boogaloo 0.1.1
File Interpreter ABI Platform Actions
carson_living_electric_boogaloo-0.1.1-py3-none-any.whl Python 3 none any Details for carson_living_electric_boogaloo-0.1.1-py3-none-any.whl

Total release size: 51.6 kB

Release files / carson_living_electric_boogaloo-0.1.1.tar.gz

Download URL carson_living_electric_boogaloo-0.1.1.tar.gz
Size 28.1 kB
Tags Source
SHA-256 checksum
How to use checksums
04a2c7ee2c2eb6963c3cd64720ac074e8b9ec0ad1d695a626137514211e31ece
BLAKE2b-256 checksum
How to use checksums
cf42d6541b5b7b63605caaf6fe9289133851941c1bdf4a83001f0692d638afb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / carson_living_electric_boogaloo-0.1.1-py3-none-any.whl

Download URL carson_living_electric_boogaloo-0.1.1-py3-none-any.whl
Size 23.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7ab294d0df9652969b137415359e93bf275bec71aca908eb7bbed5ebe3a3a03
BLAKE2b-256 checksum
How to use checksums
671c66c56b4160fc1d5e36b173d7b09fda0dfee63bb83e3aefda0a6783e66948
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Security for carson-living-electric-boogaloo 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for carson_living_electric_boogaloo-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page