curl --request POST \
--url https://api.onset.io/v1/releases/{id}/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "RELEASED",
"scheduled_at": "2026-08-01T09:00:00.000Z"
}
'import requests
url = "https://api.onset.io/v1/releases/{id}/publish"
payload = {
"status": "RELEASED",
"scheduled_at": "2026-08-01T09:00:00.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({status: 'RELEASED', scheduled_at: '2026-08-01T09:00:00.000Z'})
};
fetch('https://api.onset.io/v1/releases/{id}/publish', 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.onset.io/v1/releases/{id}/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'RELEASED',
'scheduled_at' => '2026-08-01T09:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onset.io/v1/releases/{id}/publish"
payload := strings.NewReader("{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.onset.io/v1/releases/{id}/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onset.io/v1/releases/{id}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"title": "<string>",
"body": "<string>",
"slug": "<string>",
"status": "DRAFT",
"version": "<string>",
"is_pinned": true,
"is_public": true,
"is_pre_release": true,
"summary": "<string>",
"hero": {
"type": "image",
"url": "<string>"
},
"changes": [
{
"title": "<string>",
"color": "<string>",
"content": "<string>"
}
],
"project": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"labels": [
{
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"color": "<string>"
}
],
"attachments": [
{
"type": "FILE",
"content": {
"title": "<string>",
"url": "<string>",
"size": 123,
"type": "<string>"
},
"id": "<string>"
}
],
"contributors": [
{
"id": "<string>",
"name": "<string>",
"avatar_url": "<string>"
}
],
"scheduled_at": "2023-11-07T05:31:56Z",
"released_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"details": {}
}Publish release
Publish a draft or scheduled release to the changelog, either immediately or at a future date. Use this to publish a scheduled release early, or to move a scheduled release to a different date. Returns 400 if the release is already published.
curl --request POST \
--url https://api.onset.io/v1/releases/{id}/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "RELEASED",
"scheduled_at": "2026-08-01T09:00:00.000Z"
}
'import requests
url = "https://api.onset.io/v1/releases/{id}/publish"
payload = {
"status": "RELEASED",
"scheduled_at": "2026-08-01T09:00:00.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({status: 'RELEASED', scheduled_at: '2026-08-01T09:00:00.000Z'})
};
fetch('https://api.onset.io/v1/releases/{id}/publish', 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.onset.io/v1/releases/{id}/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'RELEASED',
'scheduled_at' => '2026-08-01T09:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onset.io/v1/releases/{id}/publish"
payload := strings.NewReader("{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.onset.io/v1/releases/{id}/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onset.io/v1/releases/{id}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"RELEASED\",\n \"scheduled_at\": \"2026-08-01T09:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"title": "<string>",
"body": "<string>",
"slug": "<string>",
"status": "DRAFT",
"version": "<string>",
"is_pinned": true,
"is_public": true,
"is_pre_release": true,
"summary": "<string>",
"hero": {
"type": "image",
"url": "<string>"
},
"changes": [
{
"title": "<string>",
"color": "<string>",
"content": "<string>"
}
],
"project": {
"id": "<string>",
"name": "<string>",
"slug": "<string>"
},
"labels": [
{
"id": "<string>",
"name": "<string>",
"slug": "<string>",
"color": "<string>"
}
],
"attachments": [
{
"type": "FILE",
"content": {
"title": "<string>",
"url": "<string>",
"size": 123,
"type": "<string>"
},
"id": "<string>"
}
],
"contributors": [
{
"id": "<string>",
"name": "<string>",
"avatar_url": "<string>"
}
],
"scheduled_at": "2023-11-07T05:31:56Z",
"released_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"details": {}
}{
"error": "<string>",
"details": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Release ID
Body
RELEASED publishes the release immediately. SCHEDULED publishes it automatically at scheduled_at.
RELEASED, SCHEDULED When to publish the release. Required when status is SCHEDULED, must be a future date, and requires a plan that includes scheduled releases.
"2026-08-01T09:00:00.000Z"
Response
Release published successfully
Unique release identifier
Release title
Release description/body content (HTML formatted)
URL-friendly release identifier
Current release status
DRAFT, SCHEDULED, RELEASED Release version
Whether release is pinned
Whether release is publicly visible
Whether this is a pre-release
AI generated summary of the release
Hero image/video for the release
Show child attributes
Show child attributes
List of changes in this release
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
- Option 1
- Option 2
Show child attributes
Show child attributes
List of contributors to this release
Show child attributes
Show child attributes
When the release is scheduled to publish. Only set while status is SCHEDULED.
When the release was released
When the release was created
When the release was last updated
Was this page helpful?

