ParrotPosterParrotPoster
Начало работы
Аккаунты
Публикации
Автоматизация
API
Сайт
  • English
  • Русский
Начало работы
Аккаунты
Публикации
Автоматизация
API
Сайт
  • English
  • Русский
  • Введение
  • Начало работы
  • Методы API

    • Аутентификация
    • Аккаунты соцсетей
    • Посты

      • Посты
      • Структура Post
      • Получение постов
      • Создание поста
      • Обновление поста
      • Удаление поста
  • Ошибки

Получение постов

Есть два запроса: post — один пост по идентификатору, posts — список постов с фильтрами и постраничной навигацией. Оба требуют токен; право записи не нужно, поэтому они работают и с токеном «только чтение».

Один пост: post

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

Ответ:

{
  "data": {
    "post": {
      "id": "post_id",
      "status": "SUCCESS",
      "fields": { "text": "Этот пост был успешно опубликован" },
      "publishAt": "2026-01-13T12:00:00Z",
      "results": [
        {
          "accountId": "account_vk",
          "success": true,
          "linkToSocialPost": "https://vk.com/wall-111222333_7777",
          "errorMsg": null
        }
      ]
    }
  }
}

Можно получить только свой пост. Для чужого или несуществующего поста возвращается ошибка (forbidden / not_found, см. Ошибки). Все поля — в разделе Структура Post.

Как узнать, что пост опубликован

Публикация асинхронна. Следите за status: SUCCESS — всё опубликовано, FAIL — ошибка хотя бы в одной соцсети (подробности в results[].errorMsg). Помните про лимит запросов, если опрашиваете статус в цикле.

Список постов: posts

Запрос возвращает посты текущего пользователя постранично (курсорная пагинация, формат Relay-connection). Удалённые посты по умолчанию не включаются.

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

Чтобы получить следующую страницу, передайте endCursor в аргумент after:

query {
  posts(first: 20, after: "курсор_из_endCursor") {
    nodes {
      id
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Аргументы

АргументТипОписание
firstIntСколько постов вернуть
afterStringКурсор (pageInfo.endCursor) с которого продолжить
filterPostFilterФильтр (см. ниже)
sortPostSortСортировка: { publishAt: ASC } или { publishAt: DESC }. По умолчанию DESC

Фильтр PostFilter

ПолеТипОписание
lifecyclePostLifecycleALL, PUBLISHED (опубликованные) или SCHEDULED (запланированные; черновики сюда не входят)
draftBooleantrue — только неопубликованные черновики
deletedBooleantrue — только удалённые (корзина). По умолчанию только активные
publishAtMinDateTimeТолько посты с publishAt не раньше указанного времени (включительно)
fromPlatformТолько посты, созданные с указанной платформы
hasPipelineBooleantrue — только созданные автоматизацией; false — только вручную или через API
pipelineIdIDТолько посты указанной автоматизации

Результат

ПолеОписание
nodesСписок постов (объекты Post)
edgesТо же с курсором каждого поста: edges { cursor node { ... } }
pageInfohasNextPage, endCursor (для вперёд-навигации), hasPreviousPage, startCursor

Чтобы получить весь список, листайте страницами, пока hasNextPage равен true.

Количество постов

Чтобы узнать общее число постов с теми же фильтрами, используйте postsCount:

query {
  postsCount(filter: { lifecycle: SCHEDULED })
}
Редактировать в Github
Последнее обновление: 10.10.2026, 02:44
Prev
Структура Post
Next
Создание поста