---
title: "Revoke Event Share Link"
method: POST
path: "/events/{event_id}/share-links/{link_id}/revoke"
tags: ["telephony"]
---

# Revoke Event Share Link

`POST /events/{event_id}/share-links/{link_id}/revoke`

## 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/{link_id}/revoke`
- Auth: HTTP bearer

Kill one clip link. The recipient's next load is the same 404 an
unknown token gets.

IDEMPOTENT: an already-revoked link answers 200 with the UNCHANGED first
revoker and first timestamp. A second revoke must not rewrite the audit,
and a client retrying a click must not see an error for a link that is
already dead.

A link id belonging to ANOTHER event is the same 404 as one that does not
exist — this route must not confirm the existence of link ids outside the
event the caller can already reach.

A FAILED SEND DOES NOT AUTO-REVOKE ITS LINK, and this route is why.
A provider failure is often AMBIGUOUS (the network died; Surge may well
have sent it), so the customer may already hold the URL and revoking would
break a message that did arrive. The operator sees the failed row with its
link and decides.

## Path parameters

- `event_id` string, required
- `link_id` string, required

## Response `200`

Successful Response

- ShareLinkRecord: One share link on `GET /events/{event_id}/share-links`. OPERATOR-ONLY; NEVER CUSTOMER-FACING (round-0 review O-6). `created_by_name` is a MONITORING OPERATOR's name, and the monitoring centre's roster is not a customer's business -- the same rule the site-summary fact sheet enforces by never loading the column. If this list is ever widened to a customer-side role, that field goes first.
  - `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/00252d8227c1?raw)
