Core / Zones
Zones
Zones (documents) within a space: lifecycle, metadata, versioning, and per-zone sharing.
GET
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta
Get zone metadata
Get zone metadata
OperationREAD
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"data": {
"zone_info": {
"created_time": "Tue, 15 Jul 2025, 10:49:13",
"zone_id": "c606cdb1-ae46-47a6-847b-0a36caf9f797",
"last_modified_time": "Tue, 29 Jul 2025, 13:46:46",
"zone_key": "3009000000701095",
"zone_name": "Zone 1",
"space_id": "3009000000701079",
"author_zuid": "96384499",
"last_author_zuid": "96384499",
"status": "ACTIVE"
}
},
"message": "Zone metadata fetched successfully.",
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000701079/zones/c606cdb1-ae46-47a6-847b-0a36caf9f797/meta",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "Z1011",
"message": "Zone is not in an active state",
"space_id": "3009000000789069"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000789069/zones/e42f51ec-e4dc-4dc5-9587-7a2e49dcdc2e/meta",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "3009000000789069"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000789069/zones/e42f51ec-e4dc-4dc5-9587-7a2e49dcdc2e/meta",
"status": "error"
}
Forbidden - the caller is authenticated but not allowed to perform this operation
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "S1033",
"message": "Restricted zone",
"space_id": "3009000000789069"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000789069/zones/e42f51ec-e4dc-4dc5-9587-7a2e49dcdc2e/meta",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Errors
6 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 403 Forbidden - the caller is authenticated but not allowed to perform this operation 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta
Get metadata for all zones in a space
Get metadata for all zones in a space
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
Query parameters fields
| Name | Type | Description |
|---|---|---|
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
created_timelast_modified_timezone_nameauthor_zuidstatuslast_author_zuidspace_idstate_modified_time
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"data": {
"zones_info": {
"zone_order": [
"0e1e3a8a-a115-463e-bdb6-f540ab37eeb6",
"6F961124-4598-47D6-9BDA-1705DFBA07D7",
"598356E6-5F86-45FA-A7D5-ED8BB6D40DAE"
],
"zone_meta": {
"598356E6-5F86-45FA-A7D5-ED8BB6D40DAE": {
"created_time": "Tue, 04 Feb 2025, 11:34:28",
"zone_name": "Zone 3"
},
"0e1e3a8a-a115-463e-bdb6-f540ab37eeb6": {
"created_time": "Tue, 28 Jan 2025, 11:59:50",
"zone_name": "Zone 1"
},
"6F961124-4598-47D6-9BDA-1705DFBA07D7": {
"created_time": "Tue, 04 Feb 2025, 11:34:26",
"zone_name": "Zone 2"
}
}
}
},
"message": "Zone metadata fetched successfully.",
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000095397/zones/meta",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "1505000000022005"
}
},
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/meta",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/meta",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move
Move a zone to another space
Move a zone to another space
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| move_zone REQUIRED | object | move zone. Max length: 11000 (required) | |
| destination_type REQUIRED | string |
destination type.
NEW_SPACEEXISTING_SPACE
|
|
| space_name | string | space name | |
| deep_copy | boolean | deep copy | |
| team_id | string | team id | |
| destination_space_id | string | destination space id | |
| copy_comments | boolean | copy comments |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"move_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"team_id": "60712000000123456",
"destination_space_id": "60712000000123456",
"copy_comments": true
}
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"move_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"team_id": "60712000000123456",
"destination_space_id": "60712000000123456",
"copy_comments": true
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"move_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"team_id": "60712000000123456",
"destination_space_id": "60712000000123456",
"copy_comments": true
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"move_zone\":{\"destination_type\":\"NEW_SPACE\",\"space_name\":\"Sample name\",\"deep_copy\":true,\"team_id\":\"60712000000123456\",\"destination_space_id\":\"60712000000123456\",\"copy_comments\":true}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"move_zone": {"destination_type": "NEW_SPACE", "space_name": "Sample name", "deep_copy": true, "team_id": "60712000000123456", "destination_space_id": "60712000000123456", "copy_comments": true}};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"move_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"team_id": "60712000000123456",
"destination_space_id": "60712000000123456",
"copy_comments": true
}
}
Response
Successful response
{
"data": {
"space_info": {
"created_time": "Mon, 10 Mar 2025, 10:42:20",
"last_modified_time": "Mon, 10 Mar 2025, 10:42:20",
"is_favorite": "false",
"space_name": "Project proposal",
"publish": "false",
"owner_zuid": "96384499",
"can_edit": "true",
"allow_embed": "false",
"team_id": "693000000435005",
"space_id": "693000000569361",
"last_author_zuid": "96384499",
"status": "ACTIVE"
}
},
"message": "Zone moved successfully",
"request_uri": "/vani/api/v1/editions/75918186/spaces/693000000569005/zones/4a971774-9ea7-4f1b-94c8-7199a254d6ba/move",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "693000000481013"
}
},
"request_uri": "/vani/api/v1/editions/75918186/spaces/693000000481013/zones/61fae7ca-ebcc-4ab9-881c-07b1aa9c814b/move",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "S1009",
"message": "Space not found",
"space_id": "69300000569005"
}
},
"request_uri": "/vani/api/v1/editions/75918186/spaces/69300000569005/zones/b313272b-fa45-4111-b61d-de64a0044260/move",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/move",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones
Create a new zone
Create a new zone
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| create_zone REQUIRED | object | create zone. Max length: 11000 (required) | |
| zone_name REQUIRED | string | zone name (required) | |
| template_id | string | template id |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"create_zone": {
"zone_name": "Sample name",
"template_id": "60712000000123456"
}
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"create_zone": {
"zone_name": "Sample name",
"template_id": "60712000000123456"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"create_zone": {
"zone_name": "Sample name",
"template_id": "60712000000123456"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"create_zone\":{\"zone_name\":\"Sample name\",\"template_id\":\"60712000000123456\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"create_zone": {"zone_name": "Sample name", "template_id": "60712000000123456"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"create_zone": {
"zone_name": "Sample name",
"template_id": "60712000000123456"
}
}
Response
Successful response
{
"data": {
"zone_info": {
"created_time": "Fri, 25 Jul 2025, 06:01:52",
"zone_id": "ee01ded6-158e-4729-99b0-257ab23be6d1",
"last_modified_time": "Fri, 25 Jul 2025, 06:01:52",
"zone_name": "Zone 2",
"space_id": "4855000000088149",
"last_author_zuid": "888015717",
"author_zuid": "888015717",
"status": "ACTIVE"
}
},
"message": "Zone created successfully.",
"request_uri": "/vani/api/v1/editions/888012145/spaces/4855000000088149/zones",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "300900000005397"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/300900000005397/zones",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "S1030",
"message": "Template not found",
"space_id": "3009000000419047"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000419047/zones",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "85572652",
"current_user_id": "96384499",
"error_code": "Z1010",
"message": "Zone creation limit reached",
"space_id": "1600000000657005"
}
},
"request_uri": "/vani/api/v1/editions/85572652/spaces/1600000000657005/zones",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones",
"status": "error"
}
Errors
6 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 409 Conflict - the requested change conflicts with the current resource state 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates
Insert a template into a zone
Insert a template into a zone
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.zones.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| template_id REQUIRED | string | Template asset global id to insert (max length 50) | |
| placement | string |
Placement mode: AUTO, AT_POSITION, or NEAR_POSITION (max length 30)
AUTOAT_POSITIONNEAR_POSITION
|
|
| position | object | Required for AT_POSITION and NEAR_POSITION | |
| top | number | Top coordinate in zone space | |
| left | number | Left coordinate in zone space |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"template_id": "60712000000123456",
"placement": "AUTO",
"position": {
"top": 1.5,
"left": 1.5
}
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"template_id": "60712000000123456",
"placement": "AUTO",
"position": {
"top": 1.5,
"left": 1.5
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"template_id": "60712000000123456",
"placement": "AUTO",
"position": {
"top": 1.5,
"left": 1.5
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"template_id\":\"60712000000123456\",\"placement\":\"AUTO\",\"position\":{\"top\":1.5,\"left\":1.5}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"template_id": "60712000000123456", "placement": "AUTO", "position": {"top": 1.5, "left": 1.5}};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"template_id": "60712000000123456",
"placement": "AUTO",
"position": {
"top": 1.5,
"left": 1.5
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/templates",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate
Duplicate a zone
Duplicate a zone
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| duplicate_zone REQUIRED | object | duplicate zone. Max length: 11000 (required) | |
| destination_type REQUIRED | string |
destination type.
NEW_SPACESAME_SPACEEXISTING_SPACE
|
|
| space_name | string | space name | |
| deep_copy | boolean | deep copy | |
| zone_name | string | zone name | |
| version_id | string | version id | |
| team_id | string | team id | |
| copy_members | boolean | copy members | |
| destination_space_id | string | destination space id | |
| copy_comments | boolean | copy comments |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"duplicate_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"zone_name": "Sample name",
"version_id": "60712000000123456",
"team_id": "60712000000123456",
"copy_members": true,
"destination_space_id": "60712000000123456"
}
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"duplicate_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"zone_name": "Sample name",
"version_id": "60712000000123456",
"team_id": "60712000000123456",
"copy_members": true,
"destination_space_id": "60712000000123456"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"duplicate_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"zone_name": "Sample name",
"version_id": "60712000000123456",
"team_id": "60712000000123456",
"copy_members": true,
"destination_space_id": "60712000000123456"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"duplicate_zone\":{\"destination_type\":\"NEW_SPACE\",\"space_name\":\"Sample name\",\"deep_copy\":true,\"zone_name\":\"Sample name\",\"version_id\":\"60712000000123456\",\"team_id\":\"60712000000123456\",\"copy_members\":true,\"destination_space_id\":\"60712000000123456\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"duplicate_zone": {"destination_type": "NEW_SPACE", "space_name": "Sample name", "deep_copy": true, "zone_name": "Sample name", "version_id": "60712000000123456", "team_id": "60712000000123456", "copy_members": true, "destination_space_id": "60712000000123456"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"duplicate_zone": {
"destination_type": "NEW_SPACE",
"space_name": "Sample name",
"deep_copy": true,
"zone_name": "Sample name",
"version_id": "60712000000123456",
"team_id": "60712000000123456",
"copy_members": true,
"destination_space_id": "60712000000123456"
}
}
Response
Successful response
{
"data": {
"space_id": "693000000598369",
"uri": "/vani/api/v1/editions/75918186/spaces/693000000598369/zones/meta"
},
"message": "Zone duplicated successfully",
"request_uri": "/vani/api/v1/editions/75918186/spaces/693000000562161/zones/8915a5e7-ba1a-4ef9-8f25-75a873ff7f10/duplicate",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "69300000562248"
}
},
"request_uri": "/vani/api/v1/editions/75918186/spaces/69300000562248/zones/91c26965-0165-4b48-b976-16c924498a8c/duplicate",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "Z1008",
"message": "Zone not found",
"space_id": "693000000562248"
}
},
"request_uri": "/vani/api/v1/editions/75918186/spaces/693000000562248/zones/11c26965-0165-4b48-b976-16c924498a8c/duplicate",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/duplicate",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
PUT
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta
Update zone metadata
Update zone metadata
OperationUPDATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.UPDATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| zone_name REQUIRED | string | zone name (required) |
Request
PUT
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"zone_name": "Sample name"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"zone_name": "Sample name"
}
response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta'),
method: 'PUT',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"zone_name": "Sample name"
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"zone_name\":\"Sample name\"}";
HttpRequest request = requestBuilder
.PUT(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"zone_name": "Sample name"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta"
type: PUT
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"zone_name": "Sample name"
}
Response
Successful response
{
"data": {
"zone_id": "598356E6-5F86-45FA-A7D5-ED8BB6D40DAE",
"edition_id": "97375109",
"current_user_id": "96384499",
"space_id": "1505000000022005",
"new_name": "Budget Report"
},
"message": "Zone name updated successfully.",
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/598356E6-5F86-45FA-A7D5-ED8BB6D40DAE/meta",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"zone_id": "a5fcca17-e9dd-414f-850d-0b920645b05d",
"edition_id": "98723605",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "5265000000003011"
}
},
"request_uri": "/vani/api/v1/editions/98723605/spaces/5265000000003011/zones/a5fcca17-e9dd-414f-850d-0b920645b05d/meta",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"zone_id": "198356E6-5F86-45FA-A7D5-ED8BB6D40DAE",
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "Z1008",
"message": "Zone not found",
"space_id": "1505000000022005"
}
},
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/198356E6-5F86-45FA-A7D5-ED8BB6D40DAE/meta",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"zone_id": "598356E6-5F86-45FA-A7D5-ED8BB6D40DAE",
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "Z1001",
"message": "Zone name is same as the new name",
"space_id": "1505000000022005"
}
},
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/598356E6-5F86-45FA-A7D5-ED8BB6D40DAE/meta",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/meta",
"status": "error"
}
Errors
6 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 409 Conflict - the requested change conflicts with the current resource state 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
PUT
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state
Update zone state
Update zone state
OperationUPDATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.UPDATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| zone_state REQUIRED | string |
zone state.
RESTORETRASHDELETE
|
Request
PUT
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"zone_state": "RESTORE"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"zone_state": "RESTORE"
}
response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state'),
method: 'PUT',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"zone_state": "RESTORE"
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"zone_state\":\"RESTORE\"}";
HttpRequest request = requestBuilder
.PUT(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"zone_state": "RESTORE"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state"
type: PUT
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"zone_state": "RESTORE"
}
Response
Successful response
{
"data": {
"zone_id": "598356E6-5F86-45FA-A7D5-ED8BB6D40DAE",
"edition_id": "97375109",
"space_state": "TRASH",
"current_user_id": "96384499",
"space_id": "1505000000022005"
},
"message": "Zone state updated successfully.",
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/598356E6-5F86-45FA-A7D5-ED8BB6D40DAE/state",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"zone_id": "6F961124-4598-47D6-9BDA-1705DFBA07D7",
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "Z1009",
"message": "Zone threshold violation",
"space_id": "1505000000022005"
}
},
"request_uri": "/vani/api/v1/editions/97375109/spaces/1505000000022005/zones/6F961124-4598-47D6-9BDA-1705DFBA07D7/state",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"zone_id": "05A61516-A352-44C6-94C3-BE44F728C9D9",
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "300900000009397"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/300900000009397/zones/05A61516-A352-44C6-94C3-BE44F728C9D9/state",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state",
"status": "error"
}
Rate limit exceeded - this operation allows 30 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 30 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/state",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version
Get the current version of a zone
Get the current version of a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.zones.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters fields · from · limit · from_date
| Name | Type | Description |
|---|---|---|
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
modified_byversion_idversion_timedescriptionuri
|
| fromOPTIONAL | string | The starting index from where the results should be fetched. Default value is 0 |
| limitOPTIONAL | string | The maximum number of results to return in the response. Default value is 20 |
| from_dateOPTIONAL | string | Allows you to fetch only those Zone versions that have been created or modified since the given timestamp |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"data": {
"zone_versions": {
"restricted_versions": [
{
"modified_by": "80215739",
"version_id": "1373000000529563"
}
],
"allowed_versions": []
}
},
"message": "Zone versions fetched successfully",
"request_uri": "/vani/api/v1/editions/80585907/spaces/1373000000529203/zones/1b28dc96-a3bc-45c3-9977-e4089b513a31/version",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "85572652",
"current_user_id": "96384499",
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action",
"space_id": "160000000657005"
}
},
"request_uri": "/vani/api/v1/editions/85572652/spaces/160000000657005/zones/ef7b7fe1-327b-4ec1-904d-8232677d689c/version",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "75434908",
"current_user_id": "80215739",
"error_code": "Z1008",
"message": "Zone not found",
"space_id": "149000042348078"
}
},
"request_uri": "/vani/api/v1/editions/75434908/spaces/149000042348078/zones/89cf103a-0701-41b3-823c-f2229436333e/version",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/version",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed