Get merge status for a draft revision
Deprecated. Use GET /v2/features/:id/revisions/:version/merge-status instead.
Runs a dry-run merge of the draft against the current live revision and returns any conflicts. Use this before publishing to preview changes and detect conflicting edits.
curl -X GET 'https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status', 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.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"liveVersion": 123,
"draftDateUpdated": "2023-11-07T05:31:56Z",
"conflicts": [
{
"name": "<string>",
"key": "<string>",
"resolved": true,
"base": "<string>",
"live": "<string>",
"revision": "<string>"
}
],
"rebaseRequired": true,
"result": {
"defaultValue": "<string>",
"rules": [
{
"description": "<string>",
"id": "<string>",
"allEnvironments": true,
"type": "force",
"value": "<string>",
"condition": "<string>",
"environments": [
"<string>"
],
"allProjects": true,
"projects": [
"<string>"
],
"enabled": true,
"scheduleRules": [
{
"timestamp": "<string>",
"enabled": true
}
],
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"scheduleType": "none",
"sparse": true
}
],
"environmentsEnabled": {},
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"archived": true,
"metadata": {
"releaseType": "<string>",
"riskLevel": "<string>"
},
"holdout": {
"id": "<string>",
"value": "<string>"
}
}
}Authorizations
If using Bearer auth, pass the Secret Key as the token:
curl https://api.growthbook.io/api/v1/features -H "Authorization: Bearer secret_abc123DEF456"
Response
Successful response
The current live version the merge was computed against.
The draft's last-modified timestamp at merge time.
Show child attributes
Show child attributes
Whether the draft must be rebased before it can be published. This is true when the merge has conflicts, or when the organization requires rebasing and the draft or its approval is out of date. If there are no conflicts, a caller with Bypass draft approvals access can send ignoreWarnings: true to force-publish instead.
Show child attributes
Show child attributes
Was this page helpful?
curl -X GET 'https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status' \
-H 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status', 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.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"liveVersion": 123,
"draftDateUpdated": "2023-11-07T05:31:56Z",
"conflicts": [
{
"name": "<string>",
"key": "<string>",
"resolved": true,
"base": "<string>",
"live": "<string>",
"revision": "<string>"
}
],
"rebaseRequired": true,
"result": {
"defaultValue": "<string>",
"rules": [
{
"description": "<string>",
"id": "<string>",
"allEnvironments": true,
"type": "force",
"value": "<string>",
"condition": "<string>",
"environments": [
"<string>"
],
"allProjects": true,
"projects": [
"<string>"
],
"enabled": true,
"scheduleRules": [
{
"timestamp": "<string>",
"enabled": true
}
],
"savedGroups": [
{
"match": "all",
"ids": [
"<string>"
]
}
],
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"scheduleType": "none",
"sparse": true
}
],
"environmentsEnabled": {},
"prerequisites": [
{
"id": "<string>",
"condition": "<string>"
}
],
"archived": true,
"metadata": {
"releaseType": "<string>",
"riskLevel": "<string>"
},
"holdout": {
"id": "<string>",
"value": "<string>"
}
}
}
