> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getunleash.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getunleash.io/_mcp/server.

# [BETA] Get all release templates.

GET https://app.unleash-instance.example.com/api/admin/projects/{projectId}/release-templates

**Enterprise feature**

**[BETA]** This API is in beta state, which means it may change or be removed in the future.

Returns a list of release templates scoped to the project. Use `include=root` to also include global release templates.

Reference: https://docs.getunleash.io/api/release-templates/get-release-templates-for-project

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: admin-api
  version: 1.0.0
paths:
  /api/admin/projects/{projectId}/release-templates:
    get:
      operationId: getReleaseTemplatesForProject
      summary: '[BETA] Get all release templates.'
      description: >-
        **Enterprise feature**


        **[BETA]** This API is in beta state, which means it may change or be
        removed in the future.


        Returns a list of release templates scoped to the project. Use
        `include=root` to also include global release templates.
      tags:
        - releaseTemplates
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: >-
            Whether the response should include global release templates in
            addition to the release templates scoped to the project. Use
            `include=root` to include global release templates in the response.
            Without it, only release templates scoped to the project are
            returned.
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: API key needed to access this API
          required: true
          schema:
            type: string
      responses:
        '200':
          description: '#/components/schemas/releasePlanTemplatesSchema'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/releasePlanTemplatesSchema'
        '401':
          description: >-
            Authorization information is missing or invalid. Provide a valid API
            token as the `authorization` header, e.g.
            `authorization:*.*.my-admin-token`.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/GetReleaseTemplatesForProjectRequestUnauthorizedError
servers:
  - url: https://app.unleash-instance.example.com
    description: Your Unleash instance (replace with your actual URL)
