Set workspace public access

PUT
/v1/public-access/settings/workspace

Sets the workspace's own row: workspace-wide off, and caps every agent and key stays under. A key may tighten (turn off, lower a cap); enabling, raising a cap, turning the bot check off or changing its keys needs a workspace admin, and a key that asks gets 403 forbidden. Send the row's version as If-Match to avoid overwriting a newer change.

Requires an API key with the public_access:write scope.

Authorization

apiKey
headerAuthorizationBearer <token>

A secret API key from the dashboard (Developers → API keys): vl_live_…, or vl_test_… for test mode. Each operation says which scope the key needs.

Header Parameters

if-match?string

The version of the row this edit was made from. A stale one is refused with 409 version_conflict instead of overwriting a newer change. Leave it out when creating a row.

Length1 <= length <= 20

Request Body

application/json
  1. body

The settings to put on the workspace.

settings*

The fields to set; any you leave out inherit from the level above.

note?string

Why the change was made; kept in the change log.

Lengthlength <= 500

Response Body

The row after the change

application/json
  1. response
id*string
Formatuuid
scopeKind*string
Value in"workspace""agent""binding"
agentId*|
Formatuuid
bindingId*|
Formatuuid
enabledForAgentId*|
Formatuuid
settings*
version*integer
updatedBy*string
updatedAt*string
Formatdate-time
Example Request
curl -X PUT https://api.vlayers.ai/v1/public-access/settings/workspace \  -H "Authorization: Bearer $VOICELAYER_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "settings": {      "enabled": false    },    "note": "Pausing public sessions during the launch review"  }'
Example Response
{  "id": "0192f5c1-5e6f-7a8b-9c0d-1e2f3a4b5c67",  "scopeKind": "workspace",  "agentId": null,  "bindingId": null,  "enabledForAgentId": null,  "settings": {    "enabled": false  },  "version": 4,  "updatedBy": "user_2abc",  "updatedAt": "2026-10-20T15:04:05.000Z"}