This is the architecture behind JacAI's plugin auth, scheduler API, and content-push endpoints — the same contracts our own WordPress plugins use. The public API surface at api.jacai.ai is still being finished; this page documents the shape it's being built to.
Relevant Bot and AutoPoster authenticate with a per-site key pair rather than one global plugin key — so revoking one customer's access never affects another.
site_id — public identifier for the connected WordPress site.site_secret — random secret, generated on connect, stored securely.
Every request carries X-JacAI-Site, X-JacAI-Timestamp, and X-JacAI-Signature — an HMAC-SHA256 of timestamp + method + path + body_hash, signed with site_secret. Stale timestamps are rejected.
Relevant Bot scans a customer's WordPress site — posts, pages, WooCommerce products — and pushes a normalized content object to JacAI, which decides what happens next.
{
"id": "wp-382",
"site_id": "site_abc123",
"source": "wordpress",
"type": "post",
"title": "How to Repair a Leaking Gutter",
"url": "https://example.com/post",
"excerpt": "...",
"content": "...",
"categories": ["Gutter Repair"],
"tags": ["DIY", "Rain Gutters"],
"language": "en",
"featured_image": "...",
"published_at": "...",
"modified_at": "...",
"campaign_status": "unused"
}
JacAI Core then decides: ignore, archive, campaign candidate, refresh article, translate, social snippets, reel, or sales post. SZAM only receives content once it reaches scheduling stage.
SZAM decides when content goes out. It doesn't publish anything itself — it hands due jobs back to the SMM router.
{
"organization_id": 12,
"campaign_item_id": 998,
"target": "instagram",
"country": "BR",
"language": "pt-BR",
"timezone": "America/Sao_Paulo",
"content_type": "reel",
"best_time": true
}
Your WordPress install stays lightweight — the heavy AI work runs in JacAI Cloud, not on your server.
Publishes and republishes content straight from your site, driven by JacAI campaigns and SZAM's schedule.
Scans posts, pages, and WooCommerce products and pushes them to JacAI Core as content candidates. Final V2 build underway — normalized schema, campaign-state tracking, and authenticated push.
Python 3.11+, SQLAlchemy, Pydantic, Uvicorn — a real worker service, not a JSON queue file. Deployed as an internal service on scheduler.jacai.ai, called by PHP over a signed internal request rather than exposed raw.