Skip to main content
Confluence Cloud (OAuth) connects your organization’s pages, spaces, comments, and attachments to Airia agents, backed directly by Atlassian’s own REST API. Each person connects with their own Atlassian account, and access follows Confluence’s own permissions on top of whatever scopes the connection is granted.

What It Can Do

CategoryCapability
PagesCreate, read, update, delete, copy, and move pages. View and restore page version history, and navigate page hierarchies by ancestors, descendants, and children.
SpacesCreate, read, update, and delete spaces, and list all pages in a space.
ContentSearch content using CQL (Confluence Query Language), and convert content between body formats asynchronously.
CommentsRead and write footer comments, and read inline comments.
AttachmentsUpload, download, update, and delete attachments.
LabelsRead, add, and remove labels on a page.
TemplatesList page templates and create a page from one.
TasksSearch inline tasks and update their status.
Content PropertiesRead, create, update, and delete custom content properties.
RestrictionsRead and manage page access restrictions, and check content permissions.
Users and GroupsSearch users, look up a user or the current authenticated user, and read group membership.
See Tools and Required Scopes below for the full list of tools behind these capabilities.

Connecting

1

Register an OAuth app

Go to the Atlassian Developer Console and select CreateOAuth 2.0 integration. Give the app a name, for example “Airia Confluence,” and save.
2

Add the callback URL

Select Authorization in the left sidebar, then click Add next to OAuth 2.0 (3LO). Add the following callback URL and save:
https://auth.airia.ai/OAuth/callback
3

Add API permissions

Select Permissions in the left sidebar, click Add next to the Confluence API, and enable every scope listed under Tools and Required Scopes below. The Granting All Scopes section has both scope lists ready to paste in.
4

Copy your credentials

Select Settings and copy the Client ID and Secret.
5

Find your Cloud ID

Your Cloud ID is a UUID Airia uses to reach your specific Confluence site. Visit the following URL, replacing {your-site} with your Atlassian domain, and copy the cloudId value from the response:
https://{your-site}.atlassian.net/_edge/tenant_info
6

Add it to Airia

Add Confluence Cloud (OAuth) as a server on a Gateway or Deployment, then enter your Client ID, Client Secret, and Cloud ID.
The OAuth Scopes field in Airia is optional. Leave it blank to request the standard scopes above, or fill it in to request a different set. If you customize it, make sure to include offline_access so your connection can refresh automatically.

Tools and Required Scopes

Every tool below needs a specific Confluence scope before it will work. Tool names are what an agent actually calls, the same names you’d see in an agent’s tool call log.
Atlassian scopes come in two flavors. Classic scopes are broad and recommended, granting one alone is enough for every tool that lists one. Granular scopes are narrower and only needed if you’re building an OAuth app without classic scopes, in which case a tool needs every listed granular scope granted together. Most of Confluence’s newer page, space, comment, and attachment-reading tools run on Confluence’s v2 API, which has no classic scope equivalent at all, so those always need their granular scope regardless of which approach you use.

Pages

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_listpagesList pages in Confluence.read:page:confluence
confluence_cloud_rest_api_createpageCreate a new Confluence page.write:page:confluence
confluence_cloud_rest_api_getpageGet a specific page by ID.read:page:confluence
confluence_cloud_rest_api_updatepageUpdate an existing page.write:page:confluence
confluence_cloud_rest_api_deletepageDelete a page.delete:page:confluence
confluence_cloud_rest_api_searchcontentSearch Confluence content using CQL.search:confluence (Classic) or read:content-details:confluence (Granular)
confluence_cloud_rest_api_getpageversionsGet page version history.read:page:confluence
confluence_cloud_rest_api_getpageversionGet a specific version of a page.read:page:confluence
confluence_cloud_rest_api_restorepageversionRestore a previous version of a page.write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular)
confluence_cloud_rest_api_getchildpagesGet child pages.read:page:confluence
confluence_cloud_rest_api_getpageancestorsGet page ancestors (parent hierarchy).read:content.metadata:confluence
confluence_cloud_rest_api_getpagedescendantsGet all descendant pages (recursive children).read:hierarchical-content:confluence
confluence_cloud_rest_api_movepageMove a page to a new location.write:confluence-content (Classic) or write:page:confluence (Granular)
confluence_cloud_rest_api_copypageCopy a page.write:confluence-content (Classic) or read:content-details:confluence and write:page:confluence (Granular)
confluence_cloud_rest_api_copypagehierarchyCopy a page and all its children.write:confluence-content (Classic) or read:content.metadata:confluence and write:page:confluence (Granular)

