---
title: "Create release"
method: POST
path: "/v3/releases"
tags: ["Releases"]
---

# Create release

`POST /v3/releases`

## Request

- Base URL: `https://api.interfere.com`
- URL: `https://api.interfere.com/v3/releases`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Registers a release for the surface the build-time key belongs to.

## Request body

- CreateReleaseRequest: Request body for creating a release.
  - `buildId` string, required
  - `destination` union, required: ReleaseDestination
    - VercelReleaseDestination: Release destination metadata for a Vercel deployment.
      - `deploymentId` string, nullable, required
      - `deploymentUrl` string, nullable, required
      - `destinationReleaseId` string, nullable, required
      - `environment` string, nullable, required
      - `environmentName` string, nullable, required
      - `environmentTarget` string, nullable, required
      - `provider` 'vercel', required
    - CloudflareReleaseDestination: Release destination metadata for a Cloudflare Workers deployment.
      - `accountId` string, nullable, required
      - `deploymentUrl` string, nullable, required
      - `destinationReleaseId` string, nullable, required
      - `environment` string, nullable, required
      - `environmentName` string, nullable, required
      - `environmentTarget` string, nullable, required
      - `provider` 'cloudflare', required
      - `deploymentId` string, nullable
      - `trafficPercentage` number, nullable
      - `scriptName` string, nullable, required
      - `versionId` string, nullable, required
    - CliReleaseDestination: Release destination metadata from the Interfere CLI.
      - `deploymentUrl` string, nullable, required
      - `destinationReleaseId` string, nullable, required
      - `environment` string, nullable, required
      - `provider` 'cli', required
    - unknown
  - `producerVersion` string
  - `slug` string
  - `source` union, required: ReleaseSource
    - GithubReleaseSource: Release source metadata coming from GitHub.
      - `branch` string, required
      - `commitMessage` string, required
      - `commitSha` string, nullable, required
      - `provider` 'github', required
      - `runId` string, nullable
      - `runUrl` string, nullable
      - `runnerName` string, nullable
    - CliReleaseSource: Release source metadata from the Interfere CLI.
      - `commitMessage` string, nullable, required
      - `commitRef` string, nullable, required
      - `commitSha` string, nullable, required
      - `commitUrl` string, nullable, required
      - `deploymentUrl` string, nullable
      - `environment` string, nullable
      - `provider` 'cli', required
      - `runId` string, nullable, required
      - `runUrl` string, nullable, required
      - `runnerName` string, nullable, required

## Response `200`

Release recorded

- CreateReleaseResponse: Response body returned after creating a release.
  - `build` ReleaseBuildRef, required: ReleaseBuildRef
    - `hash` string, required
  - `destination` ReleaseDestinationRef, required: ReleaseDestinationRef
    - `id` string, required
    - `slug` string, required
    - `environment` string, nullable, required
  - `org` OrgRef, required: OrgRef
    - `id` string, required
    - `slug` string, required
  - `source` ReleaseSourceRef, required: ReleaseSourceRef
    - `id` string, required
  - `surface` SurfaceRef, required: SurfaceRef
    - `id` string, required
    - `slug` string, required

## Other responses

- `401`: Missing or invalid secret key
- `403`: Secret key lacks the required scope or its network is blocked
- `503`: A dependency failed while recording the release; retry with backoff after the Retry-After delay

---

[API](https://skmtc.dev/interfere/apis/interfere-api.md) - [All operations](https://skmtc.dev/interfere/apis/interfere-api/llms.txt) - [OpenAPI document](https://skmtc.dev/interfere/apis/interfere-api/revisions/093321c104e6?raw)
