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

# Create a release

POST https://api.contentful.com/spaces/{space_id}/environments/{environment_id}/releases
Content-Type: application/vnd.contentful.management.v1+json

Creates a new release with an auto-generated ID.

Use the `entities.items[]` shape that matches the release version and the space's publishing mode:

* `Release.v1`: direct Entry or Asset links.
* `Release.v2` with entry-based publishing: `entity` plus `action`, where `action` is `publish` or `unpublish`.
* `Release.v2` with locale-based publishing: `entity` plus `add` and `remove`.

Only locale-based publishing uses `add` and `remove`. In that mode, each entity item must include both properties, and every environment locale must appear exactly once across `add.fields["*"]` and `remove.fields["*"]`.

Reference: https://contentful.com/developers/docs/references/content-management-api/releases/create-a-release

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `space_id` (string, required) — ID of the space in form of a string
- `environment_id` (string, required) — ID of the environment in form of a string

### Body (application/vnd.contentful.management.v1+json)

This endpoint expects a map from string to any.

- `map from string to any`

## Response

### 201

Created - Resource created successfully

- `map from string to any`

## Examples

### Releases

**Request**

```json
{
  "entities": {
    "items": [
      {
        "sys": {
          "id": "",
          "linkType": "",
          "type": "Link"
        }
      }
    ]
  },
  "title": ""
}
```

**Response**

```json
{
  "items": [
    {
      "entities": [
        {
          "items": [
            {
              "id": "",
              "linkType": "",
              "type": "Link"
            }
          ],
          "sys": {
            "type": "Array"
          }
        }
      ],
      "sys": {
        "archivedAt": "2020-01-01T13:00:00.000Z",
        "archivedBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "createdAt": "2025-07-05T09:25:43.000Z",
        "createdBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "environment": {
          "sys": {
            "id": "staging",
            "linkType": "Environment",
            "type": "Link"
          }
        },
        "space": {
          "sys": {
            "id": "yadj1kx9rmg0",
            "linkType": "Space",
            "type": "Link"
          }
        },
        "status": "",
        "type": "Release",
        "updatedAt": "2025-07-05T09:25:43.000Z",
        "updatedBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "version": 0
      },
      "title": ""
    }
  ],
  "limit": 0,
  "sys": {
    "type": "Array"
  },
  "total": 0
}
```

**SDK Code**

```android Android
SDK currently doesn't implement this endpoint.
```

```java Java
SDK currently doesn't implement this endpoint.
```

```kotlin Kotlin
SDK currently doesn't implement this endpoint.
```

```swift Swift
We currently don't provide a CMA SDK for this platform.
```

```js-legacy JavaScript (legacy)
import { createClient } from 'contentful-management'

const client = createClient({
  accessToken: '<content_management_api_key>'
}, { type: 'legacy' })

const payload = {
  title: 'My Release',
  entities: {
    sys: { type: 'Array' },
    items: [
      { sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' } },
      { sys: { linkType: 'Asset', type: 'Link', id: '<asset_id>' } },
    ]
  }
}

client.getSpace('<space_id>')
.then((space) => space.getEnvironment('<environment-id>'))
.then((environment) => environment.createRelease(payload))
.then((release) => console.log(release))
.catch(console.error)
```

```javascript JavaScript
import { createClient } from 'contentful-management'

// Client init
const client = contentful.createClient({
  accessToken: '<content_management_api_key>'
})

// Release.v1: direct Entry or Asset links.
const releaseV1Payload = {
  title: 'My Release',
  entities: {
    sys: { type: 'Array' },
    items: [
      { sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' } },
      { sys: { linkType: 'Asset', type: 'Link', id: '<asset_id>' } },
    ],
  },
};

// Release.v2 with entry-based publishing: entity plus action.
const entryBasedTimelineReleasePayload = {
  title: 'Publish entry',
  sys: {
    type: 'Release',
    schemaVersion: 'Release.v2',
  },
  entities: {
    sys: { type: 'Array' },
    items: [
      {
        entity: {
          sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' },
        },
        action: 'publish',
      },
    ],
  },
};

// Release.v2 with locale-based publishing: entity plus add/remove.
const localeBasedTimelineReleasePayload = {
  title: 'Unpublish entry in all locales',
  sys: {
    type: 'Release',
    schemaVersion: 'Release.v2',
  },
  entities: {
    sys: { type: 'Array' },
    items: [
      {
        entity: {
          sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' },
        },
        add: { fields: { '*': [] } },
        remove: { fields: { '*': ['en-US', 'de-DE'] } },
      },
    ],
  },
};

// Use one payload shape, based on the release version and publishing mode.
const release = await client.release.create(
  {
    spaceId: '<space_id>',
    environmentId: '<environment_id>',
  },
  entryBasedTimelineReleasePayload
);
```

