curl --request PATCH \
--url https://app.tryordinal.com/api/v1/posts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Updated: Q4 Product Launch Announcement",
"publishAt": "2026-01-16T15:00:00.000Z",
"status": "Finalized",
"linkedIn": {
"copy": "Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe've added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
},
"x": {
"tweets": [
{
"copy": "Updated content for our product launch! 🚀\n\nWe've added even more features 🧵"
},
{
"copy": "• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
}
]
}
}
EOFimport requests
url = "https://app.tryordinal.com/api/v1/posts/{id}"
payload = {
"title": "Updated: Q4 Product Launch Announcement",
"publishAt": "2026-01-16T15:00:00.000Z",
"status": "Finalized",
"linkedIn": { "copy": "Updated content for our product launch! 🚀
Shoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.
We've added even more features:
• Feature D
• Feature E
#ProductLaunch #Innovation" },
"x": { "tweets": [{ "copy": "Updated content for our product launch! 🚀
We've added even more features 🧵" }, { "copy": "• Feature D
• Feature E
#ProductLaunch #Innovation" }] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Updated: Q4 Product Launch Announcement',
publishAt: '2026-01-16T15:00:00.000Z',
status: 'Finalized',
linkedIn: {
copy: 'Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe\'ve added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation'
},
x: {
tweets: [
{
copy: 'Updated content for our product launch! 🚀\n\nWe\'ve added even more features 🧵'
},
{copy: '• Feature D\n• Feature E\n\n#ProductLaunch #Innovation'}
]
}
})
};
fetch('https://app.tryordinal.com/api/v1/posts/{id}', 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://app.tryordinal.com/api/v1/posts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Updated: Q4 Product Launch Announcement',
'publishAt' => '2026-01-16T15:00:00.000Z',
'status' => 'Finalized',
'linkedIn' => [
'copy' => 'Updated content for our product launch! 🚀
Shoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.
We\'ve added even more features:
• Feature D
• Feature E
#ProductLaunch #Innovation'
],
'x' => [
'tweets' => [
[
'copy' => 'Updated content for our product launch! 🚀
We\'ve added even more features 🧵'
],
[
'copy' => '• Feature D
• Feature E
#ProductLaunch #Innovation'
]
]
]
]),
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://app.tryordinal.com/api/v1/posts/{id}"
payload := strings.NewReader("{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.tryordinal.com/api/v1/posts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/posts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://app.tryordinal.com/acme/posts/550e8400-e29b-41d4-a716-446655440000",
"title": "Updated: Q4 Product Launch Announcement",
"channels": [
"LinkedIn",
"Twitter"
],
"status": "Finalized",
"publishDate": "2026-01-16",
"publishAt": "2026-01-16T15:00:00.000Z",
"updatedAt": "2026-01-13T09:15:00.000Z",
"linkedIn": {
"copy": "Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe've added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
},
"x": {
"tweets": [
{
"copy": "Updated content for our product launch! 🚀\n\nWe've added even more features 🧵"
},
{
"copy": "• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
}
]
}
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}{
"code": "NOT_FOUND",
"message": "Post not found or does not belong to this workspace"
}Update post
Update an existing post by ID. All fields are optional - only include the fields you want to update. Archived posts cannot be updated; unarchive them first.
curl --request PATCH \
--url https://app.tryordinal.com/api/v1/posts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Updated: Q4 Product Launch Announcement",
"publishAt": "2026-01-16T15:00:00.000Z",
"status": "Finalized",
"linkedIn": {
"copy": "Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe've added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
},
"x": {
"tweets": [
{
"copy": "Updated content for our product launch! 🚀\n\nWe've added even more features 🧵"
},
{
"copy": "• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
}
]
}
}
EOFimport requests
url = "https://app.tryordinal.com/api/v1/posts/{id}"
payload = {
"title": "Updated: Q4 Product Launch Announcement",
"publishAt": "2026-01-16T15:00:00.000Z",
"status": "Finalized",
"linkedIn": { "copy": "Updated content for our product launch! 🚀
Shoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.
We've added even more features:
• Feature D
• Feature E
#ProductLaunch #Innovation" },
"x": { "tweets": [{ "copy": "Updated content for our product launch! 🚀
We've added even more features 🧵" }, { "copy": "• Feature D
• Feature E
#ProductLaunch #Innovation" }] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Updated: Q4 Product Launch Announcement',
publishAt: '2026-01-16T15:00:00.000Z',
status: 'Finalized',
linkedIn: {
copy: 'Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe\'ve added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation'
},
x: {
tweets: [
{
copy: 'Updated content for our product launch! 🚀\n\nWe\'ve added even more features 🧵'
},
{copy: '• Feature D\n• Feature E\n\n#ProductLaunch #Innovation'}
]
}
})
};
fetch('https://app.tryordinal.com/api/v1/posts/{id}', 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://app.tryordinal.com/api/v1/posts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Updated: Q4 Product Launch Announcement',
'publishAt' => '2026-01-16T15:00:00.000Z',
'status' => 'Finalized',
'linkedIn' => [
'copy' => 'Updated content for our product launch! 🚀
Shoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.
We\'ve added even more features:
• Feature D
• Feature E
#ProductLaunch #Innovation'
],
'x' => [
'tweets' => [
[
'copy' => 'Updated content for our product launch! 🚀
We\'ve added even more features 🧵'
],
[
'copy' => '• Feature D
• Feature E
#ProductLaunch #Innovation'
]
]
]
]),
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://app.tryordinal.com/api/v1/posts/{id}"
payload := strings.NewReader("{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.tryordinal.com/api/v1/posts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/posts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Updated: Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-16T15:00:00.000Z\",\n \"status\": \"Finalized\",\n \"linkedIn\": {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\\n\\nWe've added even more features:\\n• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n },\n \"x\": {\n \"tweets\": [\n {\n \"copy\": \"Updated content for our product launch! 🚀\\n\\nWe've added even more features 🧵\"\n },\n {\n \"copy\": \"• Feature D\\n• Feature E\\n\\n#ProductLaunch #Innovation\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://app.tryordinal.com/acme/posts/550e8400-e29b-41d4-a716-446655440000",
"title": "Updated: Q4 Product Launch Announcement",
"channels": [
"LinkedIn",
"Twitter"
],
"status": "Finalized",
"publishDate": "2026-01-16",
"publishAt": "2026-01-16T15:00:00.000Z",
"updatedAt": "2026-01-13T09:15:00.000Z",
"linkedIn": {
"copy": "Updated content for our product launch! 🚀\n\nShoutout to @[Jane Smith](urn:li:person:XYZ789abc) for leading this effort.\n\nWe've added even more features:\n• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
},
"x": {
"tweets": [
{
"copy": "Updated content for our product launch! 🚀\n\nWe've added even more features 🧵"
},
{
"copy": "• Feature D\n• Feature E\n\n#ProductLaunch #Innovation"
}
]
}
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}{
"code": "NOT_FOUND",
"message": "Post not found or does not belong to this workspace"
}Authorizations
API key authentication. Generate an API key from your workspace settings.
Path Parameters
Post ID (UUID)
Body
All fields are optional. Only include the fields you want to update.
Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled, Posted Show child attributes
Show child attributes
X (Twitter) channel configuration for creating or updating posts
Show child attributes
Show child attributes
Instagram channel configuration for creating or updating posts. The shape of the object depends on the type field.
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
TikTok channel configuration for creating or updating posts. TikTok posts require exactly one video asset.
Show child attributes
Show child attributes
YouTube Shorts channel configuration for creating or updating posts. YouTube Shorts posts require exactly one video asset (1s–3min).
Show child attributes
Show child attributes
Response
Post updated successfully
Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled, Posted Scheduled publish date (YYYY-MM-DD) in workspace timezone
Scheduled publish datetime UTC. Only set when a specific time is specified.
When the post was archived. Null if the post is not archived.
Labels assigned to this post
Show child attributes
Show child attributes
Show child attributes
Show child attributes
X (Twitter) content. Present when the post targets the Twitter channel.
Show child attributes
Show child attributes
Instagram content. Present when the post targets the Instagram channel. The shape depends on the type field.
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
TikTok content. Present when the post targets the TikTok channel.
Show child attributes
Show child attributes
YouTube Shorts content. Present when the post targets the YouTube Shorts channel.
Show child attributes
Show child attributes
Was this page helpful?