Using CMS AI Agent with Joomla
Everything you need for Joomla, in the order you will actually do it. If you are stuck, the last section has the real error messages and what each one means.
Switch these on first
- Two plugins switched on in System → Plugins. This is the step everybody misses, and nothing works until both are on: Web Services - Content, and API Authentication - Web Services Joomla Token.
- An API token, generated in the Joomla administrator under Users → Manage: edit a user, open the Joomla API Token tab, and create one. The account needs Administrator or Super User rights.
- Joomla 4 or newer. Joomla 3 has no Web Services API at all, and there is nothing that can be switched on to give it one.
Connecting your website
- In CMS AI Agent, add your website by its address — the same one you type into a browser, including https://.
- We check the address and tell you what we found: that it is Joomla, which version, and whether its Web Services API is answering at /api/.
- Paste the API token. It is long, and it is shown to you only once — if you have lost it, generate a new one rather than guessing.
- Choose what the connection may do: read only, write drafts, change SEO. It is never "everything", and you can change it afterwards.
- That is all. Nothing is installed on your Joomla site — no extension, no plugin of ours, no file. Joomla's own Web Services API is the whole connection.
What you can ask for on Joomla
-
Read content
Looking at what is already on the website: the list of pages and posts, who wrote each one, when it last changed, whether it is published, and the full text of any one of them.
"Which pages have not been touched in over a year?"
-
Create content
Adding something that was not there before: a new page, a new post, a new entry of whatever kind your website uses. It arrives as a draft, with a title, the body text and a short summary, ready for you to read before anyone else can.
"Add a page about our new opening hours and leave it as a draft."
-
Edit content
Changing something that is already there: the title, the body text, the summary. You are told exactly which items were touched, and your website keeps its own history of what they said before.
"Change the phone number on the Contact page to the new one."
-
Publish content
Moving something between draft, published and private. This is the step that decides whether the public can see a page, which is why it is a thing you ask for on purpose rather than something that happens on the way past.
"Publish the draft about the Saturday market."
-
Schedule content
Setting a date and a time in the future for something to appear, so a post written on a Tuesday afternoon goes live on Monday morning with nobody at a keyboard.
"Set the Christmas opening hours post to go live on the first of December."
-
Manage images and files
Putting images and files onto the website and filling in the text that belongs with them: the title, the caption, and the alt text that a screen reader speaks and a search engine reads in place of the picture.
"Put last week's photos into the gallery and write alt text for each one."
-
Manage categories and tags
Organising content so people can find it: which category a post sits in, which tags it carries, and creating a new category or tag where there is a real need for one.
"Put all the recipe posts into the Recipes category."
-
Edit SEO information
The text that does not appear on the page but decides how the page looks in a search result and when somebody shares it: the SEO title, the description under it, and the alt text on images.
"Which pages have no SEO description? Write one for each of them."
-
Manage menus
The menus a visitor clicks: adding an item, renaming one, putting them in a different order, moving one underneath another.
"Add the new Opening Hours page to the main menu, after Contact."
-
Site information
The plain facts about the website: what it is called, what software and which version it runs, how many pages and posts it holds, which languages it is written in, and when it last changed.
"How many pages does my website have, and when was each one last updated?"
-
Administrative information
What is installed, what has an update waiting, and who has an account on the website. Reads only: it cannot install, update, activate or remove a plugin or theme, change a setting, or add or change a user.
"Is anything on my website waiting for an update?"
What it will not do on Joomla
Joomla has no way to do this, so this agent does not offer it. What it would have meant:
-
Custom content types
Few websites hold only pages and posts. A property site has properties, a restaurant has dishes, a school has courses. This is working with those, in their own fields, instead of forcing everything to be a blog post.
-
Bulk changes
The same change across many items at once. Nothing happens straight away: you are shown the whole list first, with the value as it is now beside the value proposed for it, and it runs only after you have said yes. It can be stopped partway and it can be undone.
-
Manage redirects
Sending an old address to a new one, so a link somebody saved or a result still sitting in Google lands on the right page instead of an error. It can also list everything that is already being sent somewhere else.
Worth knowing about Joomla
- An article is in exactly one category and carries many tags. That is Joomla's model rather than a limitation here, so asking for an article to be in two categories is refused with the reason rather than quietly putting it in the last one named.
- Joomla keeps no title, caption or alt text against a file. Those are written where the image is used, inside the article — so images can be listed and uploaded, but there is nothing on the file itself to label.
- The meta description can be written and read back. The browser title cannot: Joomla keeps it inside the article's own attributes rather than as a field, and a request to change it is refused with that reason.
- An article's body comes back as one piece of text, because Joomla joins its intro and full text before handing them over. Writing puts everything in the intro and empties the full text, which is the behaviour that keeps an article whole rather than silently split.
When something goes wrong
The failures people actually meet, with the exact words CMS AI Agent will show you. The message is in English wherever you are, because that is what the software says.
The site is clearly Joomla and clearly online, but the check says the API is off.
What you will see
What to do
This is the two-plugin problem, and it is the single most common failure on Joomla. Go to System → Plugins, search for "Web Services", and enable Web Services - Content. Then search for "API Authentication" and enable API Authentication - Web Services Joomla Token. Both. One on its own gives a 404 that looks exactly like the API not existing.
The token is refused.
What you will see
What to do
Check it was copied in full — it is long and easy to truncate — and that the "API Authentication - Web Services Joomla Token" plugin is on. With that plugin off, Joomla ignores the token entirely and every token looks wrong.
The token is accepted, but no content can be read.
What you will see
What to do
The token belongs to an account without enough rights. Generate a new one on an account with Administrator or Super User rights — the token carries that account's permissions and nothing more.
The site answers in a browser but turns us away, often with "Not Acceptable".
What you will see
What to do
Something in front of Joomla is blocking us: a security extension, Cloudflare, or the host's firewall. "Not Acceptable" is usually ModSecurity on shared hosting. Ask your host to allow requests to /api/, or add an exception in the security extension.
We reach the site but find no Joomla API at all.
What you will see
What to do
Check the address is right — a missing www or a redirect to another domain is the usual cause. If the address is right, check the Joomla version: Joomla 3 has no Web Services API, and no plugin adds one.