> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.getunleash.io/api/search-change-requests/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getunleash.io/_mcp/server. # Search change requests GET https://app.unleash-instance.example.com/api/admin/search/change-requests **Enterprise feature** Search and filter change requests by creator and approver. Reference: https://docs.getunleash.io/api/search-change-requests ## Authentication - `Authorization` header (required) — API key needed to access this API - `Authorization` header (bearer token, required) — API key needed to access this API, in Bearer token format ## Request ### Query parameters - `createdBy` (string, optional) — Filter by change request creator user ID - `requestedApproverId` (string, optional) — Filter by requested approver user ID - `state` (enum, optional) — Filter by open / closed change requests. Change requests that are in 'draft', 'in review', 'approved', or 'scheduled' states are considered open. Change requests that are in 'cancelled', 'applied', or 'rejected' states are considered closed. - Allowed values: `IS:open`, `IS:closed` - `offset` (integer, optional, default: 0) — The number of change requests to skip when returning a page. By default it is set to 0. - `limit` (integer, optional, default: 50) — The number of change requests to return in a page. By default it is set to 50. The maximum is 1000. ## Response ### 200 changeRequestSearchResponseSchema - `changeRequests` (list of changeRequestSearchItemSchema, required) — List of change requests matching the search criteria. - `total` (double, required) — Total number of change requests matching the search criteria. ## Errors ### 401 Unauthorized Error Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`. - `id` (string, optional) — The ID of the error instance - `name` (string, optional) — The name of the error kind - `message` (string, optional) — A description of what went wrong. ### 403 Forbidden Error The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation - `id` (string, optional) — The ID of the error instance - `name` (string, optional) — The name of the error kind - `message` (string, optional) — A description of what went wrong. ### 404 Not Found Error The requested resource was not found. - `id` (string, optional) — The ID of the error instance - `name` (string, optional) — The name of the error kind - `message` (string, optional) — A description of what went wrong. ## Types ### changeRequestSearchItemSchema A single change request item in search results. ### ChangeRequestSearchItemSchema0 - `id` (double, required) — Unique identifier for the change request. - `environment` (string, required) — Environment where the change request applies. - `project` (string, required) — Project ID where the change request belongs. - `createdBy` (ChangeRequestSearchItemSchemaOneOf0CreatedBy, required) — User who created the change request. - `createdAt` (string, required) — Date and time when the change request was created. - `features` (list of string, required) — List of feature names affected by this change request. - `segments` (list of string, required) — List of segment names affected by this change request. - `state` (enum, required) — The current state of the change request. - Allowed values: `Draft`, `Approved`, `In review`, `Applied`, `Rejected`, `Cancelled` - `title` (string, optional) — Title of the change request. Only present if a custom title is set for this change request. ### ChangeRequestSearchItemSchema1 - `id` (double, required) — Unique identifier for the change request. - `environment` (string, required) — Environment where the change request applies. - `project` (string, required) — Project ID where the change request belongs. - `createdBy` (ChangeRequestSearchItemSchemaOneOf1CreatedBy, required) — User who created the change request. - `createdAt` (string, required) — Date and time when the change request was created. - `features` (list of string, required) — List of feature names affected by this change request. - `segments` (list of string, required) — List of segment names affected by this change request. - `state` (enum, required) — The current state of the change request. - Allowed values: `Scheduled` - `schedule` (changeRequestScheduleSchema, required) — A schedule for a change request's application. The schedule can either be pending, failed, or suspended. The schedule will always contain the state of the schedule and the last scheduled time, but other data varies between the different states. - `title` (string, optional) — Title of the change request. Only present if a custom title is set for this change request. ### ChangeRequestSearchItemSchemaOneOf0CreatedBy User who created the change request. - `id` (double, required) — Unique identifier of the user. - `username` (string, optional) — Username of the user. - `imageUrl` (string, optional) — Avatar image URL for the user. ### ChangeRequestSearchItemSchemaOneOf1CreatedBy User who created the change request. - `id` (double, required) — Unique identifier of the user. - `username` (string, optional) — Username of the user. - `imageUrl` (string, optional) — Avatar image URL for the user. ### changeRequestScheduleSchema A schedule for a change request's application. The schedule can either be pending, failed, or suspended. The schedule will always contain the state of the schedule and the last scheduled time, but other data varies between the different states. ### ChangeRequestScheduleSchema0 A pending schedule for a change request. - `scheduledAt` (string, required) — When this change request will be applied. - `status` (enum, required) — The status of the schedule. - Allowed values: `pending` ### ChangeRequestScheduleSchema1 A failed schedule for a change request. - `scheduledAt` (string, required) — When Unleash last attempted to apply this change request. - `status` (enum, required) — The status of the schedule. - Allowed values: `failed` - `reason` (string, required) — The reason the scheduled failed to apply. - `failureReason` (string, optional, nullable, deprecated) — The reason the scheduled failed to apply. Deprecated in favor of the `reason` property. ### ChangeRequestScheduleSchema2 A suspended schedule for a change request. - `scheduledAt` (string, required) — When Unleash would have attempted to apply this change request if the schedule was not suspended. - `status` (enum, required) — The status of the schedule. - Allowed values: `suspended` - `reason` (string, required) — Why the schedule was suspended. ## Examples **Response** ```json { "changeRequests": [ { "createdAt": "2025-04-30T13:04:48.482Z", "createdBy": { "id": 42, "imageUrl": "https://gravatar.com/avatar/8f5a1ce5f210eb56f8d9a2ba1a5940c224c916d5e91159d4036fb46cc6d059dd?s=42&d=retro&r=g", "username": "Tymek Czech" }, "environment": "production", "features": [ "feature-a", "feature-b" ], "id": 1368, "project": "dx", "segments": [ "segment-a", "segment-b" ], "state": "Applied", "title": "Increase rollout to 65%" } ], "total": 42 } ``` **SDK Code** ```python import requests url = "https://app.unleash-instance.example.com/api/admin/search/change-requests" headers = {"Authorization": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.unleash-instance.example.com/api/admin/search/change-requests'; const options = {method: 'GET', headers: {Authorization: ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://app.unleash-instance.example.com/api/admin/search/change-requests" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.unleash-instance.example.com/api/admin/search/change-requests") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = '' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://app.unleash-instance.example.com/api/admin/search/change-requests") .header("Authorization", "") .asString(); ``` ```php request('GET', 'https://app.unleash-instance.example.com/api/admin/search/change-requests', [ 'headers' => [ 'Authorization' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.unleash-instance.example.com/api/admin/search/change-requests"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", ""); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://app.unleash-instance.example.com/api/admin/search/change-requests")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```