Share via


Network Data Export API

The Network Data Export API enables Viva Engage Verified Administrators to export all messages (including previous versions), files stored in Yammer, topics, users, and groups from a Viva Engage network. Data is exported as a ZIP file containing CSV files for each model and, if requested, file attachments.

You can perform a one-time export by specifying a date range, or set up recurring exports (daily or weekly) to meet compliance, analytics, or archival requirements.

Important

Daily exports are recommended instead of large, infrequent exports to reduce the risk of errors and improve reliability.

Key Features

  • Comprehensive Export: Export all network data, including messages (and previous versions), files, topics, users, and groups.
  • Flexible Scheduling: Perform one-time or recurring exports based on your busines needs.
  • Granular Control: Specify which models to export and the date range for the export.
  • External Groups and Users: Export all content for external groups and, for external users, only threads in which they participated.

Network Data Exports can also be performed via the Viva Engage admin portal: Yammer Network Admin > Content and Security > Export Data.

How the API Works

The Network Data Export API is synchronous. An HTTP GET request returns a ZIP file containing the requested data.

Example Requests

  • Export all data since February 9, 2020:

    https://www.yammer.com/api/v1/export?since=2020-02-09T00:00:00+00:00
    
  • Export all data between February 9, 2020 and March 10, 2021:

    https://www.yammer.com/api/v1/export?since=2020-02-09T00:00:00+00:00&until=2021-03-10T00:00:00+00:00
    
  • Export all data since February 9, 2020, excluding file attachments:

    https://www.yammer.com/api/v1/export?since=2020-02-09T00:00:00+00:00&include=csv
    
  • Export only message data since February 9, 2020, excluding file attachments:

    https://www.yammer.com/api/v1/export?since=2020-02-09T00:00:00+00:00&model=Message&include=csv
    

Query Parameters

  • model: (Optional) Specify which models (CSVs) to export. If omitted, all available models are exported. To export multiple models, repeat the model parameter, each value representing the name of a CSV to export, e.g., User, Group, Message, MessageVersion, Topic, etc.
  • since: (Required) Start date for the export (ISO-8601 format). All exported changes will have occurred on or after this date.
  • until: (Optional) End date for the export (ISO-8601 format). All exported changes will have occurred on or before this date. If omitted, defaults to the current date.
  • include: (Optional) Specify whether to include file attachments. Use csv to exclude attachments or all to include them.
  • network: (Optional) Specify which network(s) to export. Must be accessible with the provided OAuth bearer token.
  • include_ens: (Optional) If true, includes all external networks associated with the authenticated network.

Ensure all parameters are properly URL-encoded before making the request.

API Response

The response is a ZIP file (application/zip) containing the exported data. The ZIP file includes:

  • CSV files for all or specifically requested models
  • log.txt: Summary of the export
  • request.txt: Parameters used for the export
  • File attachments (if requested and stored in Yammer)

CSV Files Reference

Admins.csv

Purpose: Contains information about network administrators and their roles.

Properties:

  • id - Unique identifier for the admin user
  • name - Admin's display name
  • email - Admin's email address
  • verified - Whether the admin account is verified (true/false)
  • roles - Array of admin roles. Possible values include: Admin, Tenant Admin, M365 Yammer Admin, Verified Admin, Corporate Communicator, Answers Administrator

AMAs.csv

Purpose: Contains information about Ask Me Anything (AMA) sessions.

