Zone Operations / Structures
Structures
Build whole structures in one call — mindmaps, flowcharts, kanban boards, stacks, and tables.
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart
Create a flowchart from node and edge graph specifications
Create a flowchart from node and edge graph specifications
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| payload REQUIRED | object | Flowchart graph specification (required) | |
| nodes REQUIRED | array of object | Flowchart node specifications (required, 1-50) (min 1, max 1) | |
| preferred_shape | string |
Flowchart shape type (defaults to PROCESS) (max length 50)
PROCESSDECISIONTERMINATORDATADOCUMENTPREDEFINED_PROCESSINTERNAL_STORAGEALTERNATE_PROCESSMULTI_DOCUMENTPREPARATIONMANUAL_INPUTMANUAL_OPERATIONCONNECTOROFFPAGE_CONNECTORPUNCHED_CARDPUNCHED_TAPESUMMING_JUNCTIONORCOLLATESORTEXTRACTMERGESTORED_DATADELAYSEQUENTIAL_ACCESS_STORAGEMAGNETIC_DISKDIRECT_ACCESS_STORAGEDISPLAY
|
|
| text REQUIRED | string | Display text for the node (required, non-empty) (max length 5000) | |
| node_id REQUIRED | string | Unique node identifier within this flowchart (required, non-empty) (max length 200) | |
| edges | array of object | Flowchart edge specifications (optional, max 100) (min 2, max 2) | |
| from_node_id REQUIRED | string | Source node id (required) (max length 200) | |
| start_marker | string |
Marker at the source end (defaults to server default) (max length 20)
NONEOPENBLOCKCLASSICDIAMONDOVAL
|
|
| connector_type | string |
Connector routing type (defaults to ELBOW) (max length 20)
LINEELBOWCURVE
|
|
| label | string | Optional text label on the connector (max length 2000) | |
| end_marker | string |
Marker at the target end (defaults to server default) (max length 20)
NONEOPENBLOCKCLASSICDIAMONDOVAL
|
|
| to_node_id REQUIRED | string | Target node id (required) (max length 200) | |
| layout_direction | string |
Layout direction (defaults to TOP_DOWN) (max length 20)
TOP_DOWNLEFT_RIGHT
|
|
| title | string | Optional flowchart title (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"nodes": [
{
"text": "Hello Vani",
"node_id": "60712000000123456",
"preferred_shape": "PROCESS"
}
],
"edges": [
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
},
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
}
],
"layout_direction": "TOP_DOWN",
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"nodes": [
{
"text": "Hello Vani",
"node_id": "60712000000123456",
"preferred_shape": "PROCESS"
}
],
"edges": [
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
},
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
}
],
"layout_direction": "TOP_DOWN",
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart'),
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({
"payload": {
"nodes": [
{
"text": "Hello Vani",
"node_id": "60712000000123456",
"preferred_shape": "PROCESS"
}
],
"edges": [
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
},
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
}
],
"layout_direction": "TOP_DOWN",
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"nodes\":[{\"text\":\"Hello Vani\",\"node_id\":\"60712000000123456\",\"preferred_shape\":\"PROCESS\"}],\"edges\":[{\"from_node_id\":\"60712000000123456\",\"to_node_id\":\"60712000000123456\",\"start_marker\":\"NONE\",\"connector_type\":\"ELBOW\",\"label\":\"string\",\"end_marker\":\"NONE\"},{\"from_node_id\":\"60712000000123456\",\"to_node_id\":\"60712000000123456\",\"start_marker\":\"NONE\",\"connector_type\":\"ELBOW\",\"label\":\"string\",\"end_marker\":\"NONE\"}],\"layout_direction\":\"TOP_DOWN\",\"title\":\"string\"},\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"absolute_bounds\":{\"x\":1.5,\"width\":1.5,\"y\":1.5,\"height\":1.5},\"target\":{\"insert_index\":1,\"target_type\":\"ZONE_ROOT\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"nodes": {{"text": "Hello Vani", "node_id": "60712000000123456", "preferred_shape": "PROCESS"}}, "edges": {{"from_node_id": "60712000000123456", "to_node_id": "60712000000123456", "start_marker": "NONE", "connector_type": "ELBOW", "label": "string", "end_marker": "NONE"}, {"from_node_id": "60712000000123456", "to_node_id": "60712000000123456", "start_marker": "NONE", "connector_type": "ELBOW", "label": "string", "end_marker": "NONE"}}, "layout_direction": "TOP_DOWN", "title": "string"}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "absolute_bounds": {"x": 1.5, "width": 1.5, "y": 1.5, "height": 1.5}, "target": {"insert_index": 1, "target_type": "ZONE_ROOT", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart"
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");
}{
"payload": {
"nodes": [
{
"text": "Hello Vani",
"node_id": "60712000000123456",
"preferred_shape": "PROCESS"
}
],
"edges": [
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
},
{
"from_node_id": "60712000000123456",
"to_node_id": "60712000000123456",
"start_marker": "NONE",
"connector_type": "ELBOW",
"label": "string",
"end_marker": "NONE"
}
],
"layout_direction": "TOP_DOWN",
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table
Create a new table on the board by parsing raw CSV, TSV or pipe-delimited text, with optional header row, whitespace trimming and ragged-row padding. Use for a plain layout table; use createDatabaseTable for a typed, queryable one.
Create a new table on the board by parsing raw CSV, TSV or pipe-delimited text, with optional header row, whitespace trimming and ragged-row padding. Use for a plain layout table; use createDatabaseTable for a typed, queryable one.
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| payload REQUIRED | object | Table data specification (required) | |
| input REQUIRED | object | Tabular data input specification (required) | |
| raw_text REQUIRED | string | Raw tabular text data (required) (max length 500000) | |
| pad_missing_cells | boolean | Pad ragged rows with empty cells to match max column count | |
| format_hint | string |
Format hint for parsing (defaults to AUTO) (max length 10)
AUTOCSVTSVPIPE
|
|
| first_row_is_header | boolean | Treat the first row as a header row | |
| trim_whitespace | boolean | Trim whitespace from cell values | |
| title | string | Optional table title (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table'),
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({
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"input\":{\"raw_text\":\"Hello Vani\",\"pad_missing_cells\":true,\"format_hint\":\"AUTO\",\"first_row_is_header\":true,\"trim_whitespace\":true},\"title\":\"string\"},\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"absolute_bounds\":{\"x\":1.5,\"width\":1.5,\"y\":1.5,\"height\":1.5},\"target\":{\"insert_index\":1,\"target_type\":\"ZONE_ROOT\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"input": {"raw_text": "Hello Vani", "pad_missing_cells": true, "format_hint": "AUTO", "first_row_is_header": true, "trim_whitespace": true}, "title": "string"}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "absolute_bounds": {"x": 1.5, "width": 1.5, "y": 1.5, "height": 1.5}, "target": {"insert_index": 1, "target_type": "ZONE_ROOT", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table"
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");
}{
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"title": "string"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack
Create a stack structure from an ordered list of item specifications
Create a stack structure from an ordered list of item specifications
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| spacing | object | Optional spacing configuration | |
| manual_spacing | number | Explicit spacing in canvas units (>= 0) | |
| auto_spacing | object | Let the server compute spacing; send an empty object to enable | |
| title | string | Optional stack title (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| items REQUIRED | array of object | Ordered item specifications (required, at least 1) (min 1, max 1) | |
| content | object | Visible content and lightweight semantic metadata | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| layout_hint | string |
Stack orientation (defaults to STACK_VERTICAL) (max length 30)
STACK_VERTICALSTACK_HORIZONTAL
|
|
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "STACK_VERTICAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"items": [
{
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "STACK_VERTICAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack'),
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({
"items": [
{
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "STACK_VERTICAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"items\":[{\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}],\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"spacing\":{\"manual_spacing\":1.5,\"auto_spacing\":{}},\"title\":\"string\",\"absolute_bounds\":{\"x\":1.5,\"width\":1.5,\"y\":1.5,\"height\":1.5},\"layout_hint\":\"STACK_VERTICAL\",\"target\":{\"insert_index\":1,\"target_type\":\"ZONE_ROOT\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"items": {{"content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "spacing": {"manual_spacing": 1.5, "auto_spacing": {}}, "title": "string", "absolute_bounds": {"x": 1.5, "width": 1.5, "y": 1.5, "height": 1.5}, "layout_hint": "STACK_VERTICAL", "target": {"insert_index": 1, "target_type": "ZONE_ROOT", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack"
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");
}{
"items": [
{
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "STACK_VERTICAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban
Create a kanban board structure from column and item specifications
Create a kanban board structure from column and item specifications
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| spacing | object | Optional spacing configuration | |
| manual_spacing | number | Explicit spacing in canvas units (>= 0) | |
| auto_spacing | object | Let the server compute spacing; send an empty object to enable | |
| columns REQUIRED | array of object | Kanban column specifications (required, at least 1) (min 1, max 1) | |
| title REQUIRED | string | Column title (required, non-empty) (max length 1000) | |
| items | array of object | Items within this column (min 2, max 2) | |
| due_date_text | string | Optional user-facing due date text (not rendered yet) (max length 1000) | |
| assignee | string | Optional assignee/owner label (not rendered yet) (max length 1000) | |
| priority | string | Optional priority label (not rendered yet) (max length 1000) | |
| content | object | Visible content and lightweight semantic metadata | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| status | string | Optional status label (not rendered yet) (max length 1000) | |
| title | string | Optional kanban board title (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| layout_hint | string |
Board orientation (defaults to HORIZONTAL) (max length 20)
HORIZONTALVERTICAL
|
|
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"columns": [
{
"title": "string",
"items": [
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
},
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
}
]
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "HORIZONTAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"columns": [
{
"title": "string",
"items": [
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
},
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
}
]
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "HORIZONTAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban'),
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({
"columns": [
{
"title": "string",
"items": [
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
},
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
}
]
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "HORIZONTAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"columns\":[{\"title\":\"string\",\"items\":[{\"due_date_text\":\"Hello Vani\",\"assignee\":\"string\",\"priority\":\"string\",\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]},\"status\":\"string\"},{\"due_date_text\":\"Hello Vani\",\"assignee\":\"string\",\"priority\":\"string\",\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]},\"status\":\"string\"}]}],\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"spacing\":{\"manual_spacing\":1.5,\"auto_spacing\":{}},\"title\":\"string\",\"absolute_bounds\":{\"x\":1.5,\"width\":1.5,\"y\":1.5,\"height\":1.5},\"layout_hint\":\"HORIZONTAL\",\"target\":{\"insert_index\":1,\"target_type\":\"ZONE_ROOT\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"columns": {{"title": "string", "items": {{"due_date_text": "Hello Vani", "assignee": "string", "priority": "string", "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}, "status": "string"}, {"due_date_text": "Hello Vani", "assignee": "string", "priority": "string", "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}, "status": "string"}}}}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "spacing": {"manual_spacing": 1.5, "auto_spacing": {}}, "title": "string", "absolute_bounds": {"x": 1.5, "width": 1.5, "y": 1.5, "height": 1.5}, "layout_hint": "HORIZONTAL", "target": {"insert_index": 1, "target_type": "ZONE_ROOT", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban"
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");
}{
"columns": [
{
"title": "string",
"items": [
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
},
{
"due_date_text": "Hello Vani",
"assignee": "string",
"priority": "string",
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"status": "string"
}
]
}
],
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"title": "string",
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"layout_hint": "HORIZONTAL",
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap
Create a mindmap structure from a hierarchical outline specification
Create a mindmap structure from a hierarchical outline specification
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| spacing | object | Optional spacing configuration | |
| manual_spacing | number | Explicit spacing in canvas units (>= 0) | |
| auto_spacing | object | Let the server compute spacing; send an empty object to enable | |
| top | object | Top branch (single-direction layout) | |
| children | array of object | Ordered child nodes for this branch direction (min 1, max 1) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| left | object | Left branch (single-direction layout) | |
| children | array of object | Ordered child nodes for this branch direction (min 1, max 1) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| bottom | object | Bottom branch (single-direction layout) | |
| children | array of object | Ordered child nodes for this branch direction (min 1, max 1) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| root REQUIRED | object | Root node content (required) | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| top_down | object | Top-down dual-direction layout | |
| top | array of object | Ordered branch-root nodes on the top side (min 2, max 2) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| bottom | array of object | Ordered branch-root nodes on the bottom side (min 2, max 2) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| right | object | Right branch (single-direction layout) | |
| children | array of object | Ordered child nodes for this branch direction (min 1, max 1) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| title | string | Optional mindmap title (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| left_right | object | Left-right dual-direction layout | |
| left | array of object | Ordered branch-root nodes on the left side (min 2, max 2) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| right | array of object | Ordered branch-root nodes on the right side (min 2, max 2) | |
| children | array of object | Child nodes, nested to any depth (min 2, max 2) | |
| content | object | Content wrapper with text | |
| notes | string | Optional longer supporting text (max length 10000) | |
| link_url | string | Optional external link associated with the created object (max length 2000) | |
| text | string | Primary visible label/content (max length 5000) | |
| tags | array of string | Optional semantic tags/labels (min 2, max 2) | |
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"root": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"top": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"left": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"bottom": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"top_down": {
"top": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"bottom": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"right": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"root": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"top": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"left": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"bottom": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"top_down": {
"top": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"bottom": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"right": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap'),
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({
"root": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"top": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"left": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"bottom": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"top_down": {
"top": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"bottom": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"right": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"root\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]},\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"spacing\":{\"manual_spacing\":1.5,\"auto_spacing\":{}},\"top\":{\"children\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}]},\"left\":{\"children\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}]},\"bottom\":{\"children\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}]},\"top_down\":{\"top\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}},{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}],\"bottom\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}},{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}]},\"right\":{\"children\":[{\"children\":[{},{}],\"content\":{\"notes\":\"string\",\"link_url\":\"string\",\"text\":\"Hello Vani\",\"tags\":[\"string\",\"string\"]}}]}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"root": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "spacing": {"manual_spacing": 1.5, "auto_spacing": {}}, "top": {"children": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}}, "left": {"children": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}}, "bottom": {"children": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}}, "top_down": {"top": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}, {"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}, "bottom": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}, {"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}}, "right": {"children": {{"children": {{}, {}}, "content": {"notes": "string", "link_url": "string", "text": "Hello Vani", "tags": {"string", "string"}}}}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap"
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");
}{
"root": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"spacing": {
"manual_spacing": 1.5,
"auto_spacing": {}
},
"top": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"left": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"bottom": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"top_down": {
"top": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
],
"bottom": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
},
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
},
"right": {
"children": [
{
"children": [
{},
{}
],
"content": {
"notes": "string",
"link_url": "string",
"text": "Hello Vani",
"tags": [
"string",
"string"
]
}
}
]
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 30 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table
Create a typed database_table from raw tabular text data
Create a typed database_table from raw tabular text data
OperationCREATE
Rate limit30 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| percent_bounds | object | Optional preferred region as zone percentage | |
| right_pct | number | Right edge as 0-1 fraction of zone width | |
| top_pct | number | Top edge as 0-1 fraction of zone height | |
| bottom_pct | number | Bottom edge as 0-1 fraction of zone height | |
| left_pct | number | Left edge as 0-1 fraction of zone width | |
| payload REQUIRED | object | Database-table data specification (required) | |
| input REQUIRED | object | Tabular data input specification (required) | |
| raw_text REQUIRED | string | Raw tabular text data (required) (max length 500000) | |
| pad_missing_cells | boolean | Pad ragged rows with empty cells to match max column count | |
| format_hint | string |
Format hint for parsing (defaults to AUTO) (max length 10)
AUTOCSVTSVPIPE
|
|
| first_row_is_header | boolean | Treat the first row as a header row | |
| trim_whitespace | boolean | Trim whitespace from cell values | |
| name | string | Optional database-table display name (max length 1000) | |
| absolute_bounds | object | Optional preferred region in absolute canvas units | |
| x | number | Left position in canvas units | |
| width | number | Width in canvas units | |
| y | number | Top position in canvas units | |
| height | number | Height in canvas units | |
| target | object | Optional insertion target (defaults to ZONE_ROOT) | |
| insert_index | integer | Insertion index within the target container | |
| target_type | string |
Placement target type: ZONE_ROOT (default) or FRAME (max length 20)
ZONE_ROOTFRAME
|
|
| frame_id | string | Frame id (required when target_type is FRAME) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"name": "Sample name"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"name": "Sample name"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table'),
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({
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"name": "Sample name"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"input\":{\"raw_text\":\"Hello Vani\",\"pad_missing_cells\":true,\"format_hint\":\"AUTO\",\"first_row_is_header\":true,\"trim_whitespace\":true},\"name\":\"Sample name\"},\"percent_bounds\":{\"right_pct\":1.5,\"top_pct\":1.5,\"bottom_pct\":1.5,\"left_pct\":1.5},\"absolute_bounds\":{\"x\":1.5,\"width\":1.5,\"y\":1.5,\"height\":1.5},\"target\":{\"insert_index\":1,\"target_type\":\"ZONE_ROOT\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
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/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"input": {"raw_text": "Hello Vani", "pad_missing_cells": true, "format_hint": "AUTO", "first_row_is_header": true, "trim_whitespace": true}, "name": "Sample name"}, "percent_bounds": {"right_pct": 1.5, "top_pct": 1.5, "bottom_pct": 1.5, "left_pct": 1.5}, "absolute_bounds": {"x": 1.5, "width": 1.5, "y": 1.5, "height": 1.5}, "target": {"insert_index": 1, "target_type": "ZONE_ROOT", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table"
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");
}{
"payload": {
"input": {
"raw_text": "Hello Vani",
"pad_missing_cells": true,
"format_hint": "AUTO",
"first_row_is_header": true,
"trim_whitespace": true
},
"name": "Sample name"
},
"percent_bounds": {
"right_pct": 1.5,
"top_pct": 1.5,
"bottom_pct": 1.5,
"left_pct": 1.5
},
"absolute_bounds": {
"x": 1.5,
"width": 1.5,
"y": 1.5,
"height": 1.5
},
"target": {
"insert_index": 1,
"target_type": "ZONE_ROOT",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table",
"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": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table",
"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