Skip to main content

Documentation Index

Fetch the complete documentation index at: https://koreai.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Back to Search AI connectors list The Confluence Cloud Connector integrates Search AI with your Atlassian Confluence Cloud account, enabling intelligent search over your organization’s knowledge articles using OAuth 2.0 authentication.
SpecificationDetails
Repository typeCloud
Supported API versionREST API v1
Supported contentPages and attachments to the pages in the following formats: .pdf, .doc, .docx, .csv, .txt, .xls, .xlsx, .ppt, .pptx, Images (.jpeg, .png, .svg, .webp)
Access control supportYes
Content filteringYes
Real-Time SyncYes

Prerequisites

  • An admin account in Atlassian Confluence Cloud
  • A target domain
  • Access to the Atlassian Developer Portal
  • Space Admin access (minimum) or Site Admin access (for global rules)

Configure an OAuth Application

  1. Sign in to your developer account at the Atlassian Developer Portal. Confluence Home
  2. Click your profile name at the top right and navigate to the Developer Console. Apps
  3. Review the list of all your apps.
  4. Click Create and select OAuth 2.0 Integration. Create App
  5. Provide a name for the application and click Create. Create App
  6. Open the Settings tab, update the application name and description, optionally add an avatar, and click Save changes. App Settings
  7. Go to the Authorization tab and enter the Search AI callback URL for your region, then click Save changes.
    RegionCallback URL
    JPhttps://jp-bots-idp.kore.ai/workflows/callback
    DEhttps://de-bots-idp.kore.ai/workflows/callback
    Prodhttps://idp.kore.com/workflows/callback
    App Settings
  8. Go to the Permissions tab and add the following APIs:User Identity API, Confluence API, and Jira API. App Permissions
    • User Identity API - Click config, then Edit Scopes, grant the following permissions, and click Save:
      • read:me
      • read:account
      API Scope
    • Confluence API - Go to Granular Scopes, select Edit Scopes, add the following permissions, and click Save:
      • read:analytics.content:confluence
      • read:content-details:confluence
      • read:content.permission:confluence
      • read:content:confluence
      • read:page:confluence
      • read:space-details:confluence
      • read:space.permission:confluence
      • read:space:confluence
      • read:user.property:confluence
      • readonly:content.attachment:confluence
      • read:confluence-groups
      • read:confluence-content.all
      For Classic Scopes, add read:confluence-groups and click Save. API Scope
    • Jira API - Go to Classic Scopes, select Edit Scopes, add read:jira-user, and click Save. API Scope
  9. Go to Settings and locate the Client ID and Secret at the bottom of the page. Save these for use in the next step. Settings
  10. Go to the Confluence home page, click your Profile, and navigate to the Products tab. The host URL is displayed at the bottom of the page. Profile Products Host URL

Configure the Search AI Connector

  1. Go to Content > Connectors and choose Confluence (Cloud).
  2. Under Authentication, enter:
    FieldDescription
    NameUnique name for the connector
    Authorization TypeOAuth 2.0
    Grant TypeAuthorization Code
    Client IDClient ID from the Confluence OAuth application
    Client SecretClient Secret from the Confluence OAuth application
    Host URLConfluence server base URL (without trailing slash)
  3. To enable real-time synchronization, switch the Real-Time Sync toggle to On. Use this webhook client secret and URL to configure the trigger in Confluence Cloud.
  4. Click Connect to initiate authorization.

Configure Webhook Trigger in Confluence Cloud for Real-Time Sync

