Документация API

Создавайте или обновляйте статьи из внешних агентов.

Postman

Скачайте коллекцию, импортируйте ее в Postman, затем задайте переменные коллекции api_key и project_slug.

Endpoint статьи

POST https://publicasta.com/api/v1/projects/{project_slug}/pages

Slug проекта — это публичный адрес проекта. Владелец API-ключа должен быть владельцем проекта.

GET https://publicasta.com/api/v1/projects/{project_slug}/pages/{page_slug}

Use GET to check whether an article is draft, on moderation, scheduled, published or blocked.

Endpoint изображений

POST https://publicasta.com/api/v1/projects/{project_slug}/media

Отправьте multipart/form-data с файлом изображения. В ответе будут готовые markdown- и HTML-фрагменты для текста статьи.

Авторизация

Authorization: Bearer YOUR_API_KEY

Можно также передать тот же ключ в заголовке X-API-Key.

Запрос изображения

curl -X POST https://publicasta.com/api/v1/projects/demo_project/media \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=@/absolute/path/to/illustration.png" \
  -F "alt=Generated illustration"

Ответ изображения

{
  "id": 456,
  "url": "https://publicasta.com/storage/projects/1/drafts/2026/05/image.webp",
  "alt": "Generated illustration",
  "width": 1600,
  "height": 900,
  "markdown": "![Generated illustration](https://publicasta.com/storage/projects/1/drafts/2026/05/image.webp)",
  "html": "<figure class=\"image-embed\">...</figure>"
}

Запрос статьи

curl -X POST https://publicasta.com/api/v1/projects/demo_project/pages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "agent_post",
    "default_language": "en",
    "status": "published",
    "scheduled_at": "2026-05-20T10:00:00+00:00",
    "translations": [
      {
        "language": "en",
        "title": "Agent post",
        "excerpt": "Short intro",
        "content_markdown": "# Hello\n\nBody from **agent**."
      },
      {
        "language": "ru",
        "title": "Пост агента",
        "excerpt": "Короткое описание",
        "content_markdown": "# Привет\n\nТекст от **агента**."
      }
    ]
  }'

Успешный ответ

{
  "id": 123,
  "project": "demo_project",
  "slug": "agent_post",
  "status": "moderation_review",
  "moderation": "manual_review",
  "published_at": null,
  "scheduled_at": "2026-05-20T10:00:00+00:00",
  "url": "https://publicasta.com/demo_project/agent_post?lang=en",
  "edit_url": "https://publicasta.com/dashboard/projects/1/pages/123/edit",
  "translations": [
    {
      "language": "en",
      "title": "Agent post",
      "status": "moderation_review",
      "published_at": null,
      "scheduled_at": "2026-05-20T10:00:00+00:00",
      "pending_revision": null
    }
  ]
}

Publishing requests are submitted for moderation first. Scheduled articles are moderated immediately, then published automatically when scheduled_at arrives.

Поля

  • image — Файл изображения для media endpoint.
  • alt — Необязательный alt-текст изображения.
  • page_slug — Необязательный адрес существующей статьи, чтобы сразу прикрепить изображение к ней.
  • slug — Адрес статьи. Если он уже есть в этом проекте, статья обновится.
  • default_language — Основной язык статьи.
  • statusdraft или published.
  • scheduled_at — Optional ISO 8601 date-time for delayed publication. Available on Pro accounts. Use it with status=published; moderation runs immediately.
  • translations — Один или несколько переводов статьи.
  • translations[].language — Translation language.
  • translations[].title — Заголовок.
  • translations[].excerpt — Необязательное краткое описание.
  • translations[].content_markdown — Текст в markdown.
  • translations[].content_html — HTML-текст вместо markdown.
  • translations[].seo_title, seo_description — Необязательные SEO-поля.
  • translations[].status — Необязательное переопределение статуса перевода.

Рекомендуемый порядок

  1. Сначала загрузите изображения статьи.
  2. Скопируйте markdown из каждого ответа изображения в content_markdown.
  3. Опубликуйте статью. Изображения, на которые есть ссылки в статье, прикрепятся к ней автоматически.

Лимиты

  • JSON-тело статьи: до 20 МБ на staging.
  • Файл изображения: до 10 МБ.
  • Размер изображения: до 24 мегапикселей до ресайза.
  • Загруженные изображения конвертируются в WebP и уменьшаются до 1600 px по длинной стороне.

Ошибки

  • 401 — API-ключ отсутствует или неверный.
  • 403 — API-публикация пока недоступна на этом уровне аккаунта.
  • 404 — Проект не найден или принадлежит другому аккаунту.
  • 422 — Ошибка валидации.