Activities#

Track delivered marketing activity across social, broadcast, out-of-home, print, events, podcasts, and PR.

Authentication required

All endpoints require a Bearer token in the Authorization header. See the Authentication guide for setup instructions.

GET /v1/activities#

Retrieve a paginated list of activities for an organization.

bash
GET /v1/activities?page_index=0&page_size=25&organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
organizationIdstring (UUID)RequiredOrganization identifier.
searchTermstringFree-text search term to filter results (max 200 characters).
sortBystringColumn name to sort by.
sortDirection'asc' | 'desc'Sort direction: ascending or descending.
channelType'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'Filter by channel group.
channelTypesArray<'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'>Filter by one or more channel groups.
channel'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'Filter by specific channel.
channelsArray<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'>Filter by one or more specific channels.
creatorIdstring (UUID)Filter by creator identifier.
mediaProviderIdstring (UUID)Filter by media provider identifier.
campaignIdstring (UUID)Filter by campaign identifier.
unlinkedFromCampaignbooleanExclude campaign-linked activities.
unlinkedFromCreatorIdstring (UUID)Exclude links to this creator.

Response#

Returns { items, totalCount, facets, _meta } with paginated results.

GET /v1/activities/count#

Get the total number of activities matching the given filters.

bash
GET /v1/activities/count?organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
channelType'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'Filter by channel group.
channelTypesArray<'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'>Filter by one or more channel groups.
channel'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'Filter by specific channel.
channelsArray<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'>Filter by one or more specific channels.
creatorIdstring (UUID)Filter by creator identifier.
mediaProviderIdstring (UUID)Filter by media provider identifier.
campaignIdstring (UUID)Filter by campaign identifier.

Response#

Returns { count, _meta }.

GET /v1/activities/stats#

Aggregate statistics for activities matching the given filters.

bash
GET /v1/activities/stats?organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
channelType'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'Filter by channel group.
channelTypesArray<'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'>Filter by one or more channel groups.
channel'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'Filter by specific channel.
channelsArray<'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'>Filter by one or more specific channels.
creatorIdstring (UUID)Filter by creator identifier.
mediaProviderIdstring (UUID)Filter by media provider identifier.
campaignIdstring (UUID)Filter by campaign identifier.
searchTermstringFree-text search term to filter results (max 200 characters).

Response#

Returns { data, _meta } with the result.

POST /v1/activities#

Create social or provider-delivered activity with channel-specific delivery details, metrics, an optional creator or media provider, and an initial cost.

bash
POST /v1/activities
Authorization: Bearer {token}
Content-Type: application/json

{
  "organization_id": "1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01",
  "channel": "instagram",
  "name": "My Campaign"
}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
channelType'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'Top-level channel group for this activity.
channel'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'RequiredSpecific activity channel or subtype.
activity'instagram_story' | 'instagram_post' | 'instagram_reel' | 'youtube_video' | 'youtube_short' | 'tiktok_video' | 'twitter_post' | 'linkedin_post' | 'reddit_post' | null
namestringRequiredActivity name or title (max 500 characters).
startAtstring (ISO 8601) | null | null
endAtstring (ISO 8601) | null | null
creatorIdstring (UUID)Creator to auto-link to this activity.
mediaProviderIdstring (UUID) | nullMedia provider for a provider-delivered activity.
impressionsinteger | nullDelivered or estimated impression count.
deliverySource'platform_reported' | 'provider_reported' | 'user_entered' | 'benchmark_estimated' | 'modeled' | nullProvenance of the delivered activity metrics.
deliverySourceMetadataobject | nullStructured provenance metadata for delivered activity metrics.
initialCostobjectOptional initial cost line item to create with the activity.
broadcastDetailsobjectBroadcast placement and delivery details.
outOfHomeDetailsobjectOut-of-home placement and delivery details.
printDetailsobjectPrint placement and delivery details.
eventDetailsobjectEvent participation and delivery details.
podcastDetailsobjectPodcast placement and delivery details.
prArticleDetailsobjectPR article placement and delivery details.

Response#

Returns { data, _meta } with the result.

PATCH /v1/activities/:id#

Update an activity's channel, content link, metrics, media provider, or channel-specific delivery details.

