# 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. All timestamps are in UTC (ISO 8601 format with Z suffix). 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 that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. 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 that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. 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 that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. 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 that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z"