curl --request POST \
--url https://app.tryordinal.com/api/v1/posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Q4 Product Launch Announcement",
"publishAt": "2026-01-15T14:00:00.000Z",
"status": "Scheduled",
"linkedIn": {
"profileId": "550e8400-e29b-41d4-a716-446655440001",
"copy": "Excited to announce our new product launch! 🚀\n\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440010"
}
]
},
"x": {
"profileId": "550e8400-e29b-41d4-a716-446655440003",
"tweets": [
{
"copy": "Excited to announce our new product launch! 🚀\n\nA thread on what we've been building 🧵",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440011"
}
]
},
{
"copy": "Key highlights:\n• Feature A\n• Feature B\n• Feature C"
}
]
},
"instagram": {
"profileId": "550e8400-e29b-41d4-a716-446655440004",
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440012",
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": true,
"coverPhotoId": "550e8400-e29b-41d4-a716-446655440013",
"collaborators": [
"tryordinal"
]
},
"labelIds": [
"550e8400-e29b-41d4-a716-446655440002"
],
"notes": "Internal note: Coordinate with marketing team"
}
EOFimport requests
url = "https://app.tryordinal.com/api/v1/posts"
payload = {
"title": "Q4 Product Launch Announcement",
"publishAt": "2026-01-15T14:00:00.000Z",
"status": "Scheduled",
"linkedIn": {
"profileId": "550e8400-e29b-41d4-a716-446655440001",
"copy": "Excited to announce our new product launch! 🚀
Huge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.
Key highlights:
• Feature A
• Feature B
• Feature C
#ProductLaunch #Innovation",
"assets": [{ "assetId": "550e8400-e29b-41d4-a716-446655440010" }]
},
"x": {
"profileId": "550e8400-e29b-41d4-a716-446655440003",
"tweets": [{
"copy": "Excited to announce our new product launch! 🚀
A thread on what we've been building 🧵",
"assets": [{ "assetId": "550e8400-e29b-41d4-a716-446655440011" }]
}, { "copy": "Key highlights:
• Feature A
• Feature B
• Feature C" }]
},
"instagram": {
"profileId": "550e8400-e29b-41d4-a716-446655440004",
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440012",
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": True,
"coverPhotoId": "550e8400-e29b-41d4-a716-446655440013",
"collaborators": ["tryordinal"]
},
"labelIds": ["550e8400-e29b-41d4-a716-446655440002"],
"notes": "Internal note: Coordinate with marketing team"
}
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({
title: 'Q4 Product Launch Announcement',
publishAt: '2026-01-15T14:00:00.000Z',
status: 'Scheduled',
linkedIn: {
profileId: '550e8400-e29b-41d4-a716-446655440001',
copy: 'Excited to announce our new product launch! 🚀\n\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation',
assets: [{assetId: '550e8400-e29b-41d4-a716-446655440010'}]
},
x: {
profileId: '550e8400-e29b-41d4-a716-446655440003',
tweets: [
{
copy: 'Excited to announce our new product launch! 🚀\n\nA thread on what we\'ve been building 🧵',
assets: [{assetId: '550e8400-e29b-41d4-a716-446655440011'}]
},
{copy: 'Key highlights:\n• Feature A\n• Feature B\n• Feature C'}
]
},
instagram: {
profileId: '550e8400-e29b-41d4-a716-446655440004',
type: 'Reel',
copy: 'Check out our new product! 🚀',
assets: [
{
assetId: '550e8400-e29b-41d4-a716-446655440012',
tags: [{username: 'tryordinal', x: 0.5, y: 0.5}]
}
],
shareToFeed: true,
coverPhotoId: '550e8400-e29b-41d4-a716-446655440013',
collaborators: ['tryordinal']
},
labelIds: ['550e8400-e29b-41d4-a716-446655440002'],
notes: 'Internal note: Coordinate with marketing team'
})
};
fetch('https://app.tryordinal.com/api/v1/posts', 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",
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([
'title' => 'Q4 Product Launch Announcement',
'publishAt' => '2026-01-15T14:00:00.000Z',
'status' => 'Scheduled',
'linkedIn' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440001',
'copy' => 'Excited to announce our new product launch! 🚀
Huge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.
Key highlights:
• Feature A
• Feature B
• Feature C
#ProductLaunch #Innovation',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440010'
]
]
],
'x' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440003',
'tweets' => [
[
'copy' => 'Excited to announce our new product launch! 🚀
A thread on what we\'ve been building 🧵',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440011'
]
]
],
[
'copy' => 'Key highlights:
• Feature A
• Feature B
• Feature C'
]
]
],
'instagram' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440004',
'type' => 'Reel',
'copy' => 'Check out our new product! 🚀',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440012',
'tags' => [
[
'username' => 'tryordinal',
'x' => 0.5,
'y' => 0.5
]
]
]
],
'shareToFeed' => true,
'coverPhotoId' => '550e8400-e29b-41d4-a716-446655440013',
'collaborators' => [
'tryordinal'
]
],
'labelIds' => [
'550e8400-e29b-41d4-a716-446655440002'
],
'notes' => 'Internal note: Coordinate with marketing team'
]),
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"
payload := strings.NewReader("{\n \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\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://app.tryordinal.com/api/v1/posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/posts")
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 \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\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": "Q4 Product Launch Announcement",
"channels": [
"LinkedIn",
"Twitter",
"Instagram"
],
"status": "Scheduled",
"createdAt": "2026-01-05T10:30:00.000Z",
"updatedAt": "2026-01-05T10:30:00.000Z",
"linkedIn": {
"copy": "Excited to announce our new product launch!",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"name": "product-photo.jpg",
"url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
"mimetype": "image/jpeg",
"size": 245678,
"width": 1920,
"height": 1080,
"duration": null
}
]
},
"x": {
"tweets": [
{
"copy": "Excited to announce our new product launch!",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440011",
"name": "product-photo.jpg",
"url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
"mimetype": "image/jpeg",
"size": 245678,
"width": 1920,
"height": 1080,
"duration": null
}
]
},
{
"copy": "Key highlights: Feature A, Feature B, Feature C",
"assets": []
}
]
},
"instagram": {
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440012",
"name": "product-video.mp4",
"url": "https://cdn.tryordinal.com/assets/product-video.mp4",
"mimetype": "video/mp4",
"size": 5245678,
"width": 1080,
"height": 1920,
"duration": 30,
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": true,
"collaborators": [
"tryordinal"
]
}
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}Create post
Create a new post in the workspace. At least one channel (linkedIn, x, instagram, or tikTok) is required.
curl --request POST \
--url https://app.tryordinal.com/api/v1/posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"title": "Q4 Product Launch Announcement",
"publishAt": "2026-01-15T14:00:00.000Z",
"status": "Scheduled",
"linkedIn": {
"profileId": "550e8400-e29b-41d4-a716-446655440001",
"copy": "Excited to announce our new product launch! 🚀\n\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440010"
}
]
},
"x": {
"profileId": "550e8400-e29b-41d4-a716-446655440003",
"tweets": [
{
"copy": "Excited to announce our new product launch! 🚀\n\nA thread on what we've been building 🧵",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440011"
}
]
},
{
"copy": "Key highlights:\n• Feature A\n• Feature B\n• Feature C"
}
]
},
"instagram": {
"profileId": "550e8400-e29b-41d4-a716-446655440004",
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440012",
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": true,
"coverPhotoId": "550e8400-e29b-41d4-a716-446655440013",
"collaborators": [
"tryordinal"
]
},
"labelIds": [
"550e8400-e29b-41d4-a716-446655440002"
],
"notes": "Internal note: Coordinate with marketing team"
}
EOFimport requests
url = "https://app.tryordinal.com/api/v1/posts"
payload = {
"title": "Q4 Product Launch Announcement",
"publishAt": "2026-01-15T14:00:00.000Z",
"status": "Scheduled",
"linkedIn": {
"profileId": "550e8400-e29b-41d4-a716-446655440001",
"copy": "Excited to announce our new product launch! 🚀
Huge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.
Key highlights:
• Feature A
• Feature B
• Feature C
#ProductLaunch #Innovation",
"assets": [{ "assetId": "550e8400-e29b-41d4-a716-446655440010" }]
},
"x": {
"profileId": "550e8400-e29b-41d4-a716-446655440003",
"tweets": [{
"copy": "Excited to announce our new product launch! 🚀
A thread on what we've been building 🧵",
"assets": [{ "assetId": "550e8400-e29b-41d4-a716-446655440011" }]
}, { "copy": "Key highlights:
• Feature A
• Feature B
• Feature C" }]
},
"instagram": {
"profileId": "550e8400-e29b-41d4-a716-446655440004",
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"assetId": "550e8400-e29b-41d4-a716-446655440012",
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": True,
"coverPhotoId": "550e8400-e29b-41d4-a716-446655440013",
"collaborators": ["tryordinal"]
},
"labelIds": ["550e8400-e29b-41d4-a716-446655440002"],
"notes": "Internal note: Coordinate with marketing team"
}
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({
title: 'Q4 Product Launch Announcement',
publishAt: '2026-01-15T14:00:00.000Z',
status: 'Scheduled',
linkedIn: {
profileId: '550e8400-e29b-41d4-a716-446655440001',
copy: 'Excited to announce our new product launch! 🚀\n\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation',
assets: [{assetId: '550e8400-e29b-41d4-a716-446655440010'}]
},
x: {
profileId: '550e8400-e29b-41d4-a716-446655440003',
tweets: [
{
copy: 'Excited to announce our new product launch! 🚀\n\nA thread on what we\'ve been building 🧵',
assets: [{assetId: '550e8400-e29b-41d4-a716-446655440011'}]
},
{copy: 'Key highlights:\n• Feature A\n• Feature B\n• Feature C'}
]
},
instagram: {
profileId: '550e8400-e29b-41d4-a716-446655440004',
type: 'Reel',
copy: 'Check out our new product! 🚀',
assets: [
{
assetId: '550e8400-e29b-41d4-a716-446655440012',
tags: [{username: 'tryordinal', x: 0.5, y: 0.5}]
}
],
shareToFeed: true,
coverPhotoId: '550e8400-e29b-41d4-a716-446655440013',
collaborators: ['tryordinal']
},
labelIds: ['550e8400-e29b-41d4-a716-446655440002'],
notes: 'Internal note: Coordinate with marketing team'
})
};
fetch('https://app.tryordinal.com/api/v1/posts', 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",
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([
'title' => 'Q4 Product Launch Announcement',
'publishAt' => '2026-01-15T14:00:00.000Z',
'status' => 'Scheduled',
'linkedIn' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440001',
'copy' => 'Excited to announce our new product launch! 🚀
Huge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.
Key highlights:
• Feature A
• Feature B
• Feature C
#ProductLaunch #Innovation',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440010'
]
]
],
'x' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440003',
'tweets' => [
[
'copy' => 'Excited to announce our new product launch! 🚀
A thread on what we\'ve been building 🧵',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440011'
]
]
],
[
'copy' => 'Key highlights:
• Feature A
• Feature B
• Feature C'
]
]
],
'instagram' => [
'profileId' => '550e8400-e29b-41d4-a716-446655440004',
'type' => 'Reel',
'copy' => 'Check out our new product! 🚀',
'assets' => [
[
'assetId' => '550e8400-e29b-41d4-a716-446655440012',
'tags' => [
[
'username' => 'tryordinal',
'x' => 0.5,
'y' => 0.5
]
]
]
],
'shareToFeed' => true,
'coverPhotoId' => '550e8400-e29b-41d4-a716-446655440013',
'collaborators' => [
'tryordinal'
]
],
'labelIds' => [
'550e8400-e29b-41d4-a716-446655440002'
],
'notes' => 'Internal note: Coordinate with marketing team'
]),
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"
payload := strings.NewReader("{\n \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\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://app.tryordinal.com/api/v1/posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/posts")
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 \"title\": \"Q4 Product Launch Announcement\",\n \"publishAt\": \"2026-01-15T14:00:00.000Z\",\n \"status\": \"Scheduled\",\n \"linkedIn\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\\n\\nKey highlights:\\n• Feature A\\n• Feature B\\n• Feature C\\n\\n#ProductLaunch #Innovation\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440010\"\n }\n ]\n },\n \"x\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"tweets\": [\n {\n \"copy\": \"Excited to announce our new product launch! 🚀\\n\\nA thread on what we've been building 🧵\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440011\"\n }\n ]\n },\n {\n \"copy\": \"Key highlights:\\n• Feature A\\n• Feature B\\n• Feature C\"\n }\n ]\n },\n \"instagram\": {\n \"profileId\": \"550e8400-e29b-41d4-a716-446655440004\",\n \"type\": \"Reel\",\n \"copy\": \"Check out our new product! 🚀\",\n \"assets\": [\n {\n \"assetId\": \"550e8400-e29b-41d4-a716-446655440012\",\n \"tags\": [\n {\n \"username\": \"tryordinal\",\n \"x\": 0.5,\n \"y\": 0.5\n }\n ]\n }\n ],\n \"shareToFeed\": true,\n \"coverPhotoId\": \"550e8400-e29b-41d4-a716-446655440013\",\n \"collaborators\": [\n \"tryordinal\"\n ]\n },\n \"labelIds\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"notes\": \"Internal note: Coordinate with marketing team\"\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": "Q4 Product Launch Announcement",
"channels": [
"LinkedIn",
"Twitter",
"Instagram"
],
"status": "Scheduled",
"createdAt": "2026-01-05T10:30:00.000Z",
"updatedAt": "2026-01-05T10:30:00.000Z",
"linkedIn": {
"copy": "Excited to announce our new product launch!",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"name": "product-photo.jpg",
"url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
"mimetype": "image/jpeg",
"size": 245678,
"width": 1920,
"height": 1080,
"duration": null
}
]
},
"x": {
"tweets": [
{
"copy": "Excited to announce our new product launch!",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440011",
"name": "product-photo.jpg",
"url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
"mimetype": "image/jpeg",
"size": 245678,
"width": 1920,
"height": 1080,
"duration": null
}
]
},
{
"copy": "Key highlights: Feature A, Feature B, Feature C",
"assets": []
}
]
},
"instagram": {
"type": "Reel",
"copy": "Check out our new product! 🚀",
"assets": [
{
"id": "550e8400-e29b-41d4-a716-446655440012",
"name": "product-video.mp4",
"url": "https://cdn.tryordinal.com/assets/product-video.mp4",
"mimetype": "video/mp4",
"size": 5245678,
"width": 1080,
"height": 1920,
"duration": 30,
"tags": [
{
"username": "tryordinal",
"x": 0.5,
"y": 0.5
}
]
}
],
"shareToFeed": true,
"collaborators": [
"tryordinal"
]
}
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}Authorizations
API key authentication. Generate an API key from your workspace settings.
Body
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 created successfully
Tentative, ToDo, InProgress, ForReview, Blocked, Finalized, Scheduled, Posted LinkedIn content with assets. Present when the post targets the LinkedIn channel.
Show child attributes
Show child attributes
X (Twitter) content with assets. 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
Was this page helpful?