bash
PATCH /v1/activities/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredActivity identifier to update.
channelType'social_media' | 'broadcast' | 'out_of_home' | 'print' | 'events' | 'podcasts' | 'pr_articles'Top-level channel group for this activity.
channel'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit' | 'radio' | 'television' | 'billboard' | 'bus_shelter' | 'street_furniture' | 'digital_outdoor_screen' | 'transit_ad' | 'newspaper' | 'magazine' | 'flyer' | 'conference' | 'trade_show' | 'expo' | 'networking_event' | 'community_event' | 'festival' | 'other_event' | 'podcast_interview' | 'podcast_guest_segment' | 'podcast_sponsored_segment' | 'other_podcast' | 'online_pr_article' | 'print_pr_article' | 'syndicated_pr_article' | 'other_pr_article'Updated channel.
activity'instagram_story' | 'instagram_post' | 'instagram_reel' | 'youtube_video' | 'youtube_short' | 'tiktok_video' | 'twitter_post' | 'linkedin_post' | 'reddit_post' | nullUpdated content type.
namestringUpdated activity name (max 500 characters).
startAtstring (ISO 8601) | null | nullUpdated start date.
endAtstring (ISO 8601) | null | nullUpdated end date.
mediaProviderIdstring (UUID) | nullUpdated provider for a provider-delivered activity.
impressionsinteger | nullUpdated delivered or estimated impression count.
deliverySource'platform_reported' | 'provider_reported' | 'user_entered' | 'benchmark_estimated' | 'modeled' | nullUpdated provenance of the delivered activity metrics.
broadcastDetailsobjectUpdated broadcast delivery details.
outOfHomeDetailsobjectUpdated out-of-home delivery details.
printDetailsobjectUpdated print delivery details.
eventDetailsobjectUpdated event delivery details.
podcastDetailsobjectUpdated podcast delivery details.
prArticleDetailsobjectUpdated PR article delivery details.
contentHrefstring (URL) | nullURL to the original content (max 2,048 characters).
viewsCountinteger | nullManual view count override (non-negative integer).
likeCountinteger | nullManual like count override (non-negative integer).
replyCountinteger | nullManual reply count override (non-negative integer).

Response#

Returns { data, _meta } with the result.

Content link changes reset metrics

Changing the contentLink triggers a metric refresh. Previous metric snapshots are preserved but the latest values will update.

DELETE /v1/activities/:id#

Permanently delete an activity and its associated records.

bash
DELETE /v1/activities/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredActivity identifier to delete.

Response#

Returns { data, _meta } with the result.

Destructive action

Deleting an activity permanently removes all linked metrics, costs, creator associations, and notes. This action cannot be undone.

Connect a social media post URL to an activity for automatic metric tracking.

bash
POST /v1/activities/content-link/connect
Authorization: Bearer {token}
Content-Type: application/json

{
  "activity_id": "7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02",
  "platform": "instagram",
  "content_url": "..."
}

Parameters#

NameTypeRequiredDescription
activityIdstring (UUID)RequiredActivity identifier to connect the content link to.
platform'instagram' | 'youtube' | 'tiktok' | 'twitter' | 'linkedin' | 'reddit'RequiredSocial media platform for this content.
contentUrlstringRequiredURL to the social media content (max 2,048 characters).

Response#

Returns { data, _meta } with the result.

Metric refresh

Connecting a content link triggers an immediate metric fetch for the linked post.

Disconnect a content link from an activity, stopping automatic metric tracking.

bash
POST /v1/activities/content-link/disconnect
Authorization: Bearer {token}
Content-Type: application/json

{
  "activity_id": "7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02"
}

Parameters#

NameTypeRequiredDescription
activityIdstring (UUID)RequiredActivity identifier to disconnect the content link from.

Response#

Returns { data, _meta } with the result.

GET /v1/activities/creators#

List creators linked to an activity with pagination.

bash
GET /v1/activities/creators?page_index=0&page_size=25&organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01&activity_id=7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
organizationIdstring (UUID)RequiredOrganization identifier.
activityIdstring (UUID)RequiredActivity identifier to list creators for.

Response#

Returns { items, totalCount, facets, _meta } with paginated results.

GET /v1/activities/creators/count#

Count the number of creators linked to an activity.

bash
GET /v1/activities/creators/count?organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01&activity_id=7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
activityIdstring (UUID)RequiredActivity identifier to count creators for.

Response#

