Shares
Create trackable Share links that let buyers access your content through branded, expiring URLs with full analytics.
What you'll learn:
- How to create a Share with tracking, expiration, and theme options
- How to configure download permissions for external recipients
- How to retrieve the generated Share URLs for distribution
- Create a Share? Use
POST /shareswith asset IDs, expiration date, and theme - Allow downloads? Set
isDownloadAllowed: truein the request body - Get the trackable link? Use
dynamicUrlfrom the response for analytics tracking
When to use the API
Use the Showpad API for Shares when you need to:
| Automate link creation | Integrate with CRM | Track engagement | Apply consistent branding |
|---|---|---|---|
| Generate Share links programmatically from your own systems or workflows. | Create Shares directly from Salesforce, HubSpot, or other platforms. | Get trackable URLs that report back to Showpad analytics. | Apply Sharing Themes to ensure brand consistency across all Shares. |
- Plan: Ultimate | Advanced or Expert
- Permissions: API access enabled for your Division
- Authentication: Valid OAuth 2.0 access token (learn more)
The Share object
A Share bundles one or more assets into a trackable link with configurable expiration, download permissions, and branding. The API returns multiple URL types for different tracking needs.
Request fields
| Field | Data Type | Description | Required |
|---|---|---|---|
title | string | A descriptive title for the Share, visible to recipients. Appears on the Shares tab in the Web App and in notification emails. Max 200 characters. | Yes |
assets | array<object> | A list of assets to include (max 300 items). Each asset must include an id, and can optionally specify a page number to open by default. | Yes |
assets[].id | string | The unique identifier of the asset to share. | Yes |
assets[].page | integer | The 1-based page number to open when the asset is viewed. Ignored for non-paginated assets like images. | No |
origin | string | The name of the platform or client application where the Share was created. Used for tracking and analytics. Max 20 characters. | Yes |
isDownloadAllowed | boolean | Whether recipients can download the shared assets. Default: true. Set to false for view-only access. | No |
expiresAt | string | The date and time when the Share expires, in ISO 8601 format. If omitted, the Share does not expire. | No |
theme.id | string | The unique identifier of the Sharing Theme to apply. If omitted, the Global Theme is used. Get theme IDs from Sharing Themes. | No |
Response fields
| Field | Data Type | Description |
|---|---|---|
id | string | Unique identifier for the created Share. |
title | string | The title provided in the request. |
assets | array<object> | The list of assets included in the Share. |
origin | string | The origin provided in the request. |
isDownloadAllowed | boolean | Whether downloads are allowed. |
expiresAt | string | null | The expiration timestamp, or null if the Share does not expire. |
theme | object | The Sharing Theme applied to the Share. |
anonymousUrl | string | A public link for anonymous access. Recipients are not tracked. |
untrackedUrl | string | An alternative untracked link for access without recipient tracking. |
dynamicUrl | string | A trackable link that supports URL parameters for recipient and platform tracking (e.g., ?recipient=xxx&platform=yyyy). Use this URL when you need analytics. |
createdAt | string | Timestamp indicating when the Share was created, in ISO 8601 format. |
Related webhooks
Subscribe to these events to track Share activity:
| Event | Description |
|---|---|
link-share-created | Triggered when a Share is created. |
link-share-viewed | Triggered when a recipient views the Share. |
link-share-reshared | Triggered when a recipient reshares the Share. |
Base Endpoint
The base endpoint for API v4 requests is:
https://{{subdomain}}.api.showpad.com/v4
Showpad adopts a strict approach for cross-origin requests. Only requests from your valid Showpad domain are allowed.
Create Share
| Method | Endpoint | Description |
|---|---|---|
POST | /shares | Create a new Share for one or more assets. |
Examples
Create a Share
This example creates a tracked Share link for two assets with download enabled, a custom expiration date, and a branded theme. The first asset opens to page 3 by default.
Request
- cURL
- JavaScript
- Python
curl --request POST \
--url https://{{subdomain}}.api.showpad.com/v4/shares \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data '{
"title": "Customer X: Q3 Sales Material",
"assets": [
{ "id": "e02519c27d539680c61e4fc44c596947", "page": 3 },
{ "id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" }
],
"origin": "Integration",
"isDownloadAllowed": true,
"expiresAt": "2026-08-24T14:15:22.000Z",
"theme": {
"id": "51be10f001cd0303a4e308a22e051ecb"
}
}'
const response = await fetch('https://{{subdomain}}.api.showpad.com/v4/shares', {
method: 'POST',
headers: {
Authorization: 'Bearer {access_token}',
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: 'Customer X: Q3 Sales Material',
assets: [{ id: 'e02519c27d539680c61e4fc44c596947', page: 3 }, { id: 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6' }],
origin: 'Integration',
isDownloadAllowed: true,
expiresAt: '2026-08-24T14:15:22.000Z',
theme: {
id: '51be10f001cd0303a4e308a22e051ecb',
},
}),
});
const share = await response.json();
console.log(share.dynamicUrl);
import requests
response = requests.post(
'https://{{subdomain}}.api.showpad.com/v4/shares',
headers={
'Authorization': 'Bearer {access_token}',
'Content-Type': 'application/json'
},
json={
'title': 'Customer X: Q3 Sales Material',
'assets': [
{'id': 'e02519c27d539680c61e4fc44c596947', 'page': 3},
{'id': 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6'}
],
'origin': 'Integration',
'isDownloadAllowed': True,
'expiresAt': '2026-08-24T14:15:22.000Z',
'theme': {
'id': '51be10f001cd0303a4e308a22e051ecb'
}
}
)
share = response.json()
print(share['dynamicUrl'])
Response
{
"id": "f6297eda5146c386009e8bdfab99207d",
"title": "Customer X: Q3 Sales Material",
"assets": [
{ "id": "e02519c27d539680c61e4fc44c596947", "page": 3 },
{ "id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" }
],
"origin": "Integration",
"isDownloadAllowed": true,
"expiresAt": "2026-08-24T14:15:22.000Z",
"theme": {
"id": "51be10f001cd0303a4e308a22e051ecb"
},
"anonymousUrl": "https://{{subdomain}}.showpad.com/share/xncLlh9gYDjXPao4XOVlq",
"untrackedUrl": "https://{{subdomain}}.showpad.com/share/1JmIS8oGyVEGUM4Cb3ETO",
"dynamicUrl": "https://{{subdomain}}.showpad.com/catalog/link/xncLlh9gYDjXPao4XOVlq",
"createdAt": "2026-03-10T15:43:25.000Z"
}
Troubleshooting
If a request fails, check that all asset IDs exist and are accessible to the authenticated user. For a complete list of error codes and response formats, see Error Codes.
Next Steps
- Sharing Themes: Retrieve theme IDs to brand your Shares.
- Shared Spaces: Create collaborative spaces for ongoing buyer engagement.
Was this page helpful?