curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/github/branches/import \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"branch_name": "feature/reporting"
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/github/branches/import"
payload = { "branch_name": "feature/reporting" }
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({branch_name: 'feature/reporting'})
};
fetch('https://app.base44.com/api/apps/{app_id}/github/branches/import', 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://app.base44.com/api/apps/{app_id}/github/branches/import",
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([
'branch_name' => 'feature/reporting'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$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://app.base44.com/api/apps/{app_id}/github/branches/import"
payload := strings.NewReader("{\n \"branch_name\": \"feature/reporting\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
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://app.base44.com/api/apps/{app_id}/github/branches/import")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"branch_name\": \"feature/reporting\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/github/branches/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch_name\": \"feature/reporting\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f7",
"branch_name": "feature/reporting",
"conversation_id": "68b1c0d4e7b91d003c45a1f8",
"base_git_commit_hash": "9f2c1ab7d4e58036bb1f4c0a7de92b41c0d5e8a3",
"last_git_commit_hash": "4c7e1f90ab3d5628e1a0f7b24c9d8e6350a1b2c4",
"created_date": "2026-08-15T09:10:00.123456Z"
}Import a GitHub branch
Creates a Base44 branch from a branch that already exists in the connected GitHub repository.
The two are one line of work. Base44 commits to the GitHub branch you name and never creates a separate branch in the repository.
Name a GitHub branch that already exists and isn’t the repository’s default branch, which the app’s main chat already uses. The name also has to be free among the app’s active and merged Base44 branches, so you can import a given GitHub branch once.
If Base44 can’t read the branch from GitHub, nothing is created and you can retry.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/github/branches/import \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"branch_name": "feature/reporting"
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/github/branches/import"
payload = { "branch_name": "feature/reporting" }
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({branch_name: 'feature/reporting'})
};
fetch('https://app.base44.com/api/apps/{app_id}/github/branches/import', 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://app.base44.com/api/apps/{app_id}/github/branches/import",
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([
'branch_name' => 'feature/reporting'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_key: <api-key>"
],
]);
$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://app.base44.com/api/apps/{app_id}/github/branches/import"
payload := strings.NewReader("{\n \"branch_name\": \"feature/reporting\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
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://app.base44.com/api/apps/{app_id}/github/branches/import")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"branch_name\": \"feature/reporting\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/github/branches/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch_name\": \"feature/reporting\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f7",
"branch_name": "feature/reporting",
"conversation_id": "68b1c0d4e7b91d003c45a1f8",
"base_git_commit_hash": "9f2c1ab7d4e58036bb1f4c0a7de92b41c0d5e8a3",
"last_git_commit_hash": "4c7e1f90ab3d5628e1a0f7b24c9d8e6350a1b2c4",
"created_date": "2026-08-15T09:10:00.123456Z"
}Authorizations
Personal API key.
Path Parameters
ID of the app to import the branch into.
Body
Request to import a branch that already exists in the connected repository.
Name of the branch to import, as it exists in the connected repository. Can't be the repository's default branch.
1 - 255"feature/reporting"
Response
The imported branch.
The Base44 branch created from an existing GitHub branch.
ID of the new Base44 branch.
"68b1c0d4e7b91d003c45a1f7"
The GitHub branch name, stored exactly as you sent it. Base44's own commits go to this same branch.
"feature/reporting"
ID of the branch's own builder conversation. The branch's chat history is separate from the app's main chat.
"68b1c0d4e7b91d003c45a1f8"
Commit where the branch forked off the repository's default branch.
"9f2c1ab7d4e58036bb1f4c0a7de92b41c0d5e8a3"
Head commit of the GitHub branch at the moment it was imported.
"4c7e1f90ab3d5628e1a0f7b24c9d8e6350a1b2c4"
When the branch was created, in YYYY-MM-DDTHH:MM:SS.ffffffZ format (UTC).
"2026-08-15T09:10:00.123456Z"
Was this page helpful?