Changelog
Versioning, deprecations, and what shipped.
The API is versioned in the URL path (/v1/...). Within a major
version, we add fields and endpoints; we do not break existing ones.
Breaking changes ship as a new major (/v2/...) with at least 12 months
of overlap before the previous major is sunset.
Phase 1 — Developer platform GA
The first developer-facing release. Everything below is live on /v1.
Added — 2026-09-02 · Create page + create design
POST /v1/pages— mint a new landing page from a brief + CTA and compose its tree (scopepages:write). OmittedbrandIduses the workspace default brand;409 brand_requiredwhen none exists.POST /v1/compositions— mint a Designer canvas (defaultig-square). New scopecompositions:write(included in the Author and Full presets). Existing keys do not gain it until re-issued or the preset is refreshed.- MCP
create_page/create_composition. - CLI
genie pages create/genie designs create(aliasgenie compositions create). - SDKs
gos.pages.create/gos.designs.create(Node + Python sync/async).gos.compositionsis an alias ofgos.designs. - In-app Genie chats discover the same ops via
platform.find-tools/platform.call-tool— they do not HTTP to MCP.
Added — 2026-08-18 · Archive short links
DELETE /v1/links/{linkId}— soft-delete a short link. The slug stays reserved; visitors are sent to the Link Genie landing page. Mirrored on MCP (archive_short_link) and the Node SDK (gos.links.archive).
Added — 2026-08-08 · Links deep surface — get/patch, analytics, QR, webhooks
GET /v1/links/{linkId}/PATCH /v1/links/{linkId}— read and update short links (password, expiry, scheduled go-live, route rules including city, UTM, labels, tags). Create already accepted the same advanced fields; they are now documented and mirrored on MCP / CLI / SDKs.GET /v1/links/analytics— click analytics cards (Glow+ rich cards, same gates as the SPA).POST /v1/qr,PATCH /v1/qr/{qrId},POST /v1/qr/{qrId}/render— create / update / render QR designs. Formats:svg|png|webp|png-print(2 credits) |pdfprint-with-bleed (5 credits, every tier). OptionalsaveToAssetswrites into the workspace DAM.- Custom short domains documented as Spark+ (1 host on Spark / Glow / Ignite; unlimited on Star+), not Ignite+.
- Webhooks —
link.clicked,link.created,link.updated,link.archived,link.abuse_flagged,link.disabled_for_abuse,link.reinstated(Glow+). Typed on@genie-os/sdkWebhookEventName. - MCP
get_short_link,update_short_link,read_link_analytics,create_qr_design,update_qr_design,render_qr_design; widenedcreate_short_link. - CLI
genie links get|update|analytics,genie qr create|render. - SDKs Node
links.get/update/analytics+qr.*; Python sync/async mirrors the same.
Added — 2026-08-05 · Short-link UTM tagging + prior-value suggestions
POST /v1/linksaccepts optionalutm(source/medium/campaign/content/term), plustagsanddomain. UTMs are stamped onto the redirect destination at click time.GET /v1/links— list existing short links.GET /v1/links/utm-suggestions— frequency-ranked prior UTM values (same history as the Links designer autocomplete) so agents can suggest reuse before minting.- MCP
list_short_links,list_utm_suggestions, andcreate_short_link(with UTM). Prefer suggestions → offer → create. - CLI
genie links creategains--utm-source/--utm-medium/--utm-campaign/--utm-content/--utm-term/--tags. - SDKs
@genie-os/sdklinks.list/links.utmSuggestions/ typedlinks.create;@genie-os/cli;@genie-os/mcp(stdio bridge — tool schemas always come from the live server).
Added — 2026-07-20 · Email template create + compose
POST /v1/templates— create a blank draft email (scopetemplates:write). Same seed as New email in the designer.POST /v1/templates/compose— Genie writes an email from a natural-languagepromptand persists it as a draft. Charges compose-template credits; hero image gen off by default (includeHeroImage: trueopts in).- MCP
create_template/compose_template. - CLI
genie templates create/genie templates compose. - SDKs
@genie-os/[email protected]—gos.templates.create/gos.templates.compose; Python[email protected]mirrors the same;@genie-os/[email protected].
Added — 2026-07-13 · Organic social Phase 1.5 — compose + live analytics
POST /v1/social/postsmode: "compose"— Genie writes captions from abrief(chargessocial-post-compose; optionalcomposersonnet|opus).GET /v1/social/posts/{id}/analytics?refresh=true— poll provider metrics now (same path as the SPA Refresh button).POST /v1/social/networks/refresh— re-sync company networks (SPA Networks parity); MCPrefresh_social_networks.- MCP
create_social_postacceptsmode/brief/composer;get_social_post_analyticsacceptsrefresh.
Added — 2026-07-13 · Organic social on REST + MCP
GET /v1/social/networks— connected company social accounts./v1/social/posts— create (copy-in), list, read, patch, schedule, publish, delete, and cached analytics. See API reference.- MCP tools
list_social_networks,create_social_post,schedule_social_post,publish_social_post, and siblings — see MCP. - Scopes
social:posts:read|write|publish(Send / Full presets include publish). - Webhooks
social.post.created|scheduled|published|failed|deleted.
Schedule and publish reuse the live SPA stack (Ayrshare + native X / LinkedIn) — not a Firestore-only stamp. Company identities only; personal profiles are never exposed via API/MCP.
Added
- REST API surface for workspace, templates, transactional, sequences,
events, webhooks, and audit. See API reference and
/v1/openapi.json. - Schema contract on every template. Sends are validated server-side; the contract is the source of truth for the SDK codegen.
- Idempotency on every mutating endpoint, with a 24-hour deduplication window. See Idempotency.
- Per-key + per-workspace rate limits, with
X-RateLimit-*headers andRetry-Afteron 429s. See Rate limits. - Signed webhooks with HMAC-SHA256, exponential-backoff retries (8 attempts over 31 hours), and replay. See Webhooks.
- Node SDK
@genie-os/sdk— typed end-to-end, ESM + CJS, retries + auto-idempotency + webhook verifier. - Python SDK
genieos— sync + async clients, Pydantic-typed, mirrors the Node SDK 1:1. - Genie MCP at
mcp.genieos.pro/v1— native Cursor / Claude / Continue / Zed via Model Context Protocol. See MCP. @genie-os/mcpstdio bridge for editors that prefer stdio JSON-RPC.genieCLI — terminal access to the workspace; see CLI.- Audit log queryable from
/v1/audit, withactor.kinddistinguishing API, MCP, and dashboard writes.
Compatibility
- All
/v0endpoints (the closed beta) are now removed. If you\u2019re still on/v0paths, see the migration notes below.
Migration from /v0
Three breaking changes you\u2019ll have hit:
/v0/sendis gone. UsePOST /v1/transactional/sendwithtemplate+variablesinstead ofsubject+body.- Webhooks now sign with HMAC-SHA256 over
t=...|body. The/v0shape (X-MailGenius-Signature: <hex>) is no longer accepted. Idempotency-Keyis now required onPOST /transactional/sendfor workspaces on the Pro plan and above. The default-failing rejection isvalidation_error / idempotency_key_invalid.
A /v0 \u2192 /v1 cheat-sheet is available on request —
[email protected].
Versioning policy
- Additive within a major. New optional fields, new endpoints, new response fields, new event types — all safe to add without bumping the major.
- Breaking changes bump the major. Renamed fields, narrowed types, removed endpoints, new required fields, semantic changes to existing fields — all bump.
- Deprecation window. A removed endpoint or field is announced via
the
DeprecationandSunsetHTTP headers at least 6 months before removal, and at least 12 months before the major it lived in is sunset.
If you read Sunset headers off responses, you can subscribe to the
api.deprecation webhook event to get a structured copy of the same
notice.
RSS / JSON feeds
This page is also served as JSON at
https://docs.genieos.pro/changelog.json (coming
soon) so changelog crawlers and the dashboard\u2019s "What\u2019s new"
panel can ingest it. RSS is on the way.
Want to be told?
The fastest way to hear about API changes is to subscribe a webhook to
the api.changelog.published event. Once Phase 2 lands, you\u2019ll
also be able to subscribe via genie logs tail --type api.*.