Core / Teams
Teams
Teams within an edition, their members, join requests, and role lookups.
GET
/vani/api/v1/editions/{edition_id}/teams/{team_id}
Get a team
Get a team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.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
created_bycreated_by_namecreated_timeteam_member_countzsoidteam_nameteam_iduri
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}" \
-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}"
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}'),
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}"))
.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}";
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}"
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": {
"team": {
"team_member_count": "5",
"team_id": "1303000000002003",
"created_by_name": "Dan",
"team_name": "GraphZen"
}
},
"message": "Teams fetched successfully",
"request_uri": "/vani/api/v1/editions/60029715808/teams/1303000000002003",
"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}",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "T1006",
"team_id": "693000000008463",
"message": "User is not a member of the team"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000008463",
"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": "T1008",
"team_id": "300900000000200",
"message": "Team not found"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/300900000000200",
"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}",
"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}",
"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}/teams/{team_id}/users/me/permission
Get the current user's role in a team
Get the current user's role in a team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.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 |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/users/me/permission" \
-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}/users/me/permission"
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}/users/me/permission'),
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}/users/me/permission"))
.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}/users/me/permission";
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}/users/me/permission"
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": {
"user_permission_info": {
"edition_id": "96499735",
"role": "TEAM_ADMIN",
"current_user_id": "96384499",
"team_id": "3009000000002003"
}
},
"message": "User permissions fetched successfully",
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/users/me/permission",
"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}/users/me/permission",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "T1006",
"team_id": "693000000002001",
"message": "User is not a member of the team"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000002001/users/me/permission",
"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": "T1008",
"team_id": "300900000002003",
"message": "Team not found"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/300900000002003/users/me/permission",
"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}/users/me/permission",
"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}/users/me/permission",
"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}/teams/{team_id}/users/{user_id}/permission
Get a user's role in a team
Get a user's role in a team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.teams.READPath parameters edition_id · team_id · user_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
| user_idREQUIRED | string | The unique identifier of the user |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/users/{user_id}/permission" \
-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}/users/{user_id}/permission"
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}/users/{user_id}/permission'),
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}/users/{user_id}/permission"))
.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}/users/{user_id}/permission";
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}/users/{user_id}/permission"
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": {
"user_permission_info": {
"edition_id": "96499735",
"role": "TEAM_ADMIN",
"current_user_id": "96384499",
"team_id": "3009000000002003",
"zuid": "80215739"
}
},
"message": "User permissions fetched successfully",
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/users/80215739/permission",
"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}/users/{user_id}/permission",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "T1006",
"team_id": "3009000000002003",
"message": "User is not a member of the team",
"zuid": "80585905"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/users/80585905/permission",
"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}/users/{user_id}/permission",
"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}/users/{user_id}/permission",
"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}/users/{user_id}/permission",
"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}/teams/users/me/permission
Get the current user's role across all teams
Get the current user's role across all teams
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.teams.READPath parameters edition_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/users/me/permission" \
-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/users/me/permission"
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/users/me/permission'),
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/users/me/permission"))
.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/users/me/permission";
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/users/me/permission"
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": {
"user_permission_info": {
"edition_id": "75918186",
"teams": [
{
"role": "TEAM_ADMIN",
"team_id": 693000000435005
},
{
"role": "MEMBER",
"team_id": 693000000436009
},
{
"role": "MEMBER",
"team_id": 693000000450001
}
],
"current_user_id": "96384499"
}
},
"message": "User permissions fetched successfully",
"request_uri": "/vani/api/v1/editions/75918186/teams/users/me/permission",
"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/users/me/permission",
"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/users/me/permission",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"current_user_id": "96384499",
"error_code": "E1017",
"message": "Invalid edition"
}
},
"request_uri": "/vani/api/v1/editions/02345/teams/users/me/permission",
"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/users/me/permission",
"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/users/me/permission",
"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}/teams
Get all teams in an edition
Get all teams in an edition
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.teams.READPath parameters edition_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
Query parameters fields · from · limit · sort_by · order_by
| Name | Type | Description |
|---|---|---|
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
created_bycreated_by_namecreated_timeteam_member_countzsoidteam_nameteam_iduri
|
| 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 |
| sort_byOPTIONAL | enum |
Specifies the field used to sort the results
nameSort by team name.
created_timeSort by creation time.
|
| order_byOPTIONAL | enum |
Specifies the sorting order
ascAscending order.
descDescending order.
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams" \
-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"
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'),
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"))
.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";
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"
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": {
"teams": [
{
"created_time": "Wed, 12 Jun 2024, 11:22:30",
"team_member_count": "8",
"team_id": "1303000000003021",
"created_by_name": "Alice",
"zsoid": "60029715808",
"created_by": "60029269987",
"uri": "/vani/api/v1/editions/60029715808/teams/1303000000003021",
"team_name": "CloudSpark"
},
{
"created_time": "Tue, 28 May 2024, 15:34:44",
"team_member_count": "5",
"team_id": "1303000000002003",
"is_default": "true",
"created_by_name": "Dan",
"zsoid": "60029715808",
"created_by": "60029267674",
"uri": "/vani/api/v1/editions/60029715808/teams/1303000000002003",
"team_name": "GraphZen"
}
]
},
"message": "Teams fetched successfully",
"request_uri": "/vani/api/v1/editions/60029715808/teams",
"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",
"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",
"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",
"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",
"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",
"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
PUT
/vani/api/v1/editions/{edition_id}/teams/{team_id}
Update a team's name or settings
Update a team's name or settings
OperationUPDATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.UPDATEPath 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 |
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 |
|---|---|---|---|
| description | string | description | |
| team_name | string | team name. Max length: 100 (max length 100) |
Request
PUT
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "string",
"team_name": "Sample name"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"description": "string",
"team_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}/teams/{team_id}'),
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({
"description": "string",
"team_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}/teams/{team_id}"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"description\":\"string\",\"team_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}/teams/{team_id}";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"description": "string", "team_name": "Sample name"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}"
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");
}{
"description": "string",
"team_name": "Sample name"
}
Response
Successful response
{
"data": {
"edition_id": "97375109",
"current_user_id": "96384499",
"team_id": "1505000000002005",
"new_description": "Visualize Graph Instantly"
},
"message": "Team updated successfully",
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000002005",
"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}",
"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}",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "T1008",
"team_id": "442100000000200",
"message": "Team not found"
}
},
"request_uri": "/vani/api/v1/editions/97375109/teams/442100000000200",
"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}/teams/{team_id}",
"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}",
"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}/teams/{team_id}/members
Get the members of a team
Get the members of a team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.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 member_type · subscriber_state · roles · sort_by · search · fields · from · limit
| Name | Type | Description |
|---|---|---|
| member_typeOPTIONAL | enum |
Role of the member to be fetched. The value TEAM_ADMIN retrieves only the team admins
TEAM_ADMINCan administer the team, including its members.
MEMBERA regular member of the team.
TEAM_GUESTA guest with limited access to the team.
|
| subscriber_stateOPTIONAL | enum |
Parameter: subscriber_state
ACTIVEMembers currently occupying a subscription seat.
INACTIVEMembers not occupying a subscription seat.
|
| rolesOPTIONAL | enum |
Parameter: roles
TEAM_ADMINCan administer the team, including its members.
MEMBERA regular member of the team.
TEAM_GUESTA guest with limited access to the team.
|
| sort_byOPTIONAL | enum |
Specifies the field used to sort the results
ROLE_ASCSort by role, least privileged first.
ROLE_DESCSort by role, most privileged first.
NAME_ASCSort by name, A to Z.
NAME_DESCSort by name, Z to A.
|
| searchOPTIONAL | string | The keyword or phrase to search for |
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
zuidrole_nameadded_timeadded_bymodified_timedisplay_namemail_idedition_idteam_idinvited_time
|
| 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 |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members" \
-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}/members"
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}/members'),
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}/members"))
.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}/members";
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}/members"
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": {
"team_members": [
{
"role_name": "MEMBER",
"added_time": "Tue, 21 Jan 2025, 13:29:58",
"modified_time": "Tue, 21 Jan 2025, 13:29:58",
"mail_id": "emma.carter@boxicle.com",
"added_by": "85572741",
"display_name": "Emma Carter",
"zuid": "96384499"
}
]
},
"message": "Team members fetched successfully.",
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000450001/members",
"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}/members",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "T1006",
"team_id": "693000000008463",
"message": "User is not a member of the team"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000008463/members",
"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": "T1008",
"team_id": "69300000045001",
"message": "Team not found"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/69300000045001/members",
"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}/members",
"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}/members",
"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}/teams/{team_id}/members
Add members to a team
Add members to a team
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.CREATEPath 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 |
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 |
|---|---|---|---|
| members_info REQUIRED | array of object | members info. Max length: 11000 (required) (min 1, max 1) | |
| role REQUIRED | string |
role.
TEAM_ADMINMEMBERTEAM_GUEST
|
|
| mail_id REQUIRED | string | Email address of the member to add, e.g. user@example.com (max length 100) |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"members_info": [
{
"role": "TEAM_ADMIN",
"mail_id": "60712000000123456"
}
]
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"members_info": [
{
"role": "TEAM_ADMIN",
"mail_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}/teams/{team_id}/members'),
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({
"members_info": [
{
"role": "TEAM_ADMIN",
"mail_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}/teams/{team_id}/members"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"members_info\":[{\"role\":\"TEAM_ADMIN\",\"mail_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}/teams/{team_id}/members";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"members_info": {{"role": "TEAM_ADMIN", "mail_id": "60712000000123456"}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members"
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");
}{
"members_info": [
{
"role": "TEAM_ADMIN",
"mail_id": "60712000000123456"
}
]
}
Response
Successful response
{
"data": {
"added_members": [
{
"role_name": "MEMBER",
"invited_time": "Mon, 03 Feb 2025, 23:17:12",
"edition_id": "97375109",
"mail_id": "sophia.bennett@boxicle.com",
"added_by": "96384499",
"team_id": "1505000000051031"
}
]
},
"message": "Team member added successfully.",
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"status": "success"
}
Successful response
{
"data": {
"failed_members": [
{
"error_message": "Member already invited",
"mail_id": "sophia.bennett@boxicle.com",
"error_code": "T1014"
}
],
"added_members": [
{
"role_name": "MEMBER",
"invited_time": "Mon, 03 Feb 2025, 23:16:13",
"edition_id": "97375109",
"mail_id": "olivia.morgan@boxicle.com",
"added_by": "96384499",
"team_id": "1505000000051031"
},
{
"role_name": "TEAM_ADMIN",
"added_time": "Mon, 03 Feb 2025, 23:16:12",
"mail_id": "liam.parker@boxicle.com",
"added_by": "96384499",
"team_id": "1505000000051031"
}
]
},
"message": "Partial success: Some members added, others failed.",
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"failed_members": [
{
"error_message": "Member already part of team",
"mail_id": "olivia.morgan@boxicle.com",
"error_code": "T1013"
}
],
"error_code": "T1017",
"message": "Team member add failed"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/members",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "97377569",
"error_code": "A1003",
"team_id": "3009000000002003",
"message": "The user doesn't have permission to perform this action"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/members",
"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}/members",
"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}/teams/{team_id}/members",
"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}/members",
"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}/teams/{team_id}/members/{member_id}
Update a team member's role
Update a team member's role
OperationUPDATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.UPDATEPath parameters edition_id · team_id · member_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
| member_idREQUIRED | string | The unique identifier of the member |
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 |
|---|---|---|---|
| role REQUIRED | string |
role.
TEAM_ADMINMEMBERTEAM_GUEST
|
|
| assign_to_zuid | string | assign to zuid |
Request
PUT
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "TEAM_ADMIN",
"assign_to_zuid": "string"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"role": "TEAM_ADMIN",
"assign_to_zuid": "string"
}
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}/teams/{team_id}/members/{member_id}'),
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({
"role": "TEAM_ADMIN",
"assign_to_zuid": "string"
}));
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}/members/{member_id}"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"role\":\"TEAM_ADMIN\",\"assign_to_zuid\":\"string\"}";
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}/teams/{team_id}/members/{member_id}";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"role": "TEAM_ADMIN", "assign_to_zuid": "string"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}"
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");
}{
"role": "TEAM_ADMIN",
"assign_to_zuid": "string"
}
Response
Successful response
{
"data": {
"new_role": "MEMBER",
"edition_id": "97375109",
"current_user_id": "96384499",
"team_id": "1505000000051031",
"zuid": "98722154"
},
"message": "Team member updated successfully.",
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"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}/members/{member_id}",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "T1006",
"team_id": "693000000436009",
"message": "User is not a member of the team"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000436009/members",
"status": "error"
}
Forbidden - the caller is authenticated but not allowed to perform this operation
{
"error": {
"details": {
"edition_id": "112255940",
"current_user_id": "82512958",
"error_code": "M1003",
"team_id": "5777000000002017",
"message": "Inactive user role cannot be updated",
"zuid": "64167940"
}
},
"request_uri": "/vani/api/v1/editions/112255940/teams/5777000000002017/members/64167940",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "T1012",
"team_id": "1505000000051031",
"message": "Member not part of team",
"zuid": "80215739"
}
},
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "75918186",
"current_user_id": "96384499",
"error_code": "M1001",
"team_id": "693000000436009",
"message": "The member already has the specified role",
"zuid": "81479212"
}
},
"request_uri": "/vani/api/v1/editions/75918186/teams/693000000436009/members",
"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}/teams/{team_id}/members/{member_id}",
"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}/members/{member_id}",
"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 30 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}/teams/{team_id}/members/{member_id}
Remove a member from a team
destructive
Remove a member from a team
OperationDELETE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.DELETEPath parameters edition_id · team_id · member_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
| member_idREQUIRED | string | The unique identifier of the member |
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 |
|---|---|---|---|
| assign_to_zuid REQUIRED | string | assign to zuid (required) |
Request
DELETE
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assign_to_zuid": "string"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"assign_to_zuid": "string"
}
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}/teams/{team_id}/members/{member_id}'),
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({
"assign_to_zuid": "string"
}));
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}/members/{member_id}"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"assign_to_zuid\":\"string\"}";
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}/teams/{team_id}/members/{member_id}";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"assign_to_zuid": "string"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/members/{member_id}"
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");
}{
"assign_to_zuid": "string"
}
Response
Successful response
{
"data": {
"edition_id": "97375109",
"removed_zuid": "97377569",
"current_user_id": "96384499",
"team_id": "1505000000051031"
},
"message": "Team member deleted successfully.",
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"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}/members/{member_id}",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "A1003",
"message": "The user doesn't have permission to perform this action"
}
},
"request_uri": "/vani/api/v1/editions/112255940/teams/5777000000002017/members/80022267",
"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": "A1004",
"team_id": "3009000000002003",
"message": "Super admin can't be removed from the team"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/members",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"edition_id": "97375109",
"current_user_id": "96384499",
"error_code": "T1012",
"team_id": "1505000000051031",
"message": "Member not part of team"
}
},
"request_uri": "/vani/api/v1/editions/97375109/teams/1505000000051031/members",
"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}/teams/{team_id}/members/{member_id}",
"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}/members/{member_id}",
"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}/teams/{team_id}/requests/my-requests
Get the current user's join requests for a team
Get the current user's join requests for a team
OperationREAD
Rate limit30 requests / minute · per user
OAuth scopes
Vani.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
requested_timerequested_bynamerequest_idstatus
|
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests/my-requests" \
-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}/requests/my-requests"
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}/requests/my-requests'),
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}/requests/my-requests"))
.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}/requests/my-requests";
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}/requests/my-requests"
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": {
"requests": {
"status": "REQUESTED"
}
},
"message": "Team requests fetched successfully",
"request_uri": "/vani/api/v1/editions/80473965/teams/1664000000002003/requests/my-requests",
"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}/requests/my-requests",
"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}/requests/my-requests",
"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": "80473960",
"error_code": "R1007",
"team_id": "3009000000002003",
"message": "Team join request not found"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/my-requests",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "80473960",
"error_code": "T1013",
"team_id": "3009000000002003",
"message": "Member already part of team"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/my-requests",
"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}/teams/{team_id}/requests/my-requests",
"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}/requests/my-requests",
"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
GET
/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests
Get the join requests for a team
Get the join requests for a team
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.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 · from · limit
| Name | Type | Description |
|---|---|---|
| fieldsOPTIONAL | enum |
Specifies the fields (comma-separated) to retrieve
requested_timerequested_bynamerequest_idstatus
|
| 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 |
Request
GET
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests" \
-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}/requests"
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}/requests'),
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}/requests"))
.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}/requests";
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}/requests"
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": {
"requests": [
{
"name": "Emma Carter",
"status": "REQUESTED"
}
]
},
"message": "Team requests fetched successfully",
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests",
"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}/requests",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1002",
"team_id": "3009000000002003",
"message": "Only admin can do this action"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests",
"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}/requests",
"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}/requests",
"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}/requests",
"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}/teams/{team_id}/requests/{request_id}/accept
Approve a pending team join request by request id and assign the requester a team role of TEAM_ADMIN, MEMBER or TEAM_GUEST. Admits them without a separate createTeamMember call.
Approve a pending team join request by request id and assign the requester a team role of TEAM_ADMIN, MEMBER or TEAM_GUEST. Admits them without a separate createTeamMember call.
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.CREATEPath parameters edition_id · team_id · request_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
| request_idREQUIRED | string | The unique identifier of the request |
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 |
|---|---|---|---|
| role REQUIRED | string |
role.
TEAM_ADMINMEMBERTEAM_GUEST
|
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests/{request_id}/accept" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "TEAM_ADMIN"
}'import requests
url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests/{request_id}/accept"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"role": "TEAM_ADMIN"
}
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}/teams/{team_id}/requests/{request_id}/accept'),
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({
"role": "TEAM_ADMIN"
}));
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}/requests/{request_id}/accept"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"role\":\"TEAM_ADMIN\"}";
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}/teams/{team_id}/requests/{request_id}/accept";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"role": "TEAM_ADMIN"};
response = invokeurl
[
url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests/{request_id}/accept"
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");
}{
"role": "TEAM_ADMIN"
}
Response
Successful response
{
"data": {
"role_name": "MEMBER",
"edition_id": "112255940",
"updated_at": "Fri, 21 Aug 2026, 20:04:43",
"team_id": "5777000000002017",
"request_id": "730000017057001",
"zuid": "97049596",
"status": "ACCEPTED"
},
"message": "Team join request accepted successfully",
"request_uri": "/vani/api/v1/editions/112255940/teams/5777000000002017/requests/730000017057001/accept",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "R1003",
"team_id": "3009000000002003",
"message": "Invalid request ID"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/730000009261019/accept",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1003",
"team_id": "3009000000002003",
"message": "The user doesn't have permission to perform this action"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/730000009261019/accept",
"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}/requests/{request_id}/accept",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "L1001",
"team_id": "3009000000002003",
"message": "License limit reached"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/730000009261019/accept",
"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}/teams/{team_id}/requests/{request_id}/accept",
"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}/requests/{request_id}/accept",
"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}/teams/{team_id}/requests/{request_id}/reject
Decline a pending team join request by request id, leaving the requester outside the team. Use in place of acceptTeamRequest when access should not be granted.
Decline a pending team join request by request id, leaving the requester outside the team. Use in place of acceptTeamRequest when access should not be granted.
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.CREATEPath parameters edition_id · team_id · request_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| team_idREQUIRED | string | The unique identifier of the team |
| request_idREQUIRED | string | The unique identifier of the request |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests/{request_id}/reject" \
-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}/requests/{request_id}/reject"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.post(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}/requests/{request_id}/reject'),
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.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}/requests/{request_id}/reject"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.POST(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}/requests/{request_id}/reject";
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}/requests/{request_id}/reject"
type: POST
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": {
"edition_id": "112255940",
"updated_at": "Fri, 21 Aug 2026, 19:49:36",
"team_id": "5777000000002017",
"request_id": "730000017057001",
"zuid": "97049596",
"status": "REJECTED"
},
"message": "Team join request rejected successfully",
"request_uri": "/vani/api/v1/editions/112255940/teams/5777000000002017/requests/730000017057001/reject",
"status": "success"
}
Invalid request - validation failed
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "R1003",
"team_id": "3009000000002003",
"message": "Invalid request ID"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/73000000926104/reject",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "A1003",
"team_id": "3009000000002003",
"message": "The user doesn't have permission to perform this action"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/730000009261019/reject",
"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}/requests/{request_id}/reject",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "96384499",
"error_code": "R1012",
"team_id": "3009000000002003",
"message": "Team join request is already rejected"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests/730000009261046/reject",
"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}/teams/{team_id}/requests/{request_id}/reject",
"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}/requests/{request_id}/reject",
"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}/teams/{team_id}/requests
Raise a request for the calling user to join a team they cannot yet reach. A team admin then settles it with acceptTeamRequest or rejectTeamRequest.
Raise a request for the calling user to join a team they cannot yet reach. A team admin then settles it with acceptTeamRequest or rejectTeamRequest.
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.teams.CREATEPath 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 |
Request
POST
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/teams/{team_id}/requests" \
-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}/requests"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.post(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}/requests'),
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.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}/requests"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.POST(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}/requests";
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}/requests"
type: POST
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": {
"edition_id": "96499735",
"updated_at": "Wed, 06 Aug 2025, 10:07:21",
"team_id": "3009000000002003",
"request_id": "730000009272001",
"zuid": "80473960",
"status": "PENDING"
},
"message": "Team join request created successfully",
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests",
"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}/requests",
"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}/requests",
"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}/requests",
"status": "error"
}
Conflict - the requested change conflicts with the current resource state
{
"error": {
"details": {
"edition_id": "96499735",
"current_user_id": "80473960",
"error_code": "T1013",
"team_id": "3009000000002003",
"message": "Member already part of team"
}
},
"request_uri": "/vani/api/v1/editions/96499735/teams/3009000000002003/requests",
"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}/teams/{team_id}/requests",
"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}/requests",
"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