ParrotPosterParrotPoster
Getting started
Accounts
Posts
Automation
API
Site
  • English
  • Русский
Getting started
Accounts
Posts
Automation
API
Site
  • English
  • Русский
  • Introduction
  • Quick start
  • API methods

    • Authentication
    • Social accounts
    • Posts

      • Posts
      • Post object
      • Getting posts
      • Creating a post
      • Updating a post
      • Deleting a post
  • Errors

Getting posts

There are two queries: post — a single post by ID, posts — a list of posts with filters and pagination. Both require a token; write access is not needed, so they also work with a read-only token.

A single post: post

query {
  post(id: "post_id") {
    id
    status
    fields {
      text
    }
    publishAt
    results {
      accountId
      success
      linkToSocialPost
      errorMsg
    }
  }
}

Response:

{
  "data": {
    "post": {
      "id": "post_id",
      "status": "SUCCESS",
      "fields": { "text": "This post was published successfully" },
      "publishAt": "2026-01-13T12:00:00Z",
      "results": [
        {
          "accountId": "account_vk",
          "success": true,
          "linkToSocialPost": "https://vk.com/wall-111222333_7777",
          "errorMsg": null
        }
      ]
    }
  }
}

You can get only your own post. For someone else's or a non-existent post an error is returned (forbidden / not_found, see Errors). All fields are described in Post object.

How to know a post is published

Publishing is asynchronous. Watch status: SUCCESS — everything is published, FAIL — an error in at least one social network (details in results[].errorMsg). Keep the rate limit in mind if you poll the status in a loop.

Post list: posts

The query returns the current user's posts page by page (cursor pagination, Relay connection format). Deleted posts are not included by default.

query {
  posts(
    first: 20
    filter: { lifecycle: SCHEDULED }
    sort: { publishAt: ASC }
  ) {
    nodes {
      id
      status
      publishAt
      fields {
        text
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

To get the next page, pass endCursor in the after argument:

query {
  posts(first: 20, after: "cursor_from_endCursor") {
    nodes {
      id
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Arguments

ArgumentTypeDescription
firstIntHow many posts to return
afterStringCursor (pageInfo.endCursor) to continue from
filterPostFilterFilter (see below)
sortPostSortSorting: { publishAt: ASC } or { publishAt: DESC }. Default is DESC

PostFilter

FieldTypeDescription
lifecyclePostLifecycleALL, PUBLISHED, or SCHEDULED (drafts are not included)
draftBooleantrue — only unpublished drafts
deletedBooleantrue — only deleted posts (trash). By default only active posts
publishAtMinDateTimeOnly posts with publishAt not earlier than the given time (inclusive)
fromPlatformOnly posts created from the given platform
hasPipelineBooleantrue — only posts created by automation; false — only manual or API posts
pipelineIdIDOnly posts of the given automation

Result

FieldDescription
nodesList of posts (Post objects)
edgesThe same with each post's cursor: edges { cursor node { ... } }
pageInfohasNextPage, endCursor (forward navigation), hasPreviousPage, startCursor

To get the whole list, page through results until hasNextPage is false.

Post count

To get the total number of posts with the same filters, use postsCount:

query {
  postsCount(filter: { lifecycle: SCHEDULED })
}
Edit on GitHub
Last updated: 10/10/26, 2:44 AM
Prev
Post object
Next
Creating a post