curl --request POST \
--url https://context7.com/api/v2/add/confluence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cloudId": "a]1b2c3d4-5e6f-7g8h-9i0j",
"siteUrl": "https://your-site.atlassian.net",
"spaceKey": "DOCS",
"spaceName": "Documentation",
"title": "My Docs",
"description": "Internal documentation"
}
'import requests
url = "https://context7.com/api/v2/add/confluence"
payload = {
"cloudId": "a]1b2c3d4-5e6f-7g8h-9i0j",
"siteUrl": "https://your-site.atlassian.net",
"spaceKey": "DOCS",
"spaceName": "Documentation",
"title": "My Docs",
"description": "Internal documentation"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cloudId: 'a]1b2c3d4-5e6f-7g8h-9i0j',
siteUrl: 'https://your-site.atlassian.net',
spaceKey: 'DOCS',
spaceName: 'Documentation',
title: 'My Docs',
description: 'Internal documentation'
})
};
fetch('https://context7.com/api/v2/add/confluence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://context7.com/api/v2/add/confluence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cloudId' => 'a]1b2c3d4-5e6f-7g8h-9i0j',
'siteUrl' => 'https://your-site.atlassian.net',
'spaceKey' => 'DOCS',
'spaceName' => 'Documentation',
'title' => 'My Docs',
'description' => 'Internal documentation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://context7.com/api/v2/add/confluence"
payload := strings.NewReader("{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://context7.com/api/v2/add/confluence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://context7.com/api/v2/add/confluence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}"
response = http.request(request)
puts response.read_body{
"libraryName": "/owner/repo",
"message": "Repository submitted successfully"
}Add a Confluence space
Submit a Confluence space for documentation processing. Requires a connected Confluence account and a team project. You can optionally specify specific page IDs to index only a subset of the space.
curl --request POST \
--url https://context7.com/api/v2/add/confluence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cloudId": "a]1b2c3d4-5e6f-7g8h-9i0j",
"siteUrl": "https://your-site.atlassian.net",
"spaceKey": "DOCS",
"spaceName": "Documentation",
"title": "My Docs",
"description": "Internal documentation"
}
'import requests
url = "https://context7.com/api/v2/add/confluence"
payload = {
"cloudId": "a]1b2c3d4-5e6f-7g8h-9i0j",
"siteUrl": "https://your-site.atlassian.net",
"spaceKey": "DOCS",
"spaceName": "Documentation",
"title": "My Docs",
"description": "Internal documentation"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cloudId: 'a]1b2c3d4-5e6f-7g8h-9i0j',
siteUrl: 'https://your-site.atlassian.net',
spaceKey: 'DOCS',
spaceName: 'Documentation',
title: 'My Docs',
description: 'Internal documentation'
})
};
fetch('https://context7.com/api/v2/add/confluence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://context7.com/api/v2/add/confluence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cloudId' => 'a]1b2c3d4-5e6f-7g8h-9i0j',
'siteUrl' => 'https://your-site.atlassian.net',
'spaceKey' => 'DOCS',
'spaceName' => 'Documentation',
'title' => 'My Docs',
'description' => 'Internal documentation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://context7.com/api/v2/add/confluence"
payload := strings.NewReader("{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://context7.com/api/v2/add/confluence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://context7.com/api/v2/add/confluence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cloudId\": \"a]1b2c3d4-5e6f-7g8h-9i0j\",\n \"siteUrl\": \"https://your-site.atlassian.net\",\n \"spaceKey\": \"DOCS\",\n \"spaceName\": \"Documentation\",\n \"title\": \"My Docs\",\n \"description\": \"Internal documentation\"\n}"
response = http.request(request)
puts response.read_body{
"libraryName": "/owner/repo",
"message": "Repository submitted successfully"
}Authorizations
Get your API key at context7.com/dashboard. Treat your API key like a password and store it securely. Every key can read the management API (/v2/teamspaces/*), except personal data: member and invitation emails, library requesters, visitor questions, Docs7 reader searches, conversations, feedback and feature requests, and the GitHub account behind a build. To read those or make changes there, the key must be created with Write access ticked; other keys get 403 write_access_required.
Body
The Confluence cloud instance ID
The Confluence site URL
The Confluence space key
The Confluence space name
Title for the library
Description of the library
Optional list of specific page IDs to index. If omitted, the entire space is indexed.
Optional. Requests with an API key or token use its teamspace; a different value returns 403 teamspace_mismatch.
Response
Library submitted successfully for processing
Response after successfully submitting a library
The library identifier assigned — the URL path of the library on context7.com. /owner/repo for GitHub repositories, or /<source>/<id> for other sources (e.g., /vercel/next.js, /websites/uploadcare_com). See Library ID format.
Human-readable success message
Only for websites: the version the URL was added as, when it is a version of an existing library. Request it as <libraryName>/<version>.
Was this page helpful?