---
title: "List Event Share Links"
method: GET
path: "/events/{event_id}/share-links"
tags: ["telephony"]
---

# List Event Share Links

`GET /events/{event_id}/share-links`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/events/{event_id}/share-links`
- Auth: HTTP bearer

Every login-free clip link minted on this event, oldest first.

THE SAME DEPENDENCY OBJECT as `/notify-owner`, `/call-owner`,
`/email-owner` and `/log-attempt` — not a re-derived
`require_permission(...)` — so the owner-contact actions on this event
cannot drift apart in what they allow. Whoever may text a property owner
a clip link may see, and kill, the links they sent.

Containment is the service's, through the same
`NotificationsService._get_event_in_scope` the notifications read uses:
an out-of-tenant event id is a 403 (this repo's established answer for a
per-event route), not a 404 -- see `ShareLinkService.list_for_event`'s
docstring. A foreign LINK id on the revoke route below is the one that
must never be a 403.

NO TOKEN AND NO HASH in the response. The plaintext URL is already in the
message body on the timeline; this list is the link's STATE.

## Path parameters

- `event_id` string, required

## Response `200`

Successful Response

- ShareLinkRecord[]
  - `id` string, required: The share link id.
  - `created_at` string, date-time, nullable: When it was minted.
  - `created_by_name` string, nullable: The operator who sent the message that minted it. Operator-only; never customer-facing.
  - `expires_at` string, date-time, nullable: When it stops working.
  - `revoked_at` string, date-time, nullable: When an operator killed it. Write-once: a second revoke returns this value unchanged rather than rewriting the audit.
  - `first_viewed_at` string, date-time, nullable: First time the page was served. Null means never opened.
  - `last_viewed_at` string, date-time, nullable: Most recent time the page was served.
  - `view_count` integer, required: How many times the page was served. Counters and timestamps only -- no IP, no user agent: there is no consent basis for tracking a property owner's device.
  - `notification_log_id` string, nullable: The incident-timeline row this link was minted with.
  - `sms_message_id` string, nullable: The thread message this link was minted with.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verdun/apis/verdun-api.md) - [All operations](https://skmtc.dev/verdun/apis/verdun-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verdun/apis/verdun-api/revisions/35a2a6ebedda?raw)
