What It Can Do
| Category | Capability |
|---|---|
| Pages | Create, read, update, delete, copy, and move pages. View and restore page version history, and navigate page hierarchies by ancestors, descendants, and children. |
| Spaces | Create, read, update, and delete spaces, and list all pages in a space. |
| Content | Search content using CQL (Confluence Query Language), and convert content between body formats asynchronously. |
| Comments | Read and write footer comments, and read inline comments. |
| Attachments | Upload, download, update, and delete attachments. |
| Labels | Read, add, and remove labels on a page. |
| Templates | List page templates and create a page from one. |
| Tasks | Search inline tasks and update their status. |
| Content Properties | Read, create, update, and delete custom content properties. |
| Restrictions | Read and manage page access restrictions, and check content permissions. |
| Users and Groups | Search users, look up a user or the current authenticated user, and read group membership. |
Connecting
Register an OAuth app
Go to the Atlassian Developer Console and select Create → OAuth 2.0 integration. Give the app a name, for example “Airia Confluence,” and save.
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:
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.
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: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
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_listpages | List pages in Confluence. | read:page:confluence |
confluence_cloud_rest_api_createpage | Create a new Confluence page. | write:page:confluence |
confluence_cloud_rest_api_getpage | Get a specific page by ID. | read:page:confluence |
confluence_cloud_rest_api_updatepage | Update an existing page. | write:page:confluence |
confluence_cloud_rest_api_deletepage | Delete a page. | delete:page:confluence |
confluence_cloud_rest_api_searchcontent | Search Confluence content using CQL. | search:confluence (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getpageversions | Get page version history. | read:page:confluence |
confluence_cloud_rest_api_getpageversion | Get a specific version of a page. | read:page:confluence |
confluence_cloud_rest_api_restorepageversion | Restore a previous version of a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular) |
confluence_cloud_rest_api_getchildpages | Get child pages. | read:page:confluence |
confluence_cloud_rest_api_getpageancestors | Get page ancestors (parent hierarchy). | read:content.metadata:confluence |
confluence_cloud_rest_api_getpagedescendants | Get all descendant pages (recursive children). | read:hierarchical-content:confluence |
confluence_cloud_rest_api_movepage | Move a page to a new location. | write:confluence-content (Classic) or write:page:confluence (Granular) |
confluence_cloud_rest_api_copypage | Copy a page. | write:confluence-content (Classic) or read:content-details:confluence and write:page:confluence (Granular) |
confluence_cloud_rest_api_copypagehierarchy | Copy a page and all its children. | write:confluence-content (Classic) or read:content.metadata:confluence and write:page:confluence (Granular) |
Content Body
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_startasyncconversion | Start async content format conversion. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
confluence_cloud_rest_api_getasyncconversionresult | Get async conversion result. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
confluence_cloud_rest_api_getmacrobody | Get macro body content by ID. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
Spaces
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getspaces | List all Confluence spaces. | read:space:confluence |
confluence_cloud_rest_api_createspace | Create a new space. | write:space:confluence |
confluence_cloud_rest_api_getspace | Get a specific space. | read:space:confluence |
confluence_cloud_rest_api_updatespace | Update 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_deletespace | Delete a space. | write:confluence-space (Classic) or read:content.metadata:confluence and delete:space:confluence (Granular) |
confluence_cloud_rest_api_getspacepages | Get all pages in a space. | read:page:confluence |
Comments
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getpagecomments | Get page comments (footer comments). | read:comment:confluence |
confluence_cloud_rest_api_addpagecomment | Add a comment to a page. | write:comment:confluence |
confluence_cloud_rest_api_getcomment | Get a specific comment. | read:comment:confluence |
confluence_cloud_rest_api_updatecomment | Update a comment. | write:comment:confluence |
confluence_cloud_rest_api_deletecomment | Delete a comment. | delete:comment:confluence |
confluence_cloud_rest_api_getinlinecomments | Get inline comments on a page. | read:comment:confluence |
Attachments
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getattachments | Get attachments on a page. | read:attachment:confluence |
confluence_cloud_rest_api_uploadattachment | Upload an attachment to a page. | write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular) |
confluence_cloud_rest_api_downloadattachment | Download an attachment. | readonly:content.attachment:confluence (Classic) or read:attachment:confluence (Granular) |
confluence_cloud_rest_api_updateattachment | Update/replace an attachment file. | write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular) |
confluence_cloud_rest_api_deleteattachment | Delete an attachment. | delete:attachment:confluence |
Labels
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getlabels | Get labels on a page. | read:page:confluence |
confluence_cloud_rest_api_addlabel | Add a label to a page. | write:confluence-content (Classic) or read:label:confluence and write:label:confluence (Granular) |
confluence_cloud_rest_api_removelabel | Remove a label from a page. | write:confluence-content (Classic) or write:label:confluence (Granular) |
Templates
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_gettemplates | Get available page templates. | read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular) |
confluence_cloud_rest_api_gettemplate | Get a specific template. | read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular) |
confluence_cloud_rest_api_createpagefromtemplate | Create a page from a template. | write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular) |
Tasks
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_searchtasks | Search for inline tasks. | read:task:confluence |
confluence_cloud_rest_api_gettask | Get a specific task. | read:task:confluence |
confluence_cloud_rest_api_updatetaskstatus | Update task status. | write:task:confluence |
Content Properties
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getcontentproperties | Get content properties (custom metadata). | read:page:confluence |
confluence_cloud_rest_api_createcontentproperty | Create a content property. | read:page:confluence and write:page:confluence |
confluence_cloud_rest_api_getcontentproperty | Get a specific content property. | read:page:confluence |
confluence_cloud_rest_api_updatecontentproperty | Update a content property. | read:page:confluence and write:page:confluence |
confluence_cloud_rest_api_deletecontentproperty | Delete a content property. | read:page:confluence and write:page:confluence |
Restrictions
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getrestrictions | Get page restrictions. | read:confluence-content.all (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_addrestriction | Add a restriction to a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular) |
confluence_cloud_rest_api_removerestriction | Remove all restrictions from a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular) |
confluence_cloud_rest_api_checkcontentpermission | Check if a user has permission. | read:confluence-content.permission (Classic) or read:content.permission:confluence (Granular) |
Users
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_searchusers | Search for Confluence users. | read:content-details:confluence |
confluence_cloud_rest_api_getuser | Get user by account ID. | read:confluence-user (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getcurrentuser | Get current authenticated user. | read:confluence-user (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getusergroups | Get groups a user belongs to. | read:confluence-user (Classic) or read:user:confluence and read:group:confluence (Granular) |
confluence_cloud_rest_api_getgroupmembers | Get 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 scopesTogether, 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
Sign-in fails or a consent screen shows an error
Sign-in fails or a consent screen shows an error
Double check the callback URL on your OAuth app is exactly
https://auth.airia.ai/OAuth/callback, and that your Cloud ID is correct. A wrong Cloud ID connects successfully but every tool call fails, since Airia is pointed at a site that doesn’t match the app’s authorization.A specific tool fails even though the connection works
A specific tool fails even though the connection works
Check the Tools and Required Scopes table above for the exact scope that tool needs, add it to your app registration, and reconnect.
The connection stops working after about an hour
The connection stops working after about an hour
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 REST API v2
- Confluence Cloud scopes for OAuth 2.0
- Atlassian Developer Console
- OAuth 2.0 for Atlassian apps
Confluence Cloud (API Token)
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.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.
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: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.