Returns { count, _meta }.

Associate a creator with an activity.

bash
POST /v1/activities/:id/creators
Authorization: Bearer {token}
Content-Type: application/json

{
  "activity_id": "7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02",
  "creator_id": "9b4c2e78-1a53-4f6d-b8e9-0c7a5d3f1e04"
}

Parameters#

NameTypeRequiredDescription
activityIdstring (UUID)RequiredActivity identifier to link.
creatorIdstring (UUID)RequiredCreator identifier to link.

Response#

Returns { data, _meta } with the result.

Remove a creator association from an activity.

bash
DELETE /v1/activities/:id/creators/:creatorId
Authorization: Bearer {token}
Content-Type: application/json

{
  "activity_id": "7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02"
}

Parameters#

NameTypeRequiredDescription
activityIdstring (UUID)RequiredActivity identifier to unlink from.
creatorIdstring (UUID)RequiredCreator identifier to unlink.

Response#

Returns { data, _meta } with the result.

Cascading deletion

Unlinking a creator removes all cost records associated with that creator on this activity.

POST /v1/activities/costs#

Add a cost line item with net amount, currency, category, creator attribution, tax breakdown, and booking reference.

bash
POST /v1/activities/costs
Authorization: Bearer {token}
Content-Type: application/json

{
  "activity_id": "7f2e9b34-5c81-4d6a-8e07-9a3b1c5d2f02",
  "amount": "150.00",
  "category_id": "...",
  "currency": "..."
}

Parameters#

NameTypeRequiredDescription
activityIdstring (UUID)RequiredActivity identifier to add the cost to.
amountnumberRequiredCost amount (must be greater than zero, max 100M).
categoryIdstring (UUID)RequiredReusable cost category identifier.
currencystringRequiredISO 4217 currency code, e.g. "USD", "NZD" (exactly 3 characters).
descriptionstring | nullOptional description of this cost line item (max 1,000 characters).
creatorIdstring (UUID) | nullCreator this cost is attributed to.
grossAmountnumber | nullGross booked cost before discounts and tax adjustments.
discountAmountnumber | nullDiscount applied to the gross booked cost.
taxAmountnumber | nullTax amount recorded for the cost.
bookingReferencestring | nullProvider booking or insertion-order reference.

Response#

Returns { data, _meta } with the result.

Auto-linking

If the activity has exactly one linked creator, the cost is automatically attributed to that creator.

PATCH /v1/activities/costs/:id#

Update a cost line item's net, gross, discount, and tax amounts, category, creator attribution, description, or booking reference.

bash
PATCH /v1/activities/costs/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredCost record identifier to update.
amountnumberUpdated cost amount (must be greater than zero, max 100M).
categoryIdstring (UUID)Updated reusable cost category identifier.
descriptionstring | nullUpdated description (max 1,000 characters).
creatorIdstring (UUID) | nullUpdated creator attribution.
grossAmountnumber | nullGross booked cost before discounts and tax adjustments.
discountAmountnumber | nullDiscount applied to the gross booked cost.
taxAmountnumber | nullTax amount recorded for the cost.
bookingReferencestring | nullProvider booking or insertion-order reference.

Response#

Returns { data, _meta } with the result.

DELETE /v1/activities/costs/:id#

Remove a cost line item from an activity.

bash
DELETE /v1/activities/costs/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredCost record identifier to delete.

Response#

Returns { data, _meta } with the result.

GET /v1/activities/metrics/confidence#

Assess the statistical confidence of an activity's metrics.

bash
GET /v1/activities/metrics/confidence?organization_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
organizationIdstring (UUID)RequiredOrganization identifier.
startDatestring | nullStart date for confidence calculation window.
endDatestring | nullEnd date for confidence calculation window.

Response#

Returns { data, _meta } with the result.

GET /v1/activities/sparklines#

Fetch sparkline chart data for one or more activities.

bash
GET /v1/activities/sparklines?activity_ids=...
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
activityIdsArray<string (UUID)>RequiredArray of activity identifiers to fetch sparkline data for.

Response#

Returns { items, totalCount, facets, _meta } with paginated results.

GET /v1/activities/:id#

Retrieve a single activity by ID with full details.

bash
GET /v1/activities/:id
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
idstring (UUID)RequiredActivity identifier.

Response#

Returns { data, _meta } with the result.