Skip to content

Quickstart

Quickstart

This quickstart assumes you have set HOVERCODE_API_TOKEN in your environment.

from hovercode import HovercodeClient

client = HovercodeClient()

qr = client.hovercodes.create(
    workspace="YOUR-WORKSPACE-ID",
    qr_data="https://twitter.com/hovercodeHQ",
    primary_color="#1DA1F2",
)

print(qr["id"])

Tip

If you want hosted PNG/SVG URLs in the create response, pass generate_png=True.

List QR codes in a workspace

payload = client.hovercodes.list_for_workspace("YOUR-WORKSPACE-ID", q="twitter")
print(payload["count"])
print(payload["results"][:2])

Get a single QR code

qr_id = qr["id"]
qr_full = client.hovercodes.get_hovercode(qr_id)
print(qr_full.get("svg_file"))
print(qr_full.get("png"))

Add tags

from hovercode.models import TagInput

client.hovercodes.add_tags(
    qr_id,
    [
        TagInput(title="marketing"),
        {"title": "campaign-2025"},
    ],
)

Get tracking activity (dynamic codes)

activity = client.hovercodes.get_activity(qr_id, page_size=50)
print(activity["count"])
print(activity["results"][:3])

Update a QR code

updated = client.hovercodes.update(
    qr_id,
    display_name="QR code for Twitter",
    # qr_data="https://twitter.com/hovercodeHQ",  # supported for dynamic Link codes
)
print(updated["display_name"])

Delete a QR code

The delete endpoint returns HTTP 204, so the SDK returns {} on success.

client.hovercodes.delete_hovercode(qr_id)

Handle errors

from hovercode import ApiError

try:
    client.hovercodes.get_hovercode("not-a-real-id")
except ApiError as exc:
    print(exc.status_code)
    print(exc.response_data)