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

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

const response = await client.social.listPosts({
  teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
  query: {},
})
{
  "data": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "title": "<string>",
      "workflowStatusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "text": "<string>",
      "assetIds": [
        "3c90c3cc-0d44-4b50-8888-8dd25736052a"
      ],
      "media": [
        {
          "assetId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "mimeType": "<string>",
          "displayName": "<string>",
          "thumbnailPath": "<string>",
          "width": 123,
          "height": 123,
          "thumbnailUrl": "<string>",
          "fileUrl": "<string>",
          "previewUrlsExpireAt": "<string>"
        }
      ],
      "assetTags": [
        "<string>"
      ],
      "userTags": [
        {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "name": "<string>",
          "colour": "<string>"
        }
      ],
      "assignees": [
        {
          "userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "name": "<string>",
          "email": "<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"
      ],
      "draftDestinationAccountIds": [
        "3c90c3cc-0d44-4b50-8888-8dd25736052a"
      ],
      "createdAt": "<string>",
      "updatedAt": "<string>",
      "agentRunId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "substantialHumanRewrite": true,
      "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>"
      },
      "scheduledDestinations": [
        {
          "scheduledPostId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "socialAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "text": "<string>",
          "platformSettings": {}
        }
      ],
      "publishActions": [
        {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "scheduledPostId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "triggerConfig": "<unknown>",
          "payload": "<unknown>",
          "createdAt": "<string>",
          "parentPlatformPostId": "<string>",
          "scheduledFor": "<string>",
          "deadline": "<string>",
          "executedAt": "<string>",
          "platformResultId": "<string>",
          "error": {
            "code": "<string>",
            "message": "<string>"
          },
          "socialAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "accountDisplayName": "<string>",
          "accountProfileImageUrl": "<string>",
          "summary": {
            "text": "<string>",
            "mediaCount": 123
          }
        }
      ]
    }
  ],
  "total": 123,
  "nextCursor": "<string>",
  "prevCursor": "<string>",
  "pageOffset": 123
}

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.

Query Parameters

cursor
string

Opaque pagination cursor from the previous page response (nextCursor/prevCursor); omit to start at the first page.

offset
string

Zero-based row offset to jump to (numbered pages), 0 to 10000. With a cursor, the jump starts from that cursor; without one it is a plain offset. Lists not yet on the signed cursor standard ignore it.

Examples:

"0"

"25"

limit
string
default:25

Page size as a positive integer string; defaults to 25, capped at 100.

Examples:

"25"

"100"

sortBy
string

Field to sort by; each endpoint accepts its own allowlist and defaults to createdAt.

Example:

"createdAt"

sortOrder
enum<string>
default:desc

Sort direction: asc or desc; defaults to desc.

Available options:
asc,
desc
campaignId
string<uuid>

Only include outputs attributed to this campaign through their originating agent run, including child runs and agents no longer in its pool.

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}$
status
enum<string>

Filter to posts with this editorial status.

Available options:
idea,
proposed_render,
draft,
in_review,
approved,
rejected,
archived,
deleted
Example:

"draft"

workflowStatusId
string<uuid>

Filter to posts assigned to this workspace-defined content workflow status.

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}$
provider
enum<string>

Filter to posts whose latest scheduled post targets this provider.

Available options:
x,
tiktok,
instagram,
facebook,
youtube,
linkedin,
threads,
pinterest
Example:

"x"

scheduledFrom
string

Only include posts scheduled at or after this ISO 8601 timestamp.

Example:

"2026-06-01T00:00:00Z"

scheduledTo
string

Only include posts scheduled at or before this ISO 8601 timestamp.

Example:

"2026-06-30T23:59:59Z"

filter[q]
string

Case-insensitive free-text search over the post title and latest payload text.

Example:

"product launch"

filter[postType]
enum<string>

Filter to posts of this content format.

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

"text_image"

filter[tab]
enum<string>

Queue/Drafts/Sent/Failed tab over the derived latest-scheduled-post status: queue = scheduled/publishing, failed = failed, sent = published, drafts = never scheduled or a draft/cancelled latest scheduled post.

Available options:
queue,
drafts,
sent,
failed
Example:

"queue"

filter[tagIds]
string

CSV of user-tag UUIDs from the post_tags registry; matches posts assigned ANY of these tags. Unknown or foreign ids are ignored.

Example:

"4a1f4e93-0d8b-4a6c-9a44-1e8b1f2c3d4e,7b2c5f81-3e9d-4b7a-8c55-2f9c2a3b4c5d"

filter[assignee]
enum<string>

Assignee quick filter: me = posts assigned to the calling user, unassigned = posts with no assignees.

Available options:
me,
unassigned
Example:

"me"

filter[tags]
string

Comma-separated AI tags; matches posts whose assets carry any of the listed tags (OR).

Example:

"launch,product"

filter[category]
string

Comma-separated AI content categories; matches posts in any of the listed categories (OR).

Example:

"education"

filter[purpose]
string

Comma-separated AI purposes; matches posts whose assets carry any of the listed purposes (OR).

Example:

"promotion"

filter[emotion]
string

Comma-separated AI emotions; matches posts tagged with any of the listed emotions (OR).

Example:

"joy"

filter[mediaType]
string

Comma-separated media types; each value one of: image, video, audio, gif, document.

Example:

"image,video"

filter[enrichmentStatus]
string

Comma-separated AI enrichment statuses; each value one of: pending, processing, completed, failed.

Example:

"completed"

includePreviewUrls
enum<string>

Set true to get signed preview URLs (thumbnailUrl, fileUrl, previewUrlsExpireAt) on each media item, for rendering covers from this one response. Omit it otherwise: signing costs time and the URLs change on every call.

Available options:
true,
false

Response

Success

data
object[]
required
total
number
required
nextCursor
string | null
required

Opaque cursor for the page after this one; null on the last page.

prevCursor
string | null
required

Opaque cursor for the page before this one; null on the first page. Lists on the signed cursor standard return a real backwards cursor; older lists echo the request cursor.

pageOffset
number | null

Zero-based position of the first row of this page within total (for "Showing 26-50 of 268" and page numbers); null when unknown.