Content Body

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_startasyncconversionStart async content format conversion.read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular)
confluence_cloud_rest_api_getasyncconversionresultGet async conversion result.read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular)
confluence_cloud_rest_api_getmacrobodyGet macro body content by ID.read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular)

Spaces

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getspacesList all Confluence spaces.read:space:confluence
confluence_cloud_rest_api_createspaceCreate a new space.write:space:confluence
confluence_cloud_rest_api_getspaceGet a specific space.read:space:confluence
confluence_cloud_rest_api_updatespaceUpdate a space.write:confluence-space (Classic) or read:space-details:confluence and write:space:confluence and write:space.permission:confluence (Granular)
confluence_cloud_rest_api_deletespaceDelete a space.write:confluence-space (Classic) or read:content.metadata:confluence and delete:space:confluence (Granular)
confluence_cloud_rest_api_getspacepagesGet all pages in a space.read:page:confluence

Comments

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getpagecommentsGet page comments (footer comments).read:comment:confluence
confluence_cloud_rest_api_addpagecommentAdd a comment to a page.write:comment:confluence
confluence_cloud_rest_api_getcommentGet a specific comment.read:comment:confluence
confluence_cloud_rest_api_updatecommentUpdate a comment.write:comment:confluence
confluence_cloud_rest_api_deletecommentDelete a comment.delete:comment:confluence
confluence_cloud_rest_api_getinlinecommentsGet inline comments on a page.read:comment:confluence

Attachments

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getattachmentsGet attachments on a page.read:attachment:confluence
confluence_cloud_rest_api_uploadattachmentUpload an attachment to a page.write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular)
confluence_cloud_rest_api_downloadattachmentDownload an attachment.readonly:content.attachment:confluence (Classic) or read:attachment:confluence (Granular)
confluence_cloud_rest_api_updateattachmentUpdate/replace an attachment file.write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular)
confluence_cloud_rest_api_deleteattachmentDelete an attachment.delete:attachment:confluence

Labels

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getlabelsGet labels on a page.read:page:confluence
confluence_cloud_rest_api_addlabelAdd a label to a page.write:confluence-content (Classic) or read:label:confluence and write:label:confluence (Granular)
confluence_cloud_rest_api_removelabelRemove a label from a page.write:confluence-content (Classic) or write:label:confluence (Granular)

Templates

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_gettemplatesGet available page templates.read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular)
confluence_cloud_rest_api_gettemplateGet a specific template.read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular)
confluence_cloud_rest_api_createpagefromtemplateCreate a page from a template.write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular)

Tasks

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_searchtasksSearch for inline tasks.read:task:confluence
confluence_cloud_rest_api_gettaskGet a specific task.read:task:confluence
confluence_cloud_rest_api_updatetaskstatusUpdate task status.write:task:confluence

Content Properties

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getcontentpropertiesGet content properties (custom metadata).read:page:confluence
confluence_cloud_rest_api_createcontentpropertyCreate a content property.read:page:confluence and write:page:confluence
confluence_cloud_rest_api_getcontentpropertyGet a specific content property.read:page:confluence
confluence_cloud_rest_api_updatecontentpropertyUpdate a content property.read:page:confluence and write:page:confluence
confluence_cloud_rest_api_deletecontentpropertyDelete a content property.read:page:confluence and write:page:confluence