components:
  schemas:
    ReleasePlanTemplateSchemaDiscriminator:
      type: string
      enum:
        - template
      description: A field to distinguish between release plans and release templates.
      title: ReleasePlanTemplateSchemaDiscriminator
    ReleasePlanMilestoneSchemaTransitionCondition:
      type: object
      properties:
        intervalMinutes:
          type: integer
          description: The interval in minutes before transitioning
      required:
        - intervalMinutes
      description: The condition configuration for the transition
      title: ReleasePlanMilestoneSchemaTransitionCondition
    parametersSchema:
      type: object
      additionalProperties:
        type: string
      description: A list of parameters for a strategy
      title: parametersSchema
    ConstraintSchemaOperator:
      type: string
      enum:
        - NOT_IN
        - IN
        - STR_ENDS_WITH
        - STR_STARTS_WITH
        - STR_CONTAINS
        - NUM_EQ
        - NUM_GT
        - NUM_GTE
        - NUM_LT
        - NUM_LTE
        - DATE_AFTER
        - DATE_BEFORE
        - SEMVER_EQ
        - SEMVER_GT
        - SEMVER_LT
        - SEMVER_GTE
        - SEMVER_LTE
        - REGEX
      description: >-
        The operator to use when evaluating this constraint. For more
        information about the various operators, refer to [the strategy
        constraint operator
        documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
      title: ConstraintSchemaOperator
    constraintSchema:
      type: object
      properties:
        contextName:
          type: string
          description: The name of the context field that this constraint should apply to.
        operator:
          $ref: '#/components/schemas/ConstraintSchemaOperator'
          description: >-
            The operator to use when evaluating this constraint. For more
            information about the various operators, refer to [the strategy
            constraint operator
            documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        caseInsensitive:
          type: boolean
          default: false
          description: >-
            Whether the operator should be case sensitive or not. Defaults to
            `false` (being case sensitive).
        inverted:
          type: boolean
          default: false
          description: >-
            Whether the result should be negated or not. If `true`, will turn a
            `true` result into a `false` result and vice versa.
        values:
          type: array
          items:
            type: string
          description: >-
            The context values that should be used for constraint evaluation.
            Use this property instead of `value` for properties that accept
            multiple values.
        value:
          type: string
          description: >-
            The context value that should be used for constraint evaluation. Use
            this property instead of `values` for properties that only accept
            single values.
      required:
        - contextName
        - operator
      description: >-
        A strategy constraint. For more information, refer to [the strategy
        constraint reference
        documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)
      title: constraintSchema
    CreateStrategyVariantSchemaWeightType:
      type: string
      enum:
        - variable
        - fix
      description: >-
        Set to `fix` if this variant must have exactly the weight allocated to
        it. If the type is `variable`, the weight will adjust so that the total
        weight of all variants adds up to 1000. Refer to the [variant weight
        documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
      title: CreateStrategyVariantSchemaWeightType
    CreateStrategyVariantSchemaPayloadType:
      type: string
      enum:
        - json
        - csv
        - string
        - number
      description: >-
        The type of the value. Commonly used types are string, number, json and
        csv.
      title: CreateStrategyVariantSchemaPayloadType
    CreateStrategyVariantSchemaPayload:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CreateStrategyVariantSchemaPayloadType'
          description: >-
            The type of the value. Commonly used types are string, number, json
            and csv.
        value:
          type: string
          description: The actual value of payload
      required:
        - type
        - value
      description: Extra data configured for this variant
      title: CreateStrategyVariantSchemaPayload
    createStrategyVariantSchema:
      type: object
      properties:
        name:
          type: string
          description: The variant name. Must be unique for this feature flag
        weight:
          type: integer
          description: >-
            The weight is the likelihood of any one user getting this variant.
            It is an integer between 0 and 1000. See the section on [variant
            weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight)
            for more information
        weightType:
          $ref: '#/components/schemas/CreateStrategyVariantSchemaWeightType'
          description: >-
            Set to `fix` if this variant must have exactly the weight allocated
            to it. If the type is `variable`, the weight will adjust so that the
            total weight of all variants adds up to 1000. Refer to the [variant
            weight
            documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
        stickiness:
          type: string
          description: >-
            The
            [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness)
            to use for distribution of this variant. Stickiness is how Unleash
            guarantees that the same user gets the same variant every time
        payload:
          $ref: '#/components/schemas/CreateStrategyVariantSchemaPayload'
          description: Extra data configured for this variant
      required:
        - name
        - weight
        - weightType
        - stickiness
      description: >-
        This is an experimental property. It may change or be removed as we work
        on it. Please don't depend on it yet. A strategy variant allows you to
        attach any data to strategies instead of only returning `true`/`false`.
        Strategy variants take precedence over feature variants.
      title: createStrategyVariantSchema
    releasePlanMilestoneStrategySchema:
      type: object
      properties:
        id:
          type: string
          description: The milestone strategy's ID. Milestone strategy IDs are ulids.
        milestoneId:
          type: string
          description: The ID of the milestone that this strategy belongs to.
        sortOrder:
          type: number
          format: double
          description: The order of the strategy in the list
        title:
          type:
            - string
            - 'null'
          description: A descriptive title for the strategy
        name:
          type: string
          description: The name of the strategy type
        strategyName:
          type: string
          description: The name of the strategy type
        parameters:
          $ref: '#/components/schemas/parametersSchema'
          description: An object containing the parameters for the strategy
        constraints:
          type: array
          items:
            $ref: '#/components/schemas/constraintSchema'
          description: >-
            A list of the constraints attached to the strategy. See
            https://docs.getunleash.io/concepts/activation-strategies#constraints
        variants:
          type: array
          items:
            $ref: '#/components/schemas/createStrategyVariantSchema'
          description: Strategy level variants
        segments:
          type: array
          items:
            type: number
            format: double
          description: Ids of segments to use for this strategy
        disabled:
          type:
            - boolean
            - 'null'
          description: >-
            A toggle to disable the strategy. defaults to false. Disabled
            strategies are not evaluated or returned to the SDKs
      required:
        - id
        - milestoneId
        - sortOrder
        - name
        - strategyName
      description: Schema representing the creation of a release plan milestone strategy.
      title: releasePlanMilestoneStrategySchema
    releasePlanMilestoneSchema:
      type: object
      properties:
        id:
          type: string
          description: The milestone's ID. Milestone IDs are ulids.
        name:
          type: string
          description: The name of the milestone.
        sortOrder:
          type: integer
          description: The order of the milestone in the release plan.
        releasePlanDefinitionId:
          type: string
          description: The ID of the release plan/template that this milestone belongs to.
        startedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time when the milestone was started.
        transitionCondition:
          oneOf:
            - $ref: >-
                #/components/schemas/ReleasePlanMilestoneSchemaTransitionCondition
            - type: 'null'
          description: The condition configuration for the transition
        progressionExecutedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time when the milestone progression was executed.
        pausedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time when the milestone was paused.
        strategies:
          type: array
          items:
            $ref: '#/components/schemas/releasePlanMilestoneStrategySchema'
          description: A list of strategies that are attached to this milestone.
      required:
        - id
        - name
        - sortOrder
        - releasePlanDefinitionId
      description: Schema representing the creation of a release plan milestone.
      title: releasePlanMilestoneSchema
    releasePlanTemplateSchema:
      type: object
      properties:
        id:
          type: string
          description: The release plan/template's ID. Release template IDs are ulids.
        discriminator:
          $ref: '#/components/schemas/ReleasePlanTemplateSchemaDiscriminator'
          description: A field to distinguish between release plans and release templates.
        name:
          type: string
          description: The name of the release template.
        description:
          type:
            - string
            - 'null'
          description: A description of the release template.
        project:
          type:
            - string
            - 'null'
          description: >-
            The project this release template belongs to. `null` for global
            release templates available in all projects.
        createdByUserId:
          type: number
          format: double
          description: 'Release template: The ID of the user who created this template.'
        createdAt:
          type: string
          format: date-time
          description: The date and time that the release template was created.
        milestones:
          type: array
          items:
            $ref: '#/components/schemas/releasePlanMilestoneSchema'
          description: A list of the milestones in this release template.
        archivedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time that the release template was archived.
      required:
        - id
        - discriminator
        - name
        - createdByUserId
        - createdAt
      description: Schema representing the creation of a release template.
      title: releasePlanTemplateSchema
    releasePlanTemplatesSchema:
      type: array
      items:
        $ref: '#/components/schemas/releasePlanTemplateSchema'
      description: A collection of release plan templates
      title: releasePlanTemplatesSchema
    GetReleaseTemplatesForProjectRequestUnauthorizedError:
      type: object
      properties:
        id:
          type: string
          description: The ID of the error instance
        name:
          type: string
          description: The name of the error kind
        message:
          type: string
          description: A description of what went wrong.
      title: GetReleaseTemplatesForProjectRequestUnauthorizedError
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: API key needed to access this API
    bearerToken:
      type: http
      scheme: bearer
      description: API key needed to access this API, in Bearer token format

```

## Examples



**Response**

```json
[
  {
    "id": "01JB9GGTGQYEQ9D40R17T3YVW2",
    "discriminator": "template",
    "name": "My release plan",
    "createdByUserId": 53,
    "createdAt": "2022-01-01T00:00:00Z",
    "description": "This is my release plan",
    "project": "my-project",
    "milestones": [
      {
        "id": "01JB9GGTGQYEQ9D40R17T3YVW1",
        "name": "My milestone",
        "sortOrder": 1,
        "releasePlanDefinitionId": "01JB9GGTGQYEQ9D40R17T3YVW2",
        "startedAt": "2024-01-01T00:00:00.000Z",
        "transitionCondition": {
          "intervalMinutes": 30
        },
        "progressionExecutedAt": "2024-01-01T00:00:00.000Z",
        "pausedAt": "2024-01-01T00:00:00.000Z",
        "strategies": [
          {
            "id": "01JB9GGTGQYEQ9D40R17T3YVW3",
            "milestoneId": "01JB9GGTGQYEQ9D40R17T3YVW1",
            "sortOrder": 9999,
            "name": "flexibleRollout",
            "strategyName": "flexibleRollout",
            "title": "Gradual Rollout 25-Prod",
            "parameters": {
              "groupId": "some_new",
              "rollout": "25",
              "stickiness": "sessionId"
            },
            "constraints": [
              {
                "contextName": "appName",
                "operator": "IN",
                "caseInsensitive": false,
                "inverted": false,
                "values": [
                  "1",
                  "2"
                ]
              }
            ],
            "variants": [
              {
                "name": "blue_group",
                "weight": 1,
                "weightType": "fix",
                "stickiness": "custom.context.field",
                "payload": {
                  "type": "json",
                  "value": "{\"color\": \"red\"}"
                }
              }
            ],
            "segments": [
              1,
              2
            ],
            "disabled": false
          }
        ]
      }
    ],
    "archivedAt": "2022-01-01T00:00:00Z"
  }
]
```

**SDK Code**

```python
import requests

url = "https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates"

headers = {"Authorization": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

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/projects/projectId/release-templates"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "<apiKey>")

	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/projects/projectId/release-templates")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.unleash-instance.example.com/api/admin/projects/projectId/release-templates")! 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()
```