This is an optional step and is only required if real time sync is enabled.
  1. Go to your Confluence space.
  2. Click Space Settings.
  3. Open Automation.
  4. Click Create rule and add an Incoming Webhook trigger (or select Send web request as an action) for each of the following supported events.
    • Page published
    • Page updated
    • Page deleted
  5. Add a Send web request action with ingestion endpoint URL and headers as in the Search AI authorization page. Add the HTTP header X-Automation-Webhook-Token and input your secret key (generated in Search AI) for secure authentication.
  6. In the request body, select Custom data and add the following payloads per trigger. Payload for Page_Published
    {
    "eventType": "{{eventType}}",
    "timestamp": "{{now}}",
    "page": {
        "id": "{{page.id}}",
        "title": "{{page.title}}",
        "type": "{{page.type}}",
        "status": "{{page.status}}",
        "version": "{{page.version.number}}",
        "url": "{{page._links.base}}{{page._links.webui}}"
    },
    "space": {
        "key": "{{space.key}}",
        "name": "{{space.name}}",
        "id": "{{space.id}}"
    },
    "content": {
        "body": "{{page.body.storage.value}}"
    },
    "author": {
        "accountId": "{{page.version.by.accountId}}",
        "displayName": "{{page.version.by.displayName}}"
    },
    "lastUpdated": {
        "when": "{{page.version.when}}"
    }
    }
    
    Payload for Page_Updated
    {
    "eventType": "{{eventType}}",
    "eventTimestamp": "{{now}}",
    "page": {
        "id": "{{page.id}}",
        "title": "{{page.title}}",
        "type": "{{page.type}}",
        "status": "{{page.status}}",
        "version": {
        "number": "{{page.version.number}}",
        "when": "{{page.version.when}}"
        },
        "links": {
        "webui": "{{page._links.base}}{{page._links.webui}}",
        "api": "{{page._links.base}}/wiki/rest/api/content/{{page.id}}"
        }
    },
    "space": {
        "id": "{{space.id}}",
        "key": "{{space.key}}",
        "name": "{{space.name}}"
    },
    "author": {
        "accountId": "{{page.version.by.accountId}}",
        "displayName": "{{page.version.by.displayName}}"
    },
    "history": {
        "createdDate": "{{page.history.createdDate}}",
        "createdBy": "{{page.history.createdBy.displayName}}"
    },
    "content": {
        "bodyStorage": "{{page.body.storage.value}}"
    }
    }
    
    Payload for Page_Deleted
    {
    "eventType": "{{eventType}}",
    "timestamp": "{{now}}",
    "page": {
        "id": "{{page.id}}",
        "title": "{{page.title}}",
        "type": "{{page.type}}",
        "status": "{{page.status}}",
        "version": "{{page.version.number}}",
        "url": "{{page._links.base}}{{page._links.webui}}"
    },
    "space": {
        "key": "{{space.key}}",
        "name": "{{space.name}}",
        "id": "{{space.id}}"
    },
    "content": {
        "body": "{{page.body.storage.value}}"
    },
    "author": {
        "accountId": "{{page.version.by.accountId}}",
        "displayName": "{{page.version.by.displayName}}"
    }
    }
    
  7. Add any additional conditions or branches as needed.
  8. Click Turn on to activate the rule.
  • This rule sends outbound events from Confluence to Search AI each time the trigger condition is met. Site Admin access is required when creating a global rule that applies across all spaces.
  • Real-Time sync updates document entities only. Associated users and permissions within those entities must be synchronized through regular incremental or manual sync.

Multiple Authentication Profiles

A single Confluence Cloud connector supports multiple authentication profiles.
  • Each profile authenticates independently using its own OAuth 2.0 credentials.
  • Content accessible by multiple profiles is deduplicated automatically.
  • Deleting a profile removes only content exclusive to that profile.
  • Repeat the steps to create a new profile if needed.
Creating multiple authentication profiles is optional.

Content Ingestion and Filters

  1. Go to the Content Scope tab and select the content to ingest. You can sync all content from the Confluence Cloud account or select specific content. Content Ingestion
  2. To selectively ingest content, select Filtered content and click Configure. Define rules using a parameter, operator, and value. Define separate filters for each of the accounts configured via different profiles. Content Filters Supported filter parameters:
    ParameterDescription
    AncestorDirect child pages and descendants of given content IDs
    ContentSpecific content by content ID
    CreatedContent by creation date (yyyy/mm/dd hh:mm, yyyy-mm-dd hh:mm, yyyy/mm/dd, yyyy-MM-dd)
    CreatorContent created by specified user account IDs
    LabelContent filtered by label
    ParentContent under a given parent
    IDContent by content ID
    SpaceContent in a specific space
    TitleContent by page title
    UserContent by user ID
  3. You can also add custom CQL fields. Refer to the complete list of supported CQL fields.
  4. The Operator field accepts values such as equals, not equal, and contains, depending on the selected parameter.