```php PHP
SDK currently doesn't implement this endpoint.
```

```ruby Ruby
SDK currently doesn't implement this endpoint.
```

```python Python
SDK currently doesn't implement this endpoint.
```

```.net .NET
SDK currently doesn't implement this endpoint.
```

### Timeline releases

**Request**

```json
{
  "entities": {
    "items": [
      {
        "action": "publish",
        "entity": {
          "sys": {
            "id": "",
            "linkType": "",
            "type": "Link"
          }
        }
      }
    ]
  },
  "sys": {
    "schemaVersion": "Release.v2",
    "type": "Release"
  },
  "title": ""
}
```

**Response**

```json
{
  "items": [
    {
      "entities": [
        {
          "items": [
            {
              "sys": {
                "id": "",
                "linkType": "",
                "type": "Link"
              }
            },
            "action:"
          ],
          "sys": {
            "type": "Array"
          }
        }
      ],
      "sys": {
        "archivedAt": "2020-01-01T13:00:00.000Z",
        "archivedBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "createdAt": "2025-07-26T07:24:48.000Z",
        "createdBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "environment": {
          "sys": {
            "id": "staging",
            "linkType": "Environment",
            "type": "Link"
          }
        },
        "schemaVersion": "Release.v2",
        "space": {
          "sys": {
            "id": "yadj1kx9rmg0",
            "linkType": "Space",
            "type": "Link"
          }
        },
        "status": "",
        "type": "Release",
        "updatedAt": "2025-07-26T07:24:48.000Z",
        "updatedBy": {
          "sys": {
            "id": "7BslKh9TdKGOK41VmLDjFZ",
            "linkType": "User",
            "type": "Link"
          }
        },
        "version": 0
      },
      "title": ""
    }
  ],
  "limit": 0,
  "sys": {
    "type": "Array"
  },
  "total": 0
}
```

**SDK Code**

```android Android
SDK currently doesn't implement this endpoint.
```

```java Java
SDK currently doesn't implement this endpoint.
```

```kotlin Kotlin
SDK currently doesn't implement this endpoint.
```

```swift Swift
We currently don't provide a CMA SDK for this platform.
```

```js-legacy JavaScript (legacy)
import { createClient } from 'contentful-management'

const client = createClient({
  accessToken: '<content_management_api_key>'
}, { type: 'legacy' })

const payload = {
  title: 'My Release',
  entities: {
    sys: { type: 'Array' },
    items: [
      { sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' } },
      { sys: { linkType: 'Asset', type: 'Link', id: '<asset_id>' } },
    ]
  }
}

client.getSpace('<space_id>')
.then((space) => space.getEnvironment('<environment-id>'))
.then((environment) => environment.createRelease(payload))
.then((release) => console.log(release))
.catch(console.error)
```

```javascript JavaScript
import { createClient } from 'contentful-management'

// Client init
const client = contentful.createClient({
  accessToken: '<content_management_api_key>'
})

// Release.v1: direct Entry or Asset links.
const releaseV1Payload = {
  title: 'My Release',
  entities: {
    sys: { type: 'Array' },
    items: [
      { sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' } },
      { sys: { linkType: 'Asset', type: 'Link', id: '<asset_id>' } },
    ],
  },
};

// Release.v2 with entry-based publishing: entity plus action.
const entryBasedTimelineReleasePayload = {
  title: 'Publish entry',
  sys: {
    type: 'Release',
    schemaVersion: 'Release.v2',
  },
  entities: {
    sys: { type: 'Array' },
    items: [
      {
        entity: {
          sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' },
        },
        action: 'publish',
      },
    ],
  },
};

// Release.v2 with locale-based publishing: entity plus add/remove.
const localeBasedTimelineReleasePayload = {
  title: 'Unpublish entry in all locales',
  sys: {
    type: 'Release',
    schemaVersion: 'Release.v2',
  },
  entities: {
    sys: { type: 'Array' },
    items: [
      {
        entity: {
          sys: { linkType: 'Entry', type: 'Link', id: '<entry_id>' },
        },
        add: { fields: { '*': [] } },
        remove: { fields: { '*': ['en-US', 'de-DE'] } },
      },
    ],
  },
};

// Use one payload shape, based on the release version and publishing mode.
const release = await client.release.create(
  {
    spaceId: '<space_id>',
    environmentId: '<environment_id>',
  },
  entryBasedTimelineReleasePayload
);
```

```php PHP
SDK currently doesn't implement this endpoint.
```

```ruby Ruby
SDK currently doesn't implement this endpoint.
```

```python Python
SDK currently doesn't implement this endpoint.
```

```.net .NET
SDK currently doesn't implement this endpoint.
```