Properties:

  • id - Unique identifier for the AMA
  • title - AMA title
  • description - AMA description
  • created_at - Timestamp when AMA was created
  • updated_at - Timestamp when AMA was last updated
  • meeting_state - State of the meeting. Possible values include: CREATED, STARTED, ENDED
  • tenant_id - ID of the tenant
  • added_by - ID of user who added the AMA
  • partner_id - Partner ID for the AMA
  • start_time - AMA start time
  • end_time - AMA end time
  • admission_type - Type of admission. Possible values include: OPEN, CLOSED
  • qna_app_enabled - Whether Q&A app is enabled (true/false)
  • replies_enabled - Whether replies are enabled (true/false)
  • moderation_enabled - Whether moderation is enabled (true/false)
  • is_thread_upvote_enabled - Whether thread upvoting is enabled (true/false)
  • access_category - Access category. Possible values include: PRIVATE, PUBLIC
  • cs_subscription_status - Customer service subscription status. Possible values include: NOT_SUBSCRIBED, SUBSCRIBED
  • presenter_option - Presenter option. Possible values include: EVERYONEINCOMPANY
  • join_link - Link to join the AMA
  • artifact_service_enabled - Whether artifact service is enabled (true/false)
  • is_anonymous_posting_enabled - Whether anonymous posting is enabled (true/false)
  • auto_admitted_policy - Auto-admission policy. Possible values include: EveryoneInCompanyExcludingGuests
  • created_by_type - Type of entity that created the AMA
  • calendar_id - Calendar ID for the AMA
  • is_new_question_notification_enabled - Whether new question notifications are enabled (true/false)
  • recording_url - URL to AMA recording
  • townhall_rtmp_capability - Town hall RTMP capability
  • ves_id - VES (Video Event Service) ID
  • ves_external_event_id - External VES event ID
  • version - AMA version
  • participants_data - JSON data about participants
  • calendar_invites_data - Calendar invitation data
  • is_reaction_enabled - Whether reactions are enabled (true/false)
  • is_anonymous_reply_enabled - Whether anonymous replies are enabled (true/false)

AnswerVotes.csv

Purpose: Contains votes on answers in Q&A threads.

Properties:

  • id - Unique identifier for the vote
  • network_id - ID of the network
  • voter_id - ID of user who voted
  • message_id - ID of message that was voted on
  • thread_id - ID of thread containing the message
  • created_at - Timestamp when vote was created
  • updated_at - Timestamp when vote was last updated
  • creation_mode - Mode used to create the vote
  • application_id - ID of application used to create vote

Campaigns.csv

Purpose: Contains information about campaigns in the network.

Properties:

  • id - Unique identifier for the campaign
  • name - Campaign name
  • api_url - API endpoint for campaign data
  • description - Campaign description
  • hashtags - Hashtags associated with campaign
  • state - Campaign state. Possible values include: ACTIVE, INACTIVE, ENDED
  • official - Whether campaign is official (true/false)
  • created_at - Timestamp when campaign was created
  • creator_id - ID of user who created the campaign
  • default_cover_image_url_template - Default cover image URL template
  • cover_image_url_template - Cover image URL template
  • permalink - Campaign permalink template
  • scope_id - ID of scope where campaign exists
  • scope_type - Type of scope. Possible values include: NETWORK
  • user_roles - User roles associated with campaign
  • targeted_to - Target audience for campaign

EngageTopicApplicationMigrationLog.csv

Purpose: Contains logs of topic application migrations.

Properties:

  • id - Unique identifier for the migration log
  • cortex_topic_id - ID of the Cortex topic
  • target_id - ID of the target content
  • target_type - Type of target content
  • migrated_at - Timestamp when migration occurred
  • migration_action - Action taken during migration

EngageTopicMigrationLog.csv

Purpose: Contains logs of topic migrations from legacy systems.

Properties:

  • id - Unique identifier for the migration log
  • cortex_topic_id - ID of the Cortex topic
  • migrated_at - Timestamp when migration occurred
  • migration_action - Action taken during migration. Possible values include: migrated

Files.csv

Purpose: Contains information about files uploaded to the network. Files.csv does not contain the actual files. Files stored in Viva Engage are exported in their native format to the Files folder of the zip file. Files stored in SharePoint are not exported.

