Public Video Shares
A Public Video Share is a shareable landing page that serves a personalized video for a given distribution channel. Each project can have one public share per channel (DEV, STAGING, PROD).
Fields
| Field | Type | Notes |
|---|---|---|
channel | enum | DEV, STAGING, or PROD |
slug | string | URL-safe unique identifier — forms the public URL |
status | enum | Enabled or Disabled |
publicTitle | string | Page title shown to end users (max 160 chars) |
publicSubtitle | string | Optional subtitle (max 280 chars) |
locale | string | Optional locale tag, e.g. es-CL |
ctaLabel | string | Call-to-action button label (required if ctaUrl set) |
ctaUrl | string | URL the CTA button links to (required if ctaLabel set) |
personalizationData | JSON object | Optional inline personalization data |
apiCredentialId | UUID | API credential used to render the video |
API endpoints
| Method | Path | Role required | Description |
|---|---|---|---|
GET | /api/Projects/{projectId}/public-video-shares | Viewer+ | List shares for the project |
PUT | /api/Projects/{projectId}/public-video-shares/{channel} | ProjectManager+ | Create or update a share |
POST | /api/Projects/{projectId}/public-video-shares/{channel}/disable | ProjectManager+ | Disable the landing page |
POST | /api/Projects/{projectId}/public-video-shares/{channel}/restore | ProjectManager+ | Re-enable a disabled share |
POST | /api/Projects/{projectId}/public-video-shares/{channel}/rotate-slug | ProjectManager+ | Change the public URL slug |
Creating or updating a share
The PUT endpoint is idempotent — it creates the share if it does not exist, or updates it if it does.
PUT /api/Projects/{projectId}/public-video-shares/PROD
Authorization: Bearer {token}
{
"publicTitle": "Your personalized credit card offer",
"publicSubtitle": "See the offer prepared just for you",
"locale": "es-CL",
"ctaLabel": "Apply now",
"ctaUrl": "https://bank.example.com/apply",
"apiCredentialId": "credential-uuid"
}
Rotating the slug
The public URL is formed from the slug. Rotating it invalidates the previous URL and generates a new one — useful when a share URL has been distributed but needs to be changed.
POST /api/Projects/{projectId}/public-video-shares/PROD/rotate-slug
Returns the previous slug along with the new one.
Disabling and restoring
A disabled share returns a 404 or deactivation notice to end users without destroying the configuration.
POST /api/Projects/{projectId}/public-video-shares/PROD/disable
POST /api/Projects/{projectId}/public-video-shares/PROD/restore
Both actions record who performed them and when (full audit trail).
API Credentials
API Credentials are per-project key/secret pairs used to authenticate programmatic access when rendering videos. They are referenced by apiCredentialId on a Public Video Share.
Fields
| Field | Description |
|---|---|
id | UUID |
projectId | Owning project |
apiKey | Public key string |
name | Optional display name |
createdAt | Creation timestamp |
lastUsedAt | Last time the credential was used |
status | active or revoked |
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/credentials?projectId={id} | List credentials for a project |
POST | /api/credentials | Create a new credential |
POST | /api/credentials/{id}/revoke | Revoke a credential |
The secret is only returned once at creation time. Store it securely — it cannot be retrieved afterward.
Creating a credential
POST /api/credentials
Authorization: Bearer {token}
{
"projectId": "project-uuid",
"name": "Production landing page"
}
Response:
{
"id": "uuid",
"apiKey": "pk_...",
"apiSecret": "sk_...",
"name": "Production landing page",
"createdAt": "2026-01-15T10:00:00Z"
}