# Get campaign analytics summary Returns read-only analytics summary for a campaign, including aggregated metrics totals and participation-level breakdown. Only the campaign owner can view analytics. Returns aggregated metrics from the latest snapshot per participation. Endpoint: GET /analytics/campaigns/{campaignId}/summary Version: 0.1.0 Security: bearerAuth ## Path parameters: - `campaignId` (string, required) Unique identifier for the campaign Example: "campaign_abc123" ## Response 200 fields (application/json): - `summary` (object, required) - `summary.campaignId` (string, required) Unique identifier for the campaign Example: "campaign_abc123" - `summary.totalImpressions` (integer, required) Sum of impressions across all participations with metrics Example: 2592 - `summary.totalReach` (integer, required) Sum of reach across all participations with metrics Example: 2023 - `summary.totalLikes` (integer, required) Sum of likes across all participations with metrics Example: 192 - `summary.totalComments` (integer, required) Sum of comments across all participations with metrics Example: 112 - `summary.totalSaves` (integer, required) Sum of saves across all participations with metrics Example: 24 - `summary.totalShares` (integer, required) Sum of shares across all participations with metrics Example: 5 - `summary.participationCountWithMetrics` (integer, required) Number of participations that have at least one metrics snapshot Example: 3 - `summary.totalParticipationCount` (integer, required) Total number of participations in the campaign (regardless of metrics presence) Example: 5 - `summary.metricsCoverageRatio` (number, required) Ratio of participations with metrics to total participations (0-1) Example: 0.6 - `summary.earliestSnapshotFetchedAtTimestamp` (string,null, required) Earliest fetchedAtTimestamp across all snapshots, or null if no snapshots Example: "2025-11-26T23:39:30.449Z" - `summary.latestSnapshotFetchedAtTimestamp` (string,null, required) Latest fetchedAtTimestamp across all snapshots, or null if no snapshots Example: "2025-11-27T10:12:02.100Z" - `participationAnalyticsList` (array, required) List of participation analytics views, one per participation that has metrics - `participationAnalyticsList.participationId` (string, required) Unique identifier for the participation Example: "participation_xyz789" - `participationAnalyticsList.influencerUserId` (string, required) Unique identifier for the influencer user Example: "user_123" - `participationAnalyticsList.externalMediaId` (string, required) External media ID from the latest snapshot Example: "abc123" - `participationAnalyticsList.impressions` (integer, required) Impressions from the latest snapshot Example: 2592 - `participationAnalyticsList.reach` (integer, required) Reach from the latest snapshot Example: 2023 - `participationAnalyticsList.likes` (integer, required) Likes from the latest snapshot Example: 192 - `participationAnalyticsList.comments` (integer, required) Comments from the latest snapshot Example: 112 - `participationAnalyticsList.saves` (integer, required) Saves from the latest snapshot Example: 24 - `participationAnalyticsList.shares` (integer, required) Shares from the latest snapshot Example: 5 - `participationAnalyticsList.lastMetricsSyncedAtTimestamp` (string,null, required) Last time metrics were synced for this participation (from participation entity) Example: "2025-11-26T23:39:30.449Z" - `participationAnalyticsList.latestSnapshotFetchedAtTimestamp` (string, required) FetchedAtTimestamp of the latest snapshot Example: "2025-11-26T23:39:30.449Z" ## Response 401 fields (application/json): - `error` (string, required) Error code Example: "VALIDATION_ERROR" - `message` (string, required) Human-readable error message Example: "Invalid email address or password format" - `details` (object) Additional error details (optional) - `requestId` (string) Unique request identifier for tracing (included in X-Request-ID header) Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z" ## Response 403 fields (application/json): - `error` (string, required) Error code Example: "VALIDATION_ERROR" - `message` (string, required) Human-readable error message Example: "Invalid email address or password format" - `details` (object) Additional error details (optional) - `requestId` (string) Unique request identifier for tracing (included in X-Request-ID header) Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z" ## Response 404 fields (application/json): - `error` (string, required) Error code Example: "VALIDATION_ERROR" - `message` (string, required) Human-readable error message Example: "Invalid email address or password format" - `details` (object) Additional error details (optional) - `requestId` (string) Unique request identifier for tracing (included in X-Request-ID header) Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z" ## Response 503 fields (application/json): - `error` (string, required) Error code Example: "VALIDATION_ERROR" - `message` (string, required) Human-readable error message Example: "Invalid email address or password format" - `details` (object) Additional error details (optional) - `requestId` (string) Unique request identifier for tracing (included in X-Request-ID header) Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z"