ПубликацииОпубликовать публикацию

Публикации

Опубликовать публикацию

Live-приложения публикуют сразу, планируют по дате или сохраняют черновик; тестовые только имитируют. С ?dry_run=true всё проверяется, ничего не записывается.

POSThttps://api.sofia-post.com/api/v1/posts
POST/v1/posts

Этот запрос действует на ваш реальный аккаунт.

curl -X POST 'https://api.sofia-post.com/api/v1/posts' \
  -H "Authorization: Bearer $SOFIA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"establishmentId":"cmvy2k3m40001ms4rest00000","targets":[{"platform":"instagram","text":"Tarte tatin du jour","format":"post","accountId":"cmvy2k3m40001ms4rig000000"}],"scheduledAt":"2026-11-02T10:00:00.000Z"}'

Авторизации

  • Authorizationstringобязательно

    Ваш личный ключ или токен доступа OAuth, отправляется как Bearer <token>.

Параметры запроса

  • dry_runstring

    true: выполняет все проверки отправки (правила сетей, аккаунты, медиа, создание, live-подписка) и ничего не записывает. Возвращает 200 ready или 422 post_refused.

    Допустимые значения: truefalse

Заголовки

  • Idempotency-Keystring

    При повторе с тем же телом запрос возвращает тот же ответ и не создаёт вторую публикацию. Пробный запуск не расходует ключ.

Тело

application/json

  • establishmentIdstringобязательно

    Заведение в Workspace авторизации токена (GET /v1/establishments)

  • targetsobject[]обязательно

    Одна сеть на цель

    Показать дочерние атрибуты
    • platformstringобязательно

      Целевая сеть

      Допустимые значения: instagramfacebookxlinkedintiktok

    • textstringобязательно

      Подпись, публикуемая в этой сети

    • mediaobject[]

      Прикреплённые медиа

      Показать дочерние атрибуты
      • idstring

        Идентификатор медиа из медиатеки заведения (иначе url и type)

      • urlstring

        Публичный адрес медиа (https в live); без идентификатора

      • typestring

        Тип медиа, заданного адресом

        Допустимые значения: imagevideo

    • formatstring

      Формат (post, reel, story, carousel...); по умолчанию тот, что выдала бы сеть

    • accountIdstring

      Live: подключённый аккаунт, который публикует, если у заведения их несколько в этой сети (GET /v1/establishments/:id/accounts)

  • scheduledAtstring<date-time>

    Дата планирования (ISO 8601), в будущем; не указана: публиковать сразу. Недопустима вместе с status draft

  • statusstring

    draft: черновик (только live), создаётся без даты, ничего не отправляется; PATCH /v1/posts/:id планирует его

    Допустимые значения: draft

Ответ

200application/json

Пробный запуск: все проверки пройдены.

  • statusstringобязательно

    Всегда ready

    Допустимые значения: ready

  • dryRunbooleanобязательно

    Всегда true

    Допустимые значения: true

  • targetsobject[]обязательно

    Проверенные цели

    Показать дочерние атрибуты
    • platformstringобязательно

      Сеть цели

    • statestringобязательно

      Всегда ready

      Допустимые значения: ready

    • accountIdstring

      Live: аккаунт, который опубликовал бы

    • handlestring

      Live: его отображаемый handle

201application/json

Live: publishing или scheduled. Тест: simulated.

  • idstringобязательно

    Идентификатор публикации, чтобы прочитать её через GET /v1/posts/:id

  • statusstringобязательно

    Состояние публикации при создании

    Допустимые значения: draftpublishingscheduled

  • establishmentIdstringобязательно

    Заведение публикации

  • targetsobject[]обязательно

    Цели публикации

    Показать дочерние атрибуты
    • platformstringобязательно

      Сеть цели

    • accountIdstringобязательно

      Аккаунт, который публикует

    • statestringобязательно

      Состояние цели при создании

      Допустимые значения: draftpublishingscheduledfailed

  • scheduledAtstring<date-time>

    Когда публикация запланирована к выходу

400

Неверное тело запроса.

401

Токен отсутствует, неизвестен, просрочен или отозван.

402

subscription_required (live, включая пробный запуск).

403

У токена нет разрешения posts:write.

404

establishment_not_found: вне Workspace токена.

422application/json

post_refused: сеть, заведение или создание отказало бы; media_import_refused (live) с причиной; idempotency_key_reused.

4XXapplication/json

Любая другая ошибка в конверте ошибки.