Make a zone the organization's default zone
PUT/api/public/v1/zones/{zone_id}/default
The default zone serves agents with no resolved owner and no manual assignment, existing ones included; the root serves when none is chosen. Swapping clears the previous default in the same transaction. dry_run=true answers moving — the agents whose zone would change — and writes nothing. PUT on the root clears any default; on the zone that already is the default it is a no-op answering moving: 0.
curl --fail-with-body -X PUT 'https://app.openlatch.ai/api/public/v1/zones/<zone_id>/default' \ -H "Authorization: Bearer $OPENLATCH_API_KEY"import jsonimport osimport urllib.request
request = urllib.request.Request( 'https://app.openlatch.ai/api/public/v1/zones/<zone_id>/default', method='PUT', headers={ 'Authorization': 'Bearer ' + os.environ['OPENLATCH_API_KEY'], },)with urllib.request.urlopen(request) as response: text = response.read().decode() print(json.dumps(json.loads(text), indent=2) if text else response.status)#!/usr/bin/env bashset -euo pipefail
curl -sS --fail-with-body -X PUT 'https://app.openlatch.ai/api/public/v1/zones/<zone_id>/default' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" | jq .$headers = @{ Authorization = "Bearer $env:OPENLATCH_API_KEY"}Invoke-RestMethod -Method PUT -Uri 'https://app.openlatch.ai/api/public/v1/zones/<zone_id>/default' -Headers $headers | ConvertTo-Json -Depth 20Authorization
Section titled “Authorization”| Role in the organization | This endpoint |
|---|---|
owner | Allowed |
admin | Allowed |
editor | Not allowed |
viewer | Not allowed |
A key carries the role its owner holds in the organization. See Authentication.
API key scope: zones:write
Path parameters
Section titled “Path parameters”| Parameter | Type | Description |
|---|---|---|
zone_id | string (uuid) | Required. |
Query parameters
Section titled “Query parameters”| Parameter | Type | Description |
|---|---|---|
dry_run | boolean | Count the agents that would move and change nothing. |
Header parameters
Section titled “Header parameters”| Parameter | Type | Description |
|---|---|---|
Idempotency-Key | string or null | Optional. Makes the request safe to retry: the same key and the same request, within 24 hours, returns the stored response with Idempotent-Replayed: true and runs once. |
Response
Section titled “Response”- 200 OK — the call succeeded.
- 400 Bad Request —
BAD_REQUEST - 401 Unauthorized —
UNAUTHORIZED - 402 Payment Required —
license_expired - 403 Forbidden —
FEATURE_DISABLED,FORBIDDEN,INSUFFICIENT_SCOPE - 404 Not Found —
NOT_FOUND,ZONE_NOT_FOUND - 409 Conflict —
DEFAULT_CONFLICT,IDEMPOTENCY_IN_PROGRESS - 422 Unprocessable Content —
IDEMPOTENCY_KEY_REUSED,INVALID_ID,VALIDATION_ERROR - 429 Too Many Requests —
TOO_MANY_REQUESTS - 500 Internal Server Error —
INTERNAL_SERVER_ERROR,tenant_isolation_violation - 503 Service Unavailable —
FEATURE_STATE_UNAVAILABLE,SERVICE_UNAVAILABLE
Response fields
Section titled “Response fields”| Field | Type | Description |
|---|---|---|
moving | integer | Required. |
Example response
Section titled “Example response”{ "moving": 3}