Как создать материал в Joomla 6 через REST API

Joomla имеет встроенный Web Services API, с помощью которого внешние программы, скрипты и сервисы могут работать с данными сайта через HTTP-запросы. Один из практических сценариев – автоматическое создание материалов без входа к панели администратора.
В этом примере рассмотрим создание материала в Joomla 6 через REST API: подготовим API Token, сформируем endpoint, отправим JSON-запрос и проверим работу через Postman или CURL.
Web Services API позволяет внешним системам взаимодействовать с Joomla через определены API endpoints. Вместо прямой работы с базой данных клиент отправляет HTTP-запрос в Joomla, а CMS самостоятельно выполняет проверку проверки подлинности, прав доступа и полученных данных.
Через API можно, в частности:
- получать материалы;
- создавать новые материалы;
- изменять существующие материалы;
- удалять материалы;
- строить интеграцию Joomla с внешними системами.
Для создания материала используется HTTP-метод POST.
Перед отправкой первого запроса необходимо подготовить:
- сайт на Joomla 6;
- пользователь Joomla с необходимыми правами;
- API Token этого пользователя;
- ID категории, в которой будет создан материал;
- URL сайта;
- HTTP-клиент, например Postman или cURL.
Важно. API выполняет операции с правами пользователя, которому принадлежит токен. Поэтому для интеграции лучше использовать отдельного пользователя и предоставить ему только необходимые разрешения.
Базовый адрес Web Services API формируется от домена сайта. Например, для:
https://example.org
базовый URL API будет:
https://example.org/api/index.php/v1
Для работы с материалами используется endpoint:
content/articles
Полный адрес для создания материала:
https://example.org/api/index.php/v1/content/articles
Защищенные API-запросы должны выполняться от имени пользователя Joomla, имеющий соответствующие права доступа.
Для стандартной аутентификации по API Token токен передается в HTTP-заголовке:
X-Joomla-Token: YOUR_API_TOKEN
Для запроса JSON также используются заголовки:
Accept: application/vnd.api+json
Content-Type: application/json
X-Joomla-Token: YOUR_API_TOKEN
Никогда не публикуйте API Token. Не добавляйте его в открытый Git-репозиторий, frontend JavaScript или другого кода, доступного посетителям сайта.
Для создания нового материала необходимо отправить
POST-запрос на:
https://example.org/api/index.php/v1/content/articles
Данные материала передаются в JSON. Пример базового набора полей:
{
"title": "Мой новый материал",
"alias": "moy-novyj-material",
"articletext": "<p>Пример материала, созданного через REST API в Joomla 6.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}
Значение catid: 2 приведено только в качестве примера.
В запросе необходимо передать ID реально существующей категории вашего сайта.
| Поле | Назначение |
|---|---|
title |
Название материала. |
alias |
Alias материала, который Joomla может использовать при формировании URL. |
articletext |
Основное содержание материала. Значение может содержать HTML. |
catid |
ID категории Joomla. |
language |
Язык материала. Значение * означает все языки. |
metadesc |
Meta Description материала. |
metakey |
Meta Keywords. |
Для проверки API без написания отдельного приложения удобно использовать Postman.
-
Создайте новый запрос и выберите метод
POST. -
Укажите адрес:
https://example.org/api/index.php/v1/content/articles -
Добавьте HTTP-заголовки:
Accept: application/vnd.api+json Content-Type: application/json X-Joomla-Token: YOUR_API_TOKEN - В разделе Body выберите raw → JSON.
-
Передайте JSON с данными материала:
{ "title": "Тестовый материал Joomla API", "alias": "testovyi-material-joomla-api", "articletext": "<p>Материал создан через API.</p>", "catid": 2, "language": "*", "metadesc": "", "metakey": "" } - Нажмите программную клавишу Send.
Если endpoint, токен, права пользователя и переданные данные корректны, Joomla обработает запрос и вернет ответ API.
Тот же запрос можно выполнить из командной строки:
curl -X POST "https://example.org/api/index.php/v1/content/articles" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-H "X-Joomla-Token: YOUR_API_TOKEN" \
-d' {
"title": "Мой первый материал",
"alias": "moy-novyj-material",
"articletext": "<p>Пример материала, созданного через REST API в Joomla 6.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}'
Замените example.org на домен сайта,
YOUR_API_TOKEN — на реальный API Token,
а catid – на ID нужной категории.
| код HTTP | Что проверить |
|---|---|
400 |
Корректность JSON и наличие данных, которые ожидают API endpoint. |
401 |
API Token и заголовок аутентификации. |
403 |
Пользовательские права, ACL и разрешения на работу с нужной категорией. |
404 |
URL API и правильность endpoint. |
API Token фактически позволяет выполнять действия от имени пользователя, поэтому доступ к нему нужно защищать так же внимательно, как учетные данные администратора
- используйте HTTPS;
- не передавайте токен в frontend-код;
- не публикуйте токен в Git;
- создавайте для интеграций отдельных пользователей;
- предоставляйте API-пользователю только необходимые ACL-права;
- при утечке токена замените или отзовите его;
- проверьте интеграцию на тестовом сайте перед запуском в production.
Создание материалов через API особенно полезно там, где контент поступает из внешней системы или должен создаваться автоматически.
Например:
- импорт материалов из другой CMS;
- синхронизация с внутренней системой компании;
- автоматическое формирование контента со стороннего сервиса;
- собственная административная программа для работы с Joomla;
- интеграция мобильного или веб-приложения с Joomla.
Встроенный REST API Joomla позволяет создавать материалы без прямого доступа
в базу данных и без автоматизации панели администратора.
Для создания материала достаточно сформировать
POST-запрос в content/articles,
передать API Token в заголовке X-Joomla-Token
и отправить данные материала в формате JSON.
На основе этого механизма можно строить импорт контента, интеграции с внешними сервисами и инструменты автоматизации Joomla.
Использованные источники:
Joomla Programmers Documentation — Web Services
JoomTech Solutions — How to Create Articles with the Joomla 6 REST API