GET
/
v1
/
teams
/
{teamId}
/
posts
/
{postId}
TypeScript client
import { OctosparkClient } from '@octospark/sdk'

const client = new OctosparkClient({
  token: process.env.OCTOSPARK_TOKEN
})

const response = await client.social.getPost({
  teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
  postId: process.env.OCTOSPARK_POST_ID ?? "postId",
})
import os
from octospark_sdk import OctosparkClient

client = OctosparkClient(token=os.environ["OCTOSPARK_TOKEN"])

response = client.social.get_post(
teamId=os.environ.get("OCTOSPARK_TEAM_ID", "teamId"),
postId=os.environ.get("OCTOSPARK_POST_ID", "postId")
)
octospark posts get \
--request '{"path":{"teamId":"teamId","postId":"postId"}}'
use reqwest::Client;
use std::env;

#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let client = Client::new();
let base_url = env::var("OCTOSPARK_API_URL").unwrap_or_else(|_| "https://api.octospark.ai".to_string());
let team_id = env::var("OCTOSPARK_TEAM_ID").unwrap_or_else(|_| "teamId".to_string());
let post_id = env::var("OCTOSPARK_POST_ID").unwrap_or_else(|_| "postId".to_string());
let url = format!("{}/v1/teams/{}/posts/{}", base_url.trim_end_matches('/'), team_id, post_id);
let token = env::var("OCTOSPARK_TOKEN").expect("OCTOSPARK_TOKEN");
let mut request = client.get(url).bearer_auth(token);
let response = request.send().await?;
println!("{}", response.text().await?);
Ok(())
}
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

Future<void> main() async {
final baseUrl = Platform.environment['OCTOSPARK_API_URL'] ?? 'https://api.octospark.ai';
final token = Platform.environment['OCTOSPARK_TOKEN'];
final teamId = Platform.environment['OCTOSPARK_TEAM_ID'] ?? 'teamId';
final postId = Platform.environment['OCTOSPARK_POST_ID'] ?? 'postId';
final url = '${baseUrl.replaceFirst(RegExp(r'/$'), '')}/v1/teams/$teamId/posts/$postId';
final uri = Uri.parse(url);
final headers = {
'Authorization': 'Bearer $token',
};
final response = await http.get(
uri,
headers: headers,
);
print(response.body);
}
curl --request GET \
--url https://api.octospark.ai/v1/teams/{teamId}/posts/{postId} \
--header 'Authorization: Bearer <token>'
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}' -Method GET -Headers $headers
import Foundation

let url = URL(string: "https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]

let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))
using RestSharp;


var options = new RestClientOptions("https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
using RestSharp;


var options = new RestClientOptions("https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);
val client = OkHttpClient()

val request = Request.Builder()
.url("https://api.octospark.ai/v1/teams/{teamId}/posts/{postId}")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()

val response = client.newCall(request).execute()
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "title": "<string>",
  "text": "<string>",
  "assetIds": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "assetTags": [
    "<string>"
  ],
  "userTags": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "name": "<string>",
      "colour": "<string>"
    }
  ],
  "contentPayloadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "latestScheduledPost": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "contentItemId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "socialAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "scheduledAt": "<string>",
    "timezone": "Europe/London",
    "platformPostId": "<string>",
    "platformSettings": {},
    "publishResults": {},
    "providerPublishState": {
      "requiresPolling": true,
      "publishId": "<string>",
      "platformPostId": "<string>",
      "providerStatus": "<string>",
      "pollingReason": "<string>",
      "uploadProgress": {
        "nextByteStart": 123,
        "uploadSize": 123
      },
      "failureCode": "<string>"
    },
    "errorCode": "<string>",
    "errorMessage": "<string>",
    "workflowId": "<string>",
    "workflowRunId": "<string>",
    "createdAt": "<string>",
    "updatedAt": "<string>"
  },
  "scheduledDestinationAccountIds": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ],
  "createdAt": "<string>",
  "updatedAt": "<string>",
  "postInput": {
    "kind": "atomic",
    "text": "<string>",
    "attachments": [
      {
        "kind": "media",
        "asset": {
          "assetId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "mimeType": "<string>",
          "byteSize": 123,
          "width": 123,
          "height": 123,
          "durationSeconds": 123,
          "thumbnailUrl": "<string>",
          "altText": "<string>"
        },
        "altText": "<string>"
      }
    ]
  },
  "postPublishActions": {
    "firstComment": {
      "text": "<string>",
      "mediaIds": [
        "3c90c3cc-0d44-4b50-8888-8dd25736052a"
      ]
    },
    "engagementCommentTrigger": {
      "likeThreshold": 2,
      "windowHours": 360,
      "comment": {
        "text": "<string>",
        "mediaIds": [
          "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        ]
      }
    },
    "repostAfter": {
      "offsetDays": 15,
      "text": "<string>"
    },
    "recurrenceIntervalDays": 183,
    "recurrenceEndsAt": "<string>"
  }
}
{
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
],
"message": "<string>",
"_tag": "HttpApiDecodeError"
}
{
"message": "<string>",
"_tag": "Unauthorized"
}
{
"message": "<string>",
"_tag": "PaymentRequired"
}
{
"message": "<string>",
"_tag": "Forbidden"
}
{
"message": "<string>",
"_tag": "NotFound"
}
{
"message": "<string>",
"_tag": "Conflict"
}
{
"message": "<string>",
"_tag": "TooManyRequests"
}
{
"message": "<string>",
"_tag": "InternalError"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

teamId
string
required

Team (workspace) id (UUID). Discover ids via the list teams endpoint or the agent context.

postId
string
required

Post id (UUID), as returned by the create post and list posts endpoints.

Response

Success

id
string<uuid>
required

UUID of the post.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example:

"3c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f"

teamId
string<uuid>
required

a Universally Unique Identifier

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
postType
enum<string>
required

Content format of a post: text_post (text only), text_image, text_video, or carousel (2+ photos).

Available options:
text_post,
text_image,
text_video,
carousel
Examples:

"text_post"

"text_image"

title
string | null
required
status
enum<string>
required

Editorial status of a post: idea, proposed_render, draft, approved, rejected, archived, or deleted.

Available options:
idea,
proposed_render,
draft,
approved,
rejected,
archived,
deleted
Examples:

"draft"

"approved"

text
string
required
assetIds
string<uuid>[]
required

a Universally Unique Identifier

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
assetTags
string[]
required

Deduped, sorted union of the post's non-deleted assets' AI tags; empty for text-only posts.

Example:
["launch", "product"]
userTags
object[]
required

User/agent-assigned registry tags (id, name, colour) on the post; distinct from AI-derived assetTags. Empty when no tags are assigned.

contentPayloadId
string<uuid>
required

a Universally Unique Identifier

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
latestScheduledPost
object | null
required
scheduledDestinationAccountIds
string<uuid>[]
required

a Universally Unique Identifier

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
saveDestination
enum<string>
required
Available options:
queue,
drafts
saveMessage
enum<string>
required
Available options:
Saved to Queue,
Saved to Drafts
createdAt
string
required
updatedAt
string
required
postInput
object
postPublishActions
object