Prerequisites
- Magento 2.4.x, Open Source or Adobe Commerce, served over HTTPS with a certificate from a publicly-trusted CA, and reachable from the public internet. Private hostnames, self-signed certificates, and plain HTTP are rejected.
- A dedicated Integration created for Semji — never a personal admin user’s token. See Step 1.
- The Integration’s API permissions (Resource Access) granted as listed in API permissions for the Integration.
- On Magento 2.4.4 and above: the setting “Allow OAuth Access Tokens to
be used as standalone Bearer tokens” enabled — see
Step 1. Without it, every request
returns
401even with a valid token. - If a firewall, WAF, or anti-bot protection (Fastly, Cloudflare, Akamai, …) sits in front of your store, it must allow Semji’s IP addresses on the REST API path — see Firewalls and IP allowlisting.
- You are a workspace owner in Semji. The connection is shared with the whole workspace.
Step 1 — Prepare your Magento store
Create a dedicated Integration
Grant the API permissions
Activate and copy the Access Token
On Magento 2.4.4+ — allow tokens as standalone Bearer tokens
API permissions for the Integration
On the Integration’s API tab, with Resource Access set to Custom, tick the following checkboxes:401, re-open the
Integration, re-select the resources, and save again. A partially saved
custom selection can leave the permission state inconsistent, and a clean
re-save repairs it.Step 2 — Connect from Semji
Open the CMS integrations
Enter your store's credentials
- Store URL — the canonical HTTPS base URL of your store, e.g.
https://your-store.com. Semji does not follow redirects, so use the exact URL your store resolves to (wwwvs non-wwwmatters). - Integration access token — the Access Token copied in Step 1.
GET /rest/all/V1/store/websites on your store with the token.Pick the Magento tools
- List store views — read the store views and their base URLs.
- Describe content model — inspect the writable fields of pages, blocks, products and categories.
- List contents — browse and search CMS pages, blocks, products and categories.
- Read contents — retrieve a page, block, product or category and its content.
- Create & update content — create and update CMS pages and blocks, update product and category content.
- Delete content — delete CMS pages and blocks.
Activate
What Semji can do once connected
- Products and categories are never created or deleted — Semji only updates the content fields of entities that already exist.
- Product and category edits go live immediately (Magento has no draft state for them), so agents show the exact field-by-field change and wait for your explicit validation before writing.
- Page and block updates are lossless. Magento’s save endpoints replace the whole entity, so Semji reads the current entity, merges only the fields the agent changed, and writes the full payload back — anything the agent did not touch is preserved.
- Deletion is never exposed to publishing agents. Even with the Delete tool enabled, Semji’s CMS Publisher agent is deliberately not given access to it.
Store views
Magento content is per store view: the same page, product, or category can carry different content on each store view.- Agents read the store views first and target an explicit store view when you name a specific store, language, or locale.
- On multi-store installations, agents verify that the entry they are about to touch belongs to your workspace’s website before writing, and refuse to modify content that belongs to another site hosted on the same Magento instance.
- Product and category writes never target Magento’s
allscope — a known Magento issue can silently reassign website associations on writes scoped toall.
Manage or disconnect
From Settings → Integrations → CMS, the Magento row offers:- Manage tools — enable or disable each tool individually.
- Disconnect — remove the integration for the whole workspace.
Firewalls and IP allowlisting
Semji’s servers call your store’s REST Admin API directly. If your store sits behind Fastly, Cloudflare, or another WAF, you must allow those calls or the connection will fail. Semji’s servers reach the internet through a fixed set of outbound IP addresses. If a firewall, WAF, or anti-bot protection (Cloudflare, Akamai, Sucuri, …) sits in front of your site, it can block Semji’s requests — typically with a403 Forbidden — before they ever reach your CMS, even when your credentials are correct.
Allow the following Semji IP addresses:
/rest/*). On stores where the
edge layer rate-limits or challenges API traffic, exempt Semji’s addresses
from those rules as well.
Troubleshooting
"Magento rejected the request. Check the integration access token, that the Integration's API permissions (Resource Access) are granted, and, on Magento 2.4.4+, that 'Allow OAuth Access Tokens to be used as standalone Bearer tokens' is enabled."
"Magento rejected the request. Check the integration access token, that the Integration's API permissions (Resource Access) are granted, and, on Magento 2.4.4+, that 'Allow OAuth Access Tokens to be used as standalone Bearer tokens' is enabled."
401 status for three different problems —
check them in order:- The token value is wrong — re-copy the Access Token from the Integration (System → Extensions → Integrations). Note that re-creating or re-authorizing an Integration generates a new token.
- On Magento 2.4.4+, the Bearer setting is off — enable “Allow OAuth Access Tokens to be used as standalone Bearer tokens” (see Step 1) and flush the cache.
- The Integration lacks API permissions — Magento answers
401with “The consumer isn’t authorized to access %resources” naming the missing ACL resource. Grant every checkbox in API permissions for the Integration, save again, and retry.
401, the token
and the Bearer setting are fine — the remaining 401s are missing
permissions."The Magento REST API was not found at this URL."
"The Magento REST API was not found at this URL."
GET /rest/all/V1/store/websites returned a 404. Frequent causes:- The Store URL is wrong or points to a specific store-view path. Enter the bare base URL of the store.
- The URL redirects. Semji follows no redirects: if
https://example.comredirects tohttps://www.example.com, enter thewwwURL. - A reverse proxy in front of Magento strips or blocks the
/restpath.
"Your store's security layer blocked our request."
"Your store's security layer blocked our request."
403, or a non-JSON
challenge page) instead of Magento. Allow Semji’s IP addresses on
/rest/* — see
Firewalls and IP allowlisting."The store cannot be reached."
"The store cannot be reached."
- DNS failure or host down.
- The store is too slow — responses must arrive within 10 seconds.
- The URL points to a private or reserved address — localhost and private-network hosts are rejected; the store must be publicly reachable.
An agent reports an authentication or permission error on one action
An agent reports an authentication or permission error on one action
A product or category update went live immediately
A product or category update went live immediately
URL validation errors before submitting
URL validation errors before submitting
- “Please enter a valid URL.” — the value does not parse as a URL.
- “The store URL must start with https://.” — HTTP stores cannot be connected.
- “The store URL points to a private or reserved address, which is not allowed.” — the store must be publicly reachable.
Related
- Sync drafts to your CMS — API-based publishing flow, if you prefer to drive the sync yourself.