Restrictions

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_getrestrictionsGet page restrictions.read:confluence-content.all (Classic) or read:content-details:confluence (Granular)
confluence_cloud_rest_api_addrestrictionAdd a restriction to a page.write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular)
confluence_cloud_rest_api_removerestrictionRemove all restrictions from a page.write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular)
confluence_cloud_rest_api_checkcontentpermissionCheck if a user has permission.read:confluence-content.permission (Classic) or read:content.permission:confluence (Granular)

Users

ToolWhat it doesScope(s) required
confluence_cloud_rest_api_searchusersSearch for Confluence users.read:content-details:confluence
confluence_cloud_rest_api_getuserGet user by account ID.read:confluence-user (Classic) or read:content-details:confluence (Granular)
confluence_cloud_rest_api_getcurrentuserGet current authenticated user.read:confluence-user (Classic) or read:content-details:confluence (Granular)
confluence_cloud_rest_api_getusergroupsGet groups a user belongs to.read:confluence-user (Classic) or read:user:confluence and read:group:confluence (Granular)
confluence_cloud_rest_api_getgroupmembersGet members of a group.read:confluence-groups (Classic) or read:group:confluence and read:user:confluence (Granular)

Granting All Scopes

If you’d rather not cross-reference the table above tool by tool, enable every scope below in the Atlassian console and every tool becomes available at once. Classic scopes
read:confluence-content.all write:confluence-content read:confluence-content.summary read:confluence-space.summary write:confluence-space read:confluence-props write:confluence-props write:confluence-file readonly:content.attachment:confluence read:confluence-user read:confluence-groups search:confluence read:confluence-content.permission
Granular scopes
read:page:confluence write:page:confluence delete:page:confluence read:comment:confluence write:comment:confluence delete:comment:confluence read:attachment:confluence write:attachment:confluence delete:attachment:confluence read:space:confluence read:content-details:confluence read:content.metadata:confluence read:space-details:confluence read:hierarchical-content:confluence read:template:confluence read:group:confluence read:task:confluence write:task:confluence write:label:confluence write:content.restriction:confluence
Together, these two lists cover every tool in the reference above. The Classic list covers every tool that lists a Classic option, and the Granular list adds the scopes Confluence’s newer v2 API tools need, since most of them, mainly page, space, comment, and attachment-reading tools, have no Classic equivalent at all.

Troubleshooting

Check the Tools and Required Scopes table above for the exact scope that tool needs, add it to your app registration, and reconnect.
This happens when offline_access wasn’t included in the granted scopes, so Airia has no way to refresh the session. If you customized the OAuth Scopes field in Airia, add offline_access back in and reconnect.

Learn More

Confluence Cloud (API Token)

Airia also offers Confluence Cloud (API Token), a separate, Restricted server that most organizations will never see or need. It’s not enabled by default. If you want to use it, talk to your Airia contact about adding it to your tenant, after which a Platform Admin, Admin, or Security Admin can turn it on from Server Management using Add Restricted Server.
It exposes the exact same tools as Confluence Cloud (OAuth) above, just with a different way of authenticating: every request runs as whichever Atlassian account owns the token, so there’s no OAuth app, no Cloud ID, and no scopes to grant. The token has full access to whatever that account can already do in Confluence.
1

Create an API token

Go to your Atlassian API token settings and create a new token. Copy it, along with the email address of the Atlassian account it belongs to.
2

Base64 encode your credential

Combine your email and token as {your email}:{your API token}, then Base64 encode the whole string. On macOS or Linux, you can run:
echo -n "you@example.com:your-api-token" | base64
3

Add it to Airia

Add Confluence Cloud (API Token) as a server on a Gateway or Deployment, then enter the encoded string as the credential, along with your Atlassian domain, the part before .atlassian.net in your site’s URL.
The credential Airia needs is the Base64 encoding of email:apitoken, not the API token by itself. This method authenticates every request with a single token rather than individual user sign-in, so it’s best suited to simpler or single-account setups.