Core / External Share
External Share
Publish a space externally and manage the resulting public share.
GET
/vani/api/v1/editions/{edition_id}/teams/{team_id}/externalshares/status
Check whether external sharing is allowed for the edition and team
Check whether external sharing is allowed for the edition and team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.editions.READVani.teams.READPath parameters edition_id · team_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
Query parameters fields
| Name | Type | Description |
|---|---|---|
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
external_share_edition_enabledexternal_share_team_enabledexternal_share_allowed
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/externalshares/status" \
-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}/teams/{team_id}/externalshares/status"
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}/teams/{team_id}/externalshares/status'),
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}/teams/{team_id}/externalshares/status"))
.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}/teams/{team_id}/externalshares/status";
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}/teams/{team_id}/externalshares/status"
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": {
"external_share_edition_enabled": true
},
"message": "External share status fetched successfully",
"request_uri": "/vani/api/v1/editions/888012145/teams/4855000000002003/externalshares/status",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/teams/{team_id}/externalshares/status",
"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}/teams/{team_id}/externalshares/status",
"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}/teams/{team_id}/externalshares/status",
"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}/teams/{team_id}/externalshares/status",
"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}/teams/{team_id}/externalshares/status",
"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
GET
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares
Get a space's external share details
Get a space's external share details
OperationREAD
Rate limit10 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
space_idpositionshared_bypermissionshare_typeis_password_enabledpasswordexpiration_timeshared_timeexternal_share_urlzone_idslink_name
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares" \
-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}/externalshares"
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}/externalshares'),
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}/externalshares"))
.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}/externalshares";
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}/externalshares"
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": {
"shared_time": 1753678990289,
"space_id": "4855000000088149"
},
"message": "External share space info fetched successfully",
"request_uri": "/vani/api/v1/editions/888012145/spaces/4855000000088149/externalshares",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "82513223",
"current_user_id": "82512958",
"error_code": "S1046",
"message": "Space is not externally shared"
}
},
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "888012145",
"current_user_id": "888015717",
"error_code": "EX1007",
"message": "The user doesn't have permission to fetch external share info"
}
},
"request_uri": "/vani/api/v1/editions/888012145/spaces/485500000008849/externalshares",
"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}/externalshares",
"status": "error"
}
Rate limit exceeded - this operation allows 10 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 10 requests per minute per user"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares",
"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}/externalshares",
"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 10 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}/teams/{team_id}/externalshares
Get the external shares of a team's spaces
Get the external shares of a team's spaces
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.editions.READVani.teams.READPath parameters edition_id · team_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
Query parameters from · limit · fields
| Name | Type | Description |
|---|---|---|
| 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 |
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
space_idpositionshared_bypermissionshare_typeis_password_enabledpasswordexpiration_timeshared_timeexternal_share_urlzone_idslink_name
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/externalshares" \
-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}/teams/{team_id}/externalshares"
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}/teams/{team_id}/externalshares'),
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}/teams/{team_id}/externalshares"))
.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}/teams/{team_id}/externalshares";
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}/teams/{team_id}/externalshares"
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": {
"external_share_info": [
{
"external_share_url": "https://app.vanipublic.com/external/open/418a5ec6abf2bb5b7a0486d5aaae300bcb97a2672a1086e25a81c5853896c92d27a8a01fcb9e42a82fe59e5a3c050fb2390d261c80ae2d4f33b09a56b27f58a5",
"permission": "VIEWER",
"space_id": "1629000000491005"
},
{
"external_share_url": "https://app.vanipublic.com/external/open/f42bcd0a8025fe33bd45bcb176e270275b48312abef2bf9d468a4939709cf9a68db1f73db4f8bdfee7fc07d948d360e083ee198913c863c624304fc274c8d289",
"permission": "VIEWER",
"space_id": "1629000000309025"
},
{
"external_share_url": "https://app.vanipublic.com/external/open/c7dab478035f95d89f1ad22b507b7bf98bd26c5f33c8d5123f5e85c34ae796ea09b9dd26ae6c0e6ac575a8e387eb98073530e803ecdd2cfa1ba7747726529492",
"permission": "COMMENTER",
"space_id": "1629000000297013"
}
]
},
"message": "External share spaces fetched successfully",
"request_uri": "/vani/api/v1/editions/82513223/teams/1629000000002003/externalshares",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/vani/api/v1/editions/{edition_id}/teams/{team_id}/externalshares",
"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}/teams/{team_id}/externalshares",
"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}/teams/{team_id}/externalshares",
"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}/teams/{team_id}/externalshares",
"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}/teams/{team_id}/externalshares",
"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}/externalshares
Publish a space as an external share
Publish a space as an external share
OperationCREATE
Rate limit60 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 |
|---|---|---|---|
| is_password_enabled | boolean | is password enabled | |
| zone_ids | string | zone ids. Max length: 1000 (max length 1000) | |
| password | string | password. Max length: 100 (max length 100) | |
| share_type REQUIRED | string |
share type.
ALL_ZONESPARTIAL_ZONES
|
|
| expiration_time | string | expiration time. Max length: 30 (max length 30) | |
| permission REQUIRED | string |
permission.
EDITORCOMMENTERVIEWER
|
|
| link_name | string | link name. Max length: 255 (max length 255) | |
| external_share_id | string | external share id. Max length: 500 (max length 500) | |
| status | string |
status.
ACTIVEINACTIVE
|
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}
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}/externalshares'),
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({
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}));
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}/externalshares"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"share_type\":\"ALL_ZONES\",\"permission\":\"EDITOR\",\"is_password_enabled\":true,\"zone_ids\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"password\":\"string\",\"expiration_time\":\"string\",\"link_name\":\"Sample name\",\"external_share_id\":\"sample.value\"}";
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}/externalshares";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"share_type": "ALL_ZONES", "permission": "EDITOR", "is_password_enabled": true, "zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "password": "string", "expiration_time": "string", "link_name": "Sample name", "external_share_id": "sample.value"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
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");
}{
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}
Response
Successful response
{
"data": {
"is_password_enabled": true,
"zone_ids": [
{
"zone_id": "9e7a947b-470b-46e7-be64-4a617abadf43",
"permission": "VIEWER"
}
],
"password": "1",
"share_type": "PARTIAL_ZONES",
"shared_time": 1752045010623,
"external_share_url": "https://app.vanipublic.com/external/open/92c8c172434d1eb794100b0e52303ddaf6ec81d29608502e2b8bce9a5aab731144024ea162631784c784141d8d79c5e3e433279e6f2a4f0841ecfb01ea995155",
"expiration_time": 1754627011000,
"shared_by": 82512958,
"permission": "VIEWER",
"space_id": "1629000000297013"
},
"message": "Space externally shared successfully",
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "82513223",
"current_user_id": "82512958",
"error_code": "EX1006",
"message": "External share zones are invalid or not available"
}
},
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"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}/externalshares",
"status": "error"
}
Forbidden - the caller is authenticated but not allowed to perform this operation
{
"error": {
"details": {
"edition_id": "82513223",
"current_user_id": "82512958",
"error_code": "EX1003",
"message": "External share is not allowed for this team"
}
},
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"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}/externalshares",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "112255940",
"current_user_id": "82512958",
"error_code": "EX1019",
"message": "External share limit reached for the project.",
"space_id": "5777000000929039"
}
},
"request_uri": "/vani/api/v1/editions/112255940/spaces/5777000000929039/externalshares",
"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}/externalshares",
"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}/externalshares",
"status": "error"
}
Errors
7 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 409 Conflict - the requested change conflicts with the current resource state 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
PUT
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares
Update a space's external share
Update a space's external share
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.UPDATEPath 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 |
|---|---|---|---|
| is_password_enabled | boolean | is password enabled | |
| zone_ids | string | zone ids. Max length: 1000 (max length 1000) | |
| password | string | password. Max length: 100 (max length 100) | |
| share_type REQUIRED | string |
share type.
ALL_ZONESPARTIAL_ZONES
|
|
| expiration_time | string | expiration time. Max length: 30 (max length 30) | |
| permission REQUIRED | string |
permission.
EDITORCOMMENTERVIEWER
|
|
| link_name | string | link name. Max length: 255 (max length 255) | |
| external_share_id | string | external share id. Max length: 500 (max length 500) | |
| status | string |
status.
ACTIVEINACTIVE
|
Request
PUT
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}
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}/externalshares'),
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({
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}));
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}/externalshares"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"share_type\":\"ALL_ZONES\",\"permission\":\"EDITOR\",\"is_password_enabled\":true,\"zone_ids\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"password\":\"string\",\"expiration_time\":\"string\",\"link_name\":\"Sample name\",\"external_share_id\":\"sample.value\"}";
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}/externalshares";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"share_type": "ALL_ZONES", "permission": "EDITOR", "is_password_enabled": true, "zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "password": "string", "expiration_time": "string", "link_name": "Sample name", "external_share_id": "sample.value"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
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");
}{
"share_type": "ALL_ZONES",
"permission": "EDITOR",
"is_password_enabled": true,
"zone_ids": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"password": "string",
"expiration_time": "string",
"link_name": "Sample name",
"external_share_id": "sample.value"
}
Response
Successful response
{
"data": {
"is_password_enabled": true,
"zone_ids": [
{
"zone_id": "9e7a947b-470b-46e7-be64-4a617abadf43",
"permission": "COMMENTER"
}
],
"password": "1",
"share_type": "PARTIAL_ZONES",
"shared_time": 1752045307273,
"external_share_url": "https://app.localvanipublic.net/external/open/ea6e71f11f7803677667dec29fc1ea2ea829c2b748a992203c8a3eea26b853568c231f96663a6b841b11c071352ee65b844d010ea52cf7e3810a7bc43c2b8c7f",
"expiration_time": 1754627011000,
"shared_by": 82512958,
"permission": "COMMENTER",
"space_id": "1629000000297013"
},
"message": "External share space updated successfully",
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "82513223",
"current_user_id": "82512958",
"error_code": "EX1006",
"message": "External share zones are invalid or not available"
}
},
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"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}/externalshares",
"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}/externalshares",
"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}/externalshares",
"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}/externalshares",
"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
DELETE
/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares
Revoke a space's external share
destructive
Revoke a space's external share
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.DELETEPath 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 |
|---|---|---|---|
| external_share_id REQUIRED | string | external share id. Max length: 500 (required) (max length 500) |
Request
DELETE
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"external_share_id": "sample.value"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"external_share_id": "sample.value"
}
response = requests.delete(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}/externalshares'),
method: 'DELETE',
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({
"external_share_id": "sample.value"
}));
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}/externalshares"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"external_share_id\":\"sample.value\"}";
HttpRequest request = requestBuilder
.DELETE(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}/externalshares";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"external_share_id": "sample.value"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/externalshares"
type: DELETE
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");
}{
"external_share_id": "sample.value"
}
Response
Successful response
{
"data": {
"edition_id": "96499735",
"current_user_id": "96384499",
"space_id": "3009000000675145",
"external_share_removed": true
},
"message": "External share space removed successfully",
"request_uri": "/vani/api/v1/editions/96499735/spaces/3009000000675145/externalshares",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "82513223",
"current_user_id": "82512958",
"error_code": "S1046",
"message": "Space is not externally shared"
}
},
"request_uri": "/vani/api/v1/editions/82513223/spaces/1629000000297013/externalshares",
"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}/externalshares",
"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": "S1009",
"message": "Space not found",
"space_id": "300900000675145"
}
},
"request_uri": "/vani/api/v1/editions/96499735/spaces/300900000675145/externalshares",
"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}/externalshares",
"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}/externalshares",
"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