Properties:

  • id - Unique identifier for the file version
  • file_id - Unique identifier for the file
  • name - File name
  • description - File description
  • uploader_id - ID of user who uploaded the file
  • uploader_type - Type of uploader. Possible values include: User
  • group_id - ID of group where file was uploaded
  • group_name - Name of group where file was uploaded
  • reverted_to_id - ID of version file was reverted to (if applicable)
  • deleted_by_user_id - ID of user who deleted the file (if applicable)
  • in_private_group - Whether file is in a private group (true/false)
  • in_private_conversation - Whether file is in a private conversation (true/false)
  • file_api_url - API endpoint for file data
  • download_url - URL to download the file
  • path - File path in export
  • uploaded_at - Timestamp when file was uploaded
  • deleted_at - Timestamp when file was deleted (if applicable)
  • original_network - Original network where file was uploaded
  • storage_type - Type of storage. Possible values include: SHAREPOINT
  • scope_id - ID of scope where file exists
  • scope_type - Type of scope. Possible values include: YAMMER_INFLUENCER, YAMMER_GROUP

Groups.csv

Purpose: Contains information about communities in the network.

Properties:

  • id - Unique identifier for the communities
  • name - community name
  • description - community description
  • private - Whether community is private (true/false)
  • moderated - Whether community is moderated (true/false)
  • api_url - API endpoint for community data
  • created_by_id - ID of user who created the community
  • created_by_type - Type of entity that created the community. Possible values include: User
  • created_at - Timestamp when community was created
  • updated_at - Timestamp when community was last updated
  • deleted - Whether community is deleted (true/false)
  • external - Whether community is external (true/false). This applies only to the legacy Yammer communities, and doesn't reflect external status of M365 connected communities.
  • office_group_id - Microsoft 365 community identifier
  • group_tags - Tags associated with the community
  • group_custom_cover_image - URL to custom cover image
  • office_resource_card_enabled - Whether Office resource card is enabled (true/false)
  • files_tab_enabled - Whether files tab is enabled (true/false)
  • segment_id - ID of segment the group belongs to

LikedMessageHistory.csv

Purpose: Contains history of message likes and reactions.

Properties: Same as Messages.csv plus:

  • reaction - Type of reaction. Possible values include: like, love, celebrate, thank, laugh, sad, happy, excited, smile, silly, intenseLaugh, starStruck, goofy, thinking, surprised, mindBlown, scared, crying, shocked, angry, agree, praise, takingNotes, heartBroken, support, confirmed, watching, brain, medal, bullseye.
  • reaction_action - Action taken. Possible values include: add, remove
  • reaction_timestamp - Timestamp when reaction was made
  • reacted_by - ID of user who made the reaction

Messages.csv

Purpose: Contains all messages posted in the network, including posts and replies.

Properties:

  • id - Unique identifier for the message
  • replied_to_id - ID of message this is replying to (if applicable)
  • parent_id - ID of parent message in thread
  • thread_id - ID of the message thread
  • conversation_id - ID of private conversation (if applicable)
  • group_id - ID of group where message was posted
  • group_name - Name of group where message was posted
  • participants - List of participants in private conversation
  • in_private_group - Whether message is in a private group (true/false)
  • in_private_conversation - Whether message is in a private conversation (true/false)
  • sender_id - ID of user who sent the message
  • sender_type - Type of sender. Possible values include: User
  • sender_name - Display name of sender
  • sender_email - Email address of sender
  • body - Plain text content of the message
  • delegate_id - ID of user posting on behalf of another (if applicable)
  • api_url - API endpoint for message data
  • attachments - Information about file attachments. Within attachments this OGO information is exported: id, url, title, description.
  • deleted_by_id - ID of user who deleted the message (if applicable)
  • deleted_by_type - Type of entity that deleted the message (if applicable)
  • created_at - Timestamp when message was created. If edited, it shows the last edit time.
  • deleted_at - Timestamp when message was deleted (if applicable)
  • title - Message title (if applicable)
  • html_body - HTML-formatted content of the message
  • message_type - Type of message. Possible values include: normal, praise, poll, announcement
  • poll_options - Poll options (if message is a poll)
  • poll_voting_closed_at - Timestamp when poll voting closed
  • praise_type - Type of praise.
  • gdpr_delete_url - URL for GDPR deletion
  • scope_id - ID of scope where message exists
  • scope_type - Type of scope. Possible values include: YAMMER_GROUP for community messages, NETWORK_QUESTION for Answers messages, YAMMER_INFLUENCER for storyline messages, YAMMER_PRIVATE_CONVERSATION for private messages.
  • is_supplemental_reply - Whether this is a supplemental reply (true/false)
  • scheduled_publish_at - Timestamp when message was scheduled to publish
  • notification_target - Target for notifications
  • is_draft - Whether message is a draft (true/false)
  • intelligent_importer_extraction_id - ID for intelligent importer extraction. This id does not correspond to any other exported model, but can be used to correlate messages that were generated together.
  • is_ai_generated - Whether message was AI-generated (true/false). If a message was generated as a draft, such as with Intelligent Importer, it is only considered AI generated until it is published. Once an AI-generated message is posted, this flag is reset and the message in export appears like any other message posted by a user.
  • intelligent_importer_file_id - File ID for intelligent importer
  • collaborators - List of collaborators on the message
  • collaborator_id - ID of collaborator
  • creation_mode - Mode used to create the message
  • application_id - ID of application used to create message

MessageThreadExtension.csv

Purpose: Contains more detailed data for message threads, such as best reply, or verified reply.

Properties:

  • network_id - ID of the network
  • thread_id - ID of the thread
  • message_id - ID of the message
  • operation - Type of operation performed
  • operation_performed_by - ID of user who performed the operation
  • operation_performed_at - Timestamp when operation was performed

MessageThreads.csv

Purpose: Contains information about message threads where external users participated.

Properties:

  • id - Unique identifier for the thread
  • files - Files attached to the thread
  • external_participants - External participants in the thread
  • updated_at - Timestamp when thread was last updated
  • original_network - Original network where thread was created
  • is_announcement - Whether thread is an announcement (true/false)
  • is_reply_disabled - Whether replies are disabled (true/false)

MessageThreads.Outbound.csv

Purpose: Contains information about outbound message threads (cross-network), including external participants.

Properties:

  • id - Unique identifier for the thread
  • files - Files attached to the thread
  • external_participants - External participants in the thread
  • updated_at - Timestamp when thread was last updated
  • is_announcement - Whether thread is an announcement (true/false)
  • is_reply_disabled - Whether replies are disabled (true/false)

MessageVersions.csv

Purpose: Contains version history of messages, tracking edits and change within the export period.

Properties: Same as Messages.csv - tracks all versions of edited messages.

MutedThreads.csv

Purpose: Contains information about muted message threads.

Properties:

  • thread_id - ID of the muted thread
  • network_id - ID of the network
  • is_muted - Whether thread is muted (true/false)
  • updated_by_id - ID of user who updated the mute status
  • created_at - Timestamp when mute was created
  • updated_at - Timestamp when mute was last updated

MutedUser.csv

Purpose: Contains information about muted users.

Properties:

  • id - Unique identifier for the muted user record
  • user_id - ID of the muted user
  • network_id - ID of the network
  • muted_by - ID of user who applied the mute
  • muted_at - Timestamp when user was muted

Networks.csv

Purpose: Contains information about the Viva Engage network.

Properties:

  • id - Unique identifier for the network
  • permalink - Network permalink/domain
  • name - Network name
  • url - Network URL
  • paid - Whether network is paid (true/false)
  • created_at - Timestamp when network was created
  • moderated - Whether network is moderated (true/false)
  • usage_policy - Network usage policy (true/false)
  • number_of_users - Total number of users in network
  • secure_browser_token - Secure browser token

Segments.csv

Purpose: Contains user segmentation data.

Properties:

  • segment_id - Unique identifier for the segment
  • segment_name - Name of the segment
  • created_at - Timestamp when segment was created

Sentie.csv

Purpose: Contains sentiment analysis data for content.

Properties:

  • user_id - ID of the user
  • sentiment_score - URL to sentiment score data
  • sentiment_opinions - JSON array of sentiment opinions
  • text_sentiment - Overall text sentiment. Possible values include: positive, negative, neutral
  • leaders - JSON array of leader user IDs
  • creator_id - ID of content creator
  • thread_id - ID of the thread

Summarization.csv

Purpose: Contains AI-generated summaries of content.

Properties:

  • network_id - ID of the network
  • id - Unique identifier for the summarization
  • summarization_type - Type of summarization. Possible values include: thread_starter_summary
  • summarization_data - JSON object containing summarization data including thread IDs, message IDs, summaries, and themes
  • created_at - Timestamp when summarization was created

Tags.csv

Purpose: Contains hashtags and topics used in the network.

Properties:

  • id - Unique identifier for the tag
  • name - Tag name (without # symbol)

ThreadVotes.csv

Purpose: Contains votes on entire message threads.

Properties:

  • id - Unique identifier for the vote
  • network_id - ID of the network
  • voter_id - ID of user who voted
  • thread_id - ID of thread that was voted on
  • created_at - Timestamp when vote was created
  • updated_at - Timestamp when vote was last updated

Topics.csv

Purpose: Contains traditional Viva Engage topics.

Properties:

  • id - Unique identifier for the topic
  • name - Topic name
  • created_by - ID of user who created the topic
  • created_at - Timestamp when topic was created
  • api_url - API endpoint for topic data
  • description - Topic description

TopicSubscriptions.csv

Purpose: Contains user subscriptions to topics.

Properties:

  • id - Unique identifier for the subscription
  • user_network_id - ID of user network
  • subscriber_id - ID of subscribing user
  • subscription_type - Type of subscription
  • legacy_id - Legacy subscription ID
  • created_at - Timestamp when subscription was created
  • updated_at - Timestamp when subscription was last updated

UserGroupRecommendationActions.csv

Purpose: Contains user actions on group and topic recommendations.

Properties:

  • id - Unique identifier for the action record
  • user_prompt_view_times - Number of times user viewed prompts
  • group_recommendation_dismiss_times - Number of times user dismissed group recommendations
  • topic_recommendation_dismiss_times - Number of times user dismissed topic recommendations
  • group_recommendation_view_times - Number of times user viewed group recommendations
  • user_recommendation_view_times - Number of times user viewed user recommendations
  • topic_recommendation_view_times - Number of times user viewed topic recommendations

Users.csv

Purpose: Contains information about all users in the Viva Engage network, created or modified during the export time range.

Properties:

  • id - Unique identifier for the user
  • name - User's display name
  • email - User's email address
  • job_title - User's job title
  • location - User's location
  • department - User's department
  • api_url - API endpoint for user data
  • deleted_by_id - ID of admin who deleted the user (if applicable)
  • deleted_by_type - Type of entity that deleted the user (if applicable)
  • joined_at - Timestamp when user joined the network
  • created_at - Timestamp when user was originally created.
  • updated_at - Timestamp when user was last modified.
  • deleted_at - Timestamp when user was deleted (if applicable)
  • suspended_by_id - ID of admin who suspended the user (if applicable)
  • suspended_by_type - Type of entity that suspended the user (if applicable)
  • suspended_at - Timestamp when user was suspended (if applicable)
  • guid - Globally unique identifier
  • state - User account state. Possible values include: active, suspended, deleted
  • office_user_id - Microsoft 365 user identifier
  • user_cover_image_url - URL to user's cover image
  • sash_campaign_id - Campaign ID for user sash/badge
  • user_segment_ids - Comma-separated list of segment IDs the user belongs to

VivaEngageLeaders.csv

Purpose: Contains information about Viva Engage leaders and their audiences.

Properties:

  • leader_id - ID of the leader
  • leader_created_at - Timestamp when leader was created (Unix timestamp)
  • audience_name - Name of the audience
  • audience_created_at - Timestamp when audience was created (Unix timestamp)
  • audience_created_by - ID of user who created the audience
  • audience_updated_at - Timestamp when audience was last updated (Unix timestamp)
  • audience_updated_by - ID of user who last updated the audience
  • size - Size of the audience
  • audience_group_ids - Comma-separated list of group IDs in the audience
  • entire_org - Whether audience includes entire organization (true/false)
  • entire_mto - Whether audience includes entire MTO (true/false)

VivaTopicApplications.csv

Purpose: Contains applications of Viva Topics to content.

Properties:

  • cortex_topic_id - ID of the Cortex topic
  • applicant_id - ID of user who applied the topic
  • target_id - ID of target content
  • group_id - ID of group where topic was applied
  • target_type - Type of target. Possible values include: MESSAGE_THREAD
  • deleted - Whether application is deleted (true/false)
  • is_topic_curated - Whether topic is curated (true/false)
  • created_at - Timestamp when application was created
  • updated_at - Timestamp when application was last updated
  • topic_name - Name of the topic

VivaTopicCurationStateLogs.csv

Purpose: Contains logs of Viva Topic curation state changes.

Properties:

  • cortex_topic_id - ID of the Cortex topic
  • topic_curation_state_update - Type of curation state update. Possible values include: CREATE_APPROVED, CREATE_PENDING, CREATE_REJECTED
  • acting_user_id - ID of user who made the change
  • committed_to_km_at - Timestamp when committed to knowledge management
  • created_at - Timestamp when log was created
  • updated_at - Timestamp when log was last updated

VivaTopics.csv

Purpose: Contains Viva Topics integrated with Viva Engage.

Properties:

  • id - Unique identifier for the Viva Topic
  • name - Topic name
  • created_by - ID of user who created the topic
  • created_at - Timestamp when topic was created
  • api_url - API endpoint for topic metadata
  • description - Topic description
  • legacy_id - Legacy topic ID from migration
  • merged_ids - IDs of topics that were merged
  • short_description - Short description of the topic
  • topic_curation_state - Curation state. Possible values include: APPROVED, PENDING, REJECTED

WatchAlertDetectedThreads.csv

Purpose: Contains threads detected by watch alert systems.

Properties:

  • thread_id - ID of the detected thread
  • network_id - ID of the network
  • theme_detections - JSON array of theme detections
  • keyword_detections - JSON array of keyword detections
  • state - Detection state. Possible values include: IN_REVIEW, APPROVED, REJECTED
  • sentiment_counts - JSON object with sentiment analysis counts
  • unique_user_count - Number of unique users in the thread
  • created_at - Timestamp when detection was created
  • updated_at - Timestamp when detection was last updated
  • updated_by_id - ID of user who last updated the detection

WatchAlertThemes.csv

Purpose: Contains themes for watch alerts and content monitoring.

Properties:

  • theme_id - Unique identifier for the theme
  • network_id - ID of the network
  • theme_name - Name of the theme
  • auto_mute - Whether to automatically mute content matching this theme (true/false)
  • do_notify - Whether to send notifications for this theme (true/false)
  • created_at - Timestamp when theme was created
  • updated_at - Timestamp when theme was last updated
  • version - Theme version

This documentation covers all CSV files that may appear in a Viva Engage export. The actual files present in your export may vary based on your network configuration and data availability.

Message Export Details

  • Only message versions within the specified time range are exported.
  • If a message's latest version is within the time range, it appears in both Messages.csv and MessageVersions.csv. Older versions within the range appear only in MessageVersions.csv.

Error Handling

If any data fails to export, the export will be partial. Details of any failures are recorded in log.txt. To minimize the risk of partial exports, use smaller timeframes for each export.

Sample Code

Sample scripts for using the Network Data Export API with Unix and Windows PowerShell are available here. These samples are for illustration purposes only and are not intended for production use.