Skip to main content
GET
/
v1
/
posts
List posts (post log)
curl --request GET \
  --url https://api.letmepost.dev/v1/posts \
  --header 'Authorization: Bearer <token>'
{
  "data": [
    {
      "id": "<string>",
      "profileId": "<string>",
      "accountId": "<string>",
      "account": {
        "id": "<string>",
        "platformAccountId": "<string>",
        "displayName": "<string>"
      },
      "text": "<string>",
      "mediaRefs": [
        "<unknown>"
      ],
      "scheduledAt": "2023-11-07T05:31:56Z",
      "publishedAt": "2023-11-07T05:31:56Z",
      "platformUri": "<string>",
      "platformCid": "<string>",
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z",
      "error": "<unknown>"
    }
  ],
  "nextCursor": "<string>"
}

Authorizations

Authorization
string
header
required

Mint an API key in the dashboard. See https://letmepost.dev/docs/authentication/.

Query Parameters

profileId
string<uuid>
platform
enum<string>[]

Supported platforms. tiktok is currently in App Review — connect requests return platform_not_enabled until approval lands.

Available options:
bluesky,
facebook,
instagram,
linkedin,
pinterest,
threads,
tiktok,
twitter
status
enum<string>[]

Lifecycle state of a single per-target post row. canceled is the terminal state reached via DELETE /v1/posts/{id} on a queued scheduled post.

Available options:
queued,
validated,
publishing,
published,
failed,
rejected,
canceled
errorCode
string[]
q
string

Case-insensitive substring match on the post body. Wildcard characters are matched literally.

Required string length: 1 - 200
after
string<date-time>

ISO-8601 lower bound on createdAt (exclusive).

before
string<date-time>

ISO-8601 upper bound on createdAt (exclusive).

limit
integer
default:50
Required range: 1 <= x <= 200
cursor
string

Response

Page of posts.

data
object[]
required
nextCursor
string | null
required