Example: Ingest all pages and sub-pages under a given ancestor: Example Example: Ingest only pages created or modified after January 1, 2026: Example
  • Use the OR operator to combine multiple rules for different content types.
  • Use the AND operator within a rule to apply multiple conditions. For example, to ingest content created after January 10, 2026 with “SearchAI” in the title:
Example

Content Sync Schedule

Manual sync - Click Sync on the Configuration tab to immediately ingest all updates from Confluence Cloud. Manual Sync Scheduled sync - Enable Schedule Sync and set the date, time, and frequency to keep content automatically up to date. Scheduled Sync

Incremental Sync

After the first full sync, subsequent syncs automatically fetch only content that has been created or modified since the last successful sync. This makes syncing significantly faster for large Confluence instances. Each authentication profile maintains its own independent sync cursor. A full sync is automatically triggered when:
  • It’s the first sync for a connector or profile
  • A full sync is explicitly requested
  • The connector’s ingestion script has been updated
  • RACL configuration has been modified

Real-Time Sync

  1. The Confluence Cloud connector supports real‑time content updates via webhooks.
  2. When real time sync is enabled, content changes in Confluence Cloud are reflected in search results in near real‑time (typically within seconds), without any manual or automatic sync.
  3. Webhook events are profile‑aware - events are automatically routed to the correct profile based on the Confluence Cloud site.

Access Control

Search AI supports access control for content ingested via the Confluence Cloud Connector. Go to the Permissions and Security tab and select the access mode:
  • Permission Aware - Honors user permissions from Confluence Cloud. Users can only view search results for content they can access in Confluence.
  • Public Access - Overrides Confluence permissions. All users can access all ingested content regardless of their Confluence permissions.

Prerequisites

Access control relies on user email addresses as unique identifiers. The account used to configure the connector must be able to view user email addresses. Use an admin account or ensure users have enabled the required settings in their Confluence profiles. Prerequisite

Permission Sets in Confluence Cloud

Space Permissions - Each space has an independent set of permissions managed by space administrators. Search AI requires at minimum view permission to allow a user to access the content. Space Permissions Page Restrictions - Pages inherit space permissions but can define their own restrictions. If a page is set to “Only specific people can view & edit,” space permissions aren’t applied. Page Restrictions

How Permissions Are Handled in Search AI

Search AI uses the sys_racl field to control who can access ingested content. The value stored in sys_racl depends on whether the document is public or private:
  • Public documents - The organization’s domain name is included in the sys_racl field. This ensures that only internal employees belonging to that domain can access the content, rather than allowing unrestricted public access.
  • Private documents - The space name is included in the sys_racl field. Access is scoped to users who have permissions within that specific Confluence space.
  • Individual access - Users added directly to a space or page are listed in the sys_racl field of the indexed content by their email address. These users can directly access the content based on their permissions.
  • Group access - When access is granted to user groups, Search AI creates a corresponding permission entity for the group. The sys_racl field stores the permission entity IDs. Add users to the permission entity using the Permission Entity APIs to grant access.
  • User Onboarding - When onboarding users, all users must be registered with their associated domain name in Search AI. This ensures that domain-based access control for public documents functions correctly and that the right users are granted access to content scoped to their organization’s domain. Use the Permission Entity APIs to associate users with their domain and the appropriate permission entities for group-based access.

Limitation

Anonymous access isn’t supported. If a page allows anonymous access in Confluence Cloud, Search AI doesn’t permit viewing that content.