Bulk index repositories
curl --request PUT \
--url https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"repositories": [
{
"repository_path": "<string>",
"branch_names": [
"<string>"
]
}
]
}
'import requests
url = "https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing"
payload = { "repositories": [
{
"repository_path": "<string>",
"branch_names": ["<string>"]
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({repositories: [{repository_path: '<string>', branch_names: ['<string>']}]})
};
fetch('https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing', 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://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'repositories' => [
[
'repository_path' => '<string>',
'branch_names' => [
'<string>'
]
]
]
]),
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://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing"
payload := strings.NewReader("{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"branches": [
"<string>"
],
"indexing_enabled": true,
"repository_path": "<string>",
"indexing_status": {
"indexing_enabled": true,
"latest_completed_search_index_job": {
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
},
"latest_completed_wiki_index_job": {
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
},
"latest_indexes": [
{
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
}
]
}
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Repositories (Organization)
Bulk index repositories
Idempotently enables indexing for a batch of repositories and triggers indexing jobs.
PUT
/
v3beta1
/
organizations
/
{org_id}
/
repositories
/
indexing
Bulk index repositories
curl --request PUT \
--url https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"repositories": [
{
"repository_path": "<string>",
"branch_names": [
"<string>"
]
}
]
}
'import requests
url = "https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing"
payload = { "repositories": [
{
"repository_path": "<string>",
"branch_names": ["<string>"]
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({repositories: [{repository_path: '<string>', branch_names: ['<string>']}]})
};
fetch('https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing', 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://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'repositories' => [
[
'repository_path' => '<string>',
'branch_names' => [
'<string>'
]
]
]
]),
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://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing"
payload := strings.NewReader("{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/organizations/{org_id}/repositories/indexing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"repositories\": [\n {\n \"repository_path\": \"<string>\",\n \"branch_names\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"branches": [
"<string>"
],
"indexing_enabled": true,
"repository_path": "<string>",
"indexing_status": {
"indexing_enabled": true,
"latest_completed_search_index_job": {
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
},
"latest_completed_wiki_index_job": {
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
},
"latest_indexes": [
{
"branch_name": "<string>",
"commit": "<string>",
"created_at": 123,
"job_id": "<string>"
}
]
}
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Permissions
Requires a service user with theIndexOrgRepositories permission at the organization level.
Behavior
This endpoint is idempotent — calling it multiple times with the same repositories will not create duplicate indexing jobs. It enables indexing and triggers indexing jobs for each repository in the request. You can optionally specifybranch_names for each repository to index specific branches. If omitted, the default branch is used.Authorizations
Service User credential (prefix: cog_)
Path Parameters
Organization ID (prefix: org-)
Example:
"org-abc123def456"
Body
application/json
Required array length:
1 - 100 elementsShow child attributes
Show child attributes
⌘I

