Webly
WeblyDocs

Endpoints

Every operation from the live route table.

API reference

Every operation lists its operationId (also the MCP tool's origin), the capability a key needs, and its rate-limit class. Base URL /v1. Request and response fields are documented in the guide; the machine-readable spec is /openapi.json.

ClassBurstSustained
standard120600/min
expensive2030/min

Websites

POST/v1/websites
Create a website (starts as an empty draft)websites.create websites.create organization
GET/v1/websites
List websites the key can accesswebsites.list websites.read organization
GET/v1/websites/{id}
Get a website with headVersion, publishedVersion, urlswebsites.get websites.read
PATCH/v1/websites/{id}
Rename a website or change slug/descriptionwebsites.update websites.manage
PATCH/v1/websites/{id}/subdomain
Rename the platform subdomainwebsites.renameSubdomain websites.manage
DELETE/v1/websites/{id}
Soft-delete a website and take it offlinewebsites.delete websites.manage
POST/v1/websites/{id}/transfer
Start transferring a website to another organization (returns a one-time code)websites.transferStart websites.manage
GET/v1/websites/{id}/transfer
Pending transfer of a website, if anywebsites.transferGet websites.manage
DELETE/v1/websites/{id}/transfer
Cancel a pending transferwebsites.transferCancel websites.manage
POST/v1/websites/transfers/accept
Accept a website transfer into your organization with its codewebsites.transferAccept websites.create organization
POST/v1/websites/{id}/restore
Restore a soft-deleted websitewebsites.restore websites.manage
POST/v1/websites/claim-codes
Get a 10-minute code that lets the local Webly helper claim a website created without an account, so the agent never reads the wa_ secretwebsites.claimCode websites.read organization
POST/v1/websites/claims
Claim a website created without an account (wa_ token) into the signed-in person's personal workspacewebsites.claimAnonymous websites.read organization
POST/v1/websites/{id}/activate
Activate a claimed website on Base or Maxwebsites.activate websites.manage expensive

Analytics

GET/v1/websites/{id}/analytics
Page views, visitors, top pages/referrers/countries over a periodanalytics.get analytics.read
GET/v1/websites/{id}/analytics/query
Engagement totals (page views, visitors, visits, bounces, time) for a range, optionally broken down by one dimensionanalytics.query analytics.read
GET/v1/websites/{id}/analytics/timeseries
Page views and sessions (or custom events) over time, bucketed by unitanalytics.timeseries analytics.read
GET/v1/websites/{id}/analytics/realtime
Traffic snapshot for the trailing 30 minutesanalytics.realtime analytics.read

Publishing

POST/v1/websites/{id}/publish
Publish the head versionpublishing.publish publishing.manage expensive
POST/v1/websites/{id}/unpublish
Take the site offlinepublishing.unpublish publishing.manage
POST/v1/websites/{id}/rollback
Re-publish an earlier versionpublishing.rollback publishing.manage expensive
POST/v1/websites/{id}/rebuild
Re-render a built version with current CMS contentpublishing.rebuild publishing.manage expensive

Source and versions

POST/v1/websites/{id}/head/restore
Copy published or a version into a new headsource.restoreHead source.write
POST/v1/websites/{id}/deploy
Deploy files (multipart) into a new head versionsource.deployMultipart source.write expensive
POST/v1/websites/{id}/deploy/json
Deploy files (JSON) into a new head versionsource.deploy source.write expensive
GET/v1/websites/{id}/source/summary
headVersion, publishedVersion, hasUnpublishedChangessource.summary source.read
GET/v1/websites/{id}/source/files
List files in a versionsource.listFiles source.read
GET/v1/websites/{id}/source/files/read
Read one filesource.readFile source.read
POST/v1/websites/{id}/source/files/read
Read up to 50 filessource.readFiles source.read
DELETE/v1/websites/{id}/source/files
Delete files from head as a new versionsource.deleteFiles source.write
GET/v1/websites/{id}/source/versions
Version historysource.listVersions source.read
GET/v1/websites/{id}/source/changes
Files that differ between two versionssource.changes source.read

Deployments

GET/v1/websites/{id}/deployments/status
Build status for a versiondeployments.status source.read
POST/v1/websites/{id}/deployments/ensure
Build a version ahead of timedeployments.ensure source.write expensive

Framework source

POST/v1/websites/{id}/source/lease
Acquire the single edit lease for a website (replaces the previous one)code.acquireLease source.write
GET/v1/websites/{id}/source/tree
List typed source files (pages, components, modules, singletons)code.listFiles source.read
GET/v1/websites/{id}/source/file
Read one typed source filecode.readFile source.read
POST/v1/websites/{id}/source/file/read
Read up to 50 typed source filescode.readFiles source.read
PUT/v1/websites/{id}/source/file
Create or replace a source file (new head version)code.putFile source.write
DELETE/v1/websites/{id}/source/file
Delete a source file (new head version)code.deleteFile source.write
POST/v1/websites/{id}/source/str-replace
Atomic exact-string edits across files (supports dryRun)code.strReplace source.write
PATCH/v1/websites/{id}/source/pages/route
Change a page's route literalcode.setPageRoute source.write
PATCH/v1/websites/{id}/source/metadata
Replace a page's metadata or the site defaultscode.setMetadata source.write
GET/v1/websites/{id}/source/file/diff
Unified diff of one file between two versionscode.diffFile source.read
POST/v1/websites/{id}/head/check
Run the quality gate on head (lint, typecheck, bundle, render); read-onlycode.check source.read expensive

Pages

POST/v1/websites/{id}/pages
Create a page recordpages.create pages.write
GET/v1/websites/{id}/pages
List page recordspages.list pages.read
GET/v1/websites/{id}/pages/{pageId}
Get a page recordpages.get pages.read
PATCH/v1/websites/{id}/pages/{pageId}
Update a page recordpages.update pages.write
DELETE/v1/websites/{id}/pages/{pageId}
Delete a page recordpages.delete pages.write

CMS

GET/v1/websites/{id}/schema
Full CMS schema snapshotcms.schema cms.schema.read
POST/v1/websites/{id}/collections
Create a collectioncms.collections.create cms.schema.write
GET/v1/websites/{id}/collections
List collectionscms.collections.list cms.schema.read
GET/v1/websites/{id}/collections/{colId}
Get a collection with fieldscms.collections.get cms.schema.read
PATCH/v1/websites/{id}/collections/{colId}
Update a collectioncms.collections.update cms.schema.write
DELETE/v1/websites/{id}/collections/{colId}
Delete a collectioncms.collections.delete cms.schema.write
POST/v1/websites/{id}/collections/{colId}/fields
Add a fieldcms.fields.add cms.schema.write
PATCH/v1/websites/{id}/fields/{fieldId}
Update a fieldcms.fields.update cms.schema.write
DELETE/v1/websites/{id}/fields/{fieldId}
Delete a fieldcms.fields.delete cms.schema.write
POST/v1/websites/{id}/collections/{colId}/items
Create an itemcms.items.create cms.items.write
GET/v1/websites/{id}/collections/{colId}/items
List items (search, filter, sort, depth)cms.items.list cms.items.read
GET/v1/websites/{id}/items/find
Find an item by id or collection+slugcms.items.find cms.items.read
GET/v1/websites/{id}/items/{itemId}
Get an itemcms.items.get cms.items.read
PATCH/v1/websites/{id}/items/{itemId}
Update an itemcms.items.update cms.items.write
DELETE/v1/websites/{id}/items/{itemId}
Soft-delete an itemcms.items.delete cms.items.write
POST/v1/websites/{id}/items/{itemId}/restore
Restore a deleted itemcms.items.restore cms.items.write
POST/v1/websites/{id}/items/{itemId}/set-published
Publish, schedule, or unpublish an itemcms.items.setPublished cms.items.write
GET/v1/websites/{id}/items/{itemId}/backreferences
Items referencing this itemcms.items.backreferences cms.items.read

Blog

GET/v1/websites/{id}/blog
Blog status: collection, whether the site renders it, URLsblog.get cms.items.read
GET/v1/websites/{id}/blog/posts
List blog posts (published by default)blog.posts.list cms.items.read
POST/v1/websites/{id}/blog/posts
Add a blog post; sets up the collection and pages on first useblog.posts.create cms.items.write
PATCH/v1/websites/{id}/blog/posts/{postId}
Edit, publish or unpublish a blog post (by id or slug)blog.posts.update cms.items.write

Assets

POST/v1/websites/{id}/assets
Upload an asset in one multipart requestassets.upload assets.write
POST/v1/websites/{id}/assets/uploads
Begin a two-step upload (returns a presigned PUT)assets.beginUpload assets.write
POST/v1/websites/{id}/assets/import
Import up to 10 public media URLs server-side as ready assetsassets.import assets.write
PUT/v1/websites/{id}/assets/{assetId}/upload
Local-storage upload target (dev only)assets.putBytes assets.write
POST/v1/websites/{id}/assets/{assetId}/finalize
Finalize a two-step uploadassets.finalize assets.write
GET/v1/websites/{id}/assets
List or search assetsassets.list assets.read
GET/v1/websites/{id}/assets/{assetId}
Get an assetassets.get assets.read
PATCH/v1/websites/{id}/assets/{assetId}
Update description, category, alt textassets.update assets.write
DELETE/v1/websites/{id}/assets/{assetId}
Archive an assetassets.delete assets.write
POST/v1/websites/{id}/assets/{assetId}/variants
Eagerly produce a resized/re-encoded image variant (width, height, fit, format, quality)assets.createVariant assets.write

objects

POST/v1/websites/{id}/objects/uploads
Begin uploading a batch of files into one folder (presigned PUTs; multipart parts over 100 MiB)objects.beginUpload assets.write
POST/v1/websites/{id}/objects/{objectId}/resume
Resume an unfinished upload: which parts already landed, and fresh URLs for the restobjects.resumeUpload assets.write
PUT/v1/websites/{id}/objects/{objectId}/upload
Local-storage upload target (dev only)objects.putBytes assets.write
POST/v1/websites/{id}/objects/finalize
Finalize uploaded objects (checks the bytes landed, stitches multipart uploads)objects.finalize assets.write
GET/v1/websites/{id}/objects/{objectId}/entries
List the files inside an archive upload, with their linksobjects.entries assets.read
GET/v1/websites/{id}/objects
List a storage site's objects, optionally in one folderobjects.list assets.read
PATCH/v1/websites/{id}/objects/{objectId}
Rename a file as listings show it (its link stays the same)objects.rename assets.write
POST/v1/websites/{id}/objects/{objectId}/move
Move a file into another folder (its link changes)objects.move assets.write
PATCH/v1/websites/{id}/objects/folders/{folder}
Set or clear a folder's display name (its link stays the same)objects.labelFolder assets.write
DELETE/v1/websites/{id}/objects/folders/{folder}
Permanently delete every file in a folderobjects.deleteFolder assets.write
DELETE/v1/websites/{id}/objects/{objectId}
Permanently delete an object and free its storageobjects.delete assets.write

storage

GET/v1/storage/uploads
Uploads in progress across the workspace, with progress (they don't count as used storage)storage.uploads.list assets.read organization
DELETE/v1/storage/uploads
Cancel every unfinished upload (or one website's), freeing the in-flight allowancestorage.uploads.clear assets.write organization

Forms

GET/v1/websites/{id}/forms
Forms that received submissions, with countsforms.list forms.read
GET/v1/websites/{id}/forms/{form}/submissions
List submissions of a form (status filter, cursor; format=csv exports)forms.submissions.list forms.read
GET/v1/websites/{id}/forms/{form}/submissions/{submissionId}
Get a submission (marks it read)forms.submissions.get forms.read
PATCH/v1/websites/{id}/forms/{form}/submissions/{submissionId}
Set a submission's status: new, read, archived, spamforms.submissions.update forms.write
DELETE/v1/websites/{id}/forms/{form}/submissions/{submissionId}
Permanently delete a submissionforms.submissions.delete forms.write

Domains

GET/v1/domains
List custom domains across every website in the organizationdomains.listAll domains.read organization
POST/v1/websites/{id}/domains
Add a custom domaindomains.add domains.write
GET/v1/websites/{id}/domains
List platform and custom domainsdomains.list domains.read
GET/v1/websites/{id}/domains/{domainId}
Get a domaindomains.get domains.read
POST/v1/websites/{id}/domains/{domainId}/verify
Re-check DNS and SSLdomains.verify domains.write
POST/v1/websites/{id}/domains/{domainId}/primary
Set the canonical hostnamedomains.setPrimary domains.write
DELETE/v1/websites/{id}/domains/{domainId}
Remove a custom domaindomains.remove domains.write

API keys

POST/v1/api-keys
Create a scoped API key (plaintext shown once)apiKeys.create apiKeys.manage organization
GET/v1/api-keys
List API keysapiKeys.list apiKeys.manage organization
GET/v1/api-keys/{keyId}
Get an API key's metadataapiKeys.get apiKeys.manage organization
PATCH/v1/api-keys/{keyId}
Update name, expiry, or accessapiKeys.update apiKeys.manage organization
POST/v1/api-keys/{keyId}/rotate
Rotate the secret (old secret stops working immediately)apiKeys.rotate apiKeys.manage organization
DELETE/v1/api-keys/{keyId}
Revoke an API keyapiKeys.revoke apiKeys.manage organization

members

GET/v1/members
List organization membersmembers.list members.read organization
PATCH/v1/members/{userId}
Update a member's rolemembers.update members.manage organization
DELETE/v1/members/{userId}
Remove a membermembers.remove members.manage organization
GET/v1/members/invitations
List pending organization invitationsmembers.invitations.list members.read organization
POST/v1/members/invitations
Invite a teammate by emailmembers.invitations.create members.manage organization
DELETE/v1/members/invitations/{invitationId}
Cancel a pending organization invitationmembers.invitations.cancel members.manage organization

collaborators

GET/v1/websites/{id}/collaborators
List website collaboratorscollaborators.list websites.manage
POST/v1/websites/{id}/collaborators/invitations
Invite a client to one website by emailcollaborators.invite websites.manage
GET/v1/websites/{id}/collaborators/invitations
List pending website invitationscollaborators.invitations.list websites.manage
DELETE/v1/websites/{id}/collaborators/invitations/{invitationId}
Cancel a pending website invitationcollaborators.invitations.cancel websites.manage
DELETE/v1/websites/{id}/collaborators/{userId}
Remove a website collaboratorcollaborators.remove websites.manage

Billing

GET/v1/billing
The workspace's plan, website usage and limit, and available plansbilling.get billing.read organization
POST/v1/billing/checkout
Start Stripe Checkout for a paid plan (returns a URL)billing.checkout billing.manage organization
POST/v1/billing/sync
Apply a finished Checkout session (the dashboard calls this on return from Stripe)billing.sync billing.manage organization
POST/v1/billing/portal
Open the Stripe customer portal: change plan, card, invoices, cancelbilling.portal billing.manage organization

Me

GET/v1/me
The authenticated principal and its capabilitiesme websites.read organization

feedback

POST/v1/feedback
Send product feedback from the dashboardfeedback.send websites.read organization

Audit log

GET/v1/audit-log
Organization audit trailauditLog.list auditLog.read organization