Vani Logo Vani / API Docs v1
Access Vani
Core / Elements

Elements

Create, read, update, and delete the objects on a zone canvas: shapes, connectors, group shapes, frames, and their text.

Shapes

Insert, list, update, and delete shapes directly on a zone.
Get the shapes in a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
    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");
}
Successful response
{
  "data": {
    "total_count": 3,
    "elements": [
      {
        "shape": {
          "shape": {
            "flowchart": {
              "type": "PROCESS"
            },
            "text": {
              "paragraphs": [
                {
                  "style": {
                    "spacing": {
                      "line": 1.2
                    },
                    "level": 1,
                    "halign": "CENTER"
                  },
                  "id": "a2893ee3-3085-5215-9254-e610c8589892",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "NORMAL",
                        "size": 18,
                        "color": {
                          "rgb": {}
                        },
                        "font_name": {
                          "name": "Open Sans"
                        }
                      },
                      "text": "Process"
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                },
                "auto_fit": "TEXT"
              }
            },
            "properties": {
              "layout": {
                "top": 440,
                "left": 40,
                "width": 200,
                "height": 120
              },
              "fills": [
                {
                  "solid": {
                    "color": {
                      "rgb": {
                        "red": 76,
                        "green": 175,
                        "blue": 80
                      }
                    }
                  }
                }
              ]
            }
          }
        },
        "id": "8740168d-dea1-58bc-b551-ed8847fa9ef2"
      },
      {
        "shape": {
          "shape": {
            "block_arrow": {
              "single_arrow": {}
            },
            "text": {
              "paragraphs": [
                {
                  "style": {
                    "spacing": {
                      "line": 1.2
                    },
                    "level": 1,
                    "halign": "CENTER"
                  },
                  "id": "64f7c556-37f0-5f0a-9881-8a582d18949e",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "NORMAL",
                        "size": 18,
                        "color": {
                          "rgb": {}
                        },
                        "font_name": {
                          "name": "Open Sans"
                        }
                      },
                      "text": "Next"
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                },
                "auto_fit": "TEXT"
              }
            },
            "properties": {
              "layout": {
                "top": 440,
                "left": 280,
                "width": 200,
                "height": 120
              },
              "fills": [
                {
                  "solid": {
                    "color": {
                      "rgb": {
                        "red": 255,
                        "green": 87,
                        "blue": 34
                      }
                    }
                  }
                }
              ]
            }
          }
        },
        "id": "d2f8315c-1743-5320-9287-b4574fdd8b8d"
      },
      {
        "shape": {
          "shape": {
            "flowchart": {
              "type": "DECISION"
            },
            "text": {
              "paragraphs": [
                {
                  "id": "2f2eeccd-410c-419c-acd6-09d74343fa6e",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "NORMAL"
                      }
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                }
              }
            },
            "properties": {
              "layout": {
                "top": 40,
                "left": 520,
                "width": 200,
                "height": 120
              }
            }
          }
        },
        "id": "44444444-4444-5444-9444-444444444444"
      }
    ]
  },
  "message": "Shapes fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/0FFDBC10-542D-4DB4-BA29-76A11200136E/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/shapes",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
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
Insert one or more shapes into a zone
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Shape elements to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes'),
  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({
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"shape\":{\"shape\":{\"callout\":{\"type\":\"LINE\"}}},\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"shape": {"shape": {"callout": {"type": "LINE"}}}, "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
    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");
}
{
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}
Successful response
{
  "data": {
    "inserted_ids": [
      "e4163cc2-1d24-546b-a8a5-6b0817da7887",
      "d406b989-45f5-5018-a6b9-4f6671e32527",
      "0c568942-223e-5fec-9a5c-1989fe8c5f49",
      "5eeac863-9d71-5c23-8b30-6a0bc390b87f",
      "facef9f3-94dd-5fb6-bee7-c58cbd9f28b8"
    ]
  },
  "message": "Shapes inserted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/0FFDBC10-542D-4DB4-BA29-76A11200136E/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/0FFDBC10-542D-4DB4-BA29-76A11200136E/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
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
Update one or more shapes in a zone
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element shape patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"text\":{\"mutations\":[{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}},{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}}],\"styles\":[{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}},{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}}]},\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "text": {"mutations": {{"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}, {"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}}, "styles": {{"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}, {"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}}}, "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "id": "CF7D1480-628C-476D-9923-AEE7C5D3C742",
        "status": "success"
      },
      {
        "id": "49BA9283-408C-47B4-828D-4E9880A9161F",
        "status": "success"
      },
      {
        "id": "339D2634-16D3-4445-A675-4696B8FD4EBB",
        "status": "success"
      },
      {
        "id": "269FAC98-B4F5-41D1-9643-6368706BF69E",
        "status": "success"
      },
      {
        "id": "A16989F9-5C29-4141-A303-BA07C9A62AE9",
        "status": "success"
      },
      {
        "id": "10C43DC2-F3BD-470C-8929-85B593CBE9B1",
        "status": "success"
      },
      {
        "id": "04164FA1-35C8-4BE1-840C-78ACDA7CCCB6",
        "status": "success"
      },
      {
        "id": "D33D70D0-AEE6-4A8F-B882-546E2E66A6E0",
        "status": "success"
      }
    ]
  },
  "message": "Shapes updated successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1A0B4F55-BF08-4A1F-83B4-BCFC97EE3158/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/0FFDBC10-542D-4DB4-BA29-76A11200136E/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more shapes from a zone
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/shapes'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "shape_id": "FE0C9EDB-D1BA-446A-A402-5C4CB87F9458",
        "status": "success"
      },
      {
        "shape_id": "1F9A7500-7CF3-4E9A-A946-524CD817744B",
        "status": "success"
      },
      {
        "shape_id": "937E51FD-6C25-4870-A936-D97522394925",
        "status": "success"
      }
    ]
  },
  "message": "Shapes deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/0FFDBC10-542D-4DB4-BA29-76A11200136E/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/shapes",
  "status": "error"
}
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

Connectors

Insert, list, update, and delete connectors directly on a zone.
Get the connectors in a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
    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");
}
Successful response
{
  "data": {
    "total_count": 3,
    "elements": [
      {
        "connector": {
          "connected": {
            "first": {
              "marker": "DIAMOND",
              "shape_id": "6FE655E1-6039-46E1-BECA-30067ED96517"
            },
            "second": {
              "side": "WEST",
              "marker": "OVAL",
              "shape_id": "8BB93A22-6976-4976-AA4C-417D16BA8876"
            }
          },
          "text": {
            "paragraphs": [
              {
                "style": {
                  "halign": "CENTER"
                },
                "id": "a3333333-3333-5333-8333-333333333333",
                "portions": [
                  {
                    "style": {
                      "fontweight": "NORMAL"
                    },
                    "text": "Curve (diamond → oval)"
                  }
                ]
              }
            ],
            "properties": {}
          },
          "type": "CURVE",
          "stroke": {
            "captype": "CAPROUND",
            "width": 3,
            "type": "SQUARE_DOT",
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 156,
                    "green": 39,
                    "blue": 176
                  }
                }
              }
            }
          }
        },
        "id": "2394a2a8-7984-565a-9e10-bdc399a950de"
      },
      {
        "connector": {
          "connected": {
            "first": {
              "side": "NORTH",
              "marker": "OPEN",
              "shape_id": "01EEDC0C-45EC-44A3-96F6-740155ACE02C"
            },
            "second": {
              "side": "SOUTH",
              "marker": "BLOCK",
              "shape_id": "B579FA1E-B4D2-41BC-B543-25B3C1790314"
            }
          },
          "text": {
            "paragraphs": [
              {
                "style": {
                  "halign": "CENTER"
                },
                "id": "3ab1987e-7e55-516b-a3c7-5248626bab9c",
                "portions": [
                  {
                    "style": {
                      "fontweight": "NORMAL"
                    },
                    "text": "Elbow with label"
                  }
                ]
              }
            ],
            "properties": {}
          },
          "type": "ELBOW",
          "stroke": {
            "width": 2,
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 76,
                    "green": 175,
                    "blue": 80
                  }
                }
              }
            }
          }
        },
        "id": "0f6bf425-0e92-50f6-bc3d-bfda4773fad8"
      },
      {
        "connector": {
          "connected": {
            "first": {
              "side": "EAST",
              "marker": "NONE",
              "shape_id": "62E4A270-79F6-44F8-A381-9BDB9718DFC4"
            },
            "second": {
              "side": "WEST",
              "marker": "CLASSIC",
              "shape_id": "F4F4F69D-2B6E-4241-9A87-79393F0D0F50"
            }
          },
          "text": {
            "paragraphs": [
              {
                "style": {
                  "halign": "CENTER"
                },
                "id": "a5555555-5555-5555-8555-555555555555",
                "portions": [
                  {
                    "style": {
                      "fontweight": "NORMAL"
                    },
                    "text": "Line (point attach)"
                  }
                ]
              }
            ],
            "properties": {}
          },
          "stroke": {
            "width": 1,
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 244,
                    "green": 67,
                    "blue": 54
                  }
                }
              }
            }
          }
        },
        "id": "660e559f-e2fd-5d6e-a69a-e55a9d0e0ed8"
      }
    ]
  },
  "message": "Connectors fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/connectors",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
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
Insert one or more connectors into a zone
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Connector elements to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors'),
  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({
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"connector\":{\"connected\":{\"first\":{\"shape_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"side\":\"NORTH\",\"marker\":\"NONE\",\"point\":{\"x\":1.5,\"y\":1.5}},\"second\":{\"shape_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"side\":\"NORTH\",\"marker\":\"NONE\",\"point\":{\"x\":1.5,\"y\":1.5}}},\"text\":{\"placeholder\":{\"type\":\"TITLE\"},\"paragraphs\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"style\":{\"spacing\":{},\"level\":1,\"portion_style\":{},\"halign\":\"string\"},\"portions\":[{},{}]},{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"style\":{\"spacing\":{},\"level\":1,\"portion_style\":{},\"halign\":\"string\"},\"portions\":[{},{}]}],\"properties\":{\"inset\":{\"top\":1.5,\"left\":1.5,\"bottom\":1.5,\"right\":1.5},\"auto_fit\":\"NONE\",\"valign\":\"MIDDLE\",\"para_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"portion_style\":{\"fontweight\":\"string\",\"size\":1,\"color\":{},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{}},\"halign\":\"LEFT\"}}},\"type\":\"LINE\",\"stroke\":{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{\"hsb\":{}}},\"alpha\":1.5}}},\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"connector": {"connected": {"first": {"shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "side": "NORTH", "marker": "NONE", "point": {"x": 1.5, "y": 1.5}}, "second": {"shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "side": "NORTH", "marker": "NONE", "point": {"x": 1.5, "y": 1.5}}}, "text": {"placeholder": {"type": "TITLE"}, "paragraphs": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "style": {"spacing": {}, "level": 1, "portion_style": {}, "halign": "string"}, "portions": {{}, {}}}, {"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "style": {"spacing": {}, "level": 1, "portion_style": {}, "halign": "string"}, "portions": {{}, {}}}}, "properties": {"inset": {"top": 1.5, "left": 1.5, "bottom": 1.5, "right": 1.5}, "auto_fit": "NONE", "valign": "MIDDLE", "para_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "portion_style": {"fontweight": "string", "size": 1, "color": {}, "underline": true, "strike": true, "italic": true, "font_name": {}}, "halign": "LEFT"}}}, "type": "LINE", "stroke": {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {"hsb": {}}}, "alpha": 1.5}}}, "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
    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");
}
{
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}
Successful response
{
  "data": {
    "inserted_ids": [
      "0c1c8b83-2264-544f-a5a6-f0b09ff8df38",
      "fe557711-f11e-5cda-add7-62cbb92b93ea",
      "2394a2a8-7984-565a-9e10-bdc399a950de",
      "0f6bf425-0e92-50f6-bc3d-bfda4773fad8",
      "660e559f-e2fd-5d6e-a69a-e55a9d0e0ed8"
    ]
  },
  "message": "Connectors inserted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
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
Update one or more connectors in a zone
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element connector patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"text\":{\"mutations\":[{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}},{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}}],\"styles\":[{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}},{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}}]},\"properties\":{\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"alpha\":1.5}}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "text": {"mutations": {{"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}, {"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}}, "styles": {{"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}, {"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}}}, "properties": {"strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "alpha": 1.5}}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "id": "0c1c8b83-2264-544f-a5a6-f0b09ff8df38",
        "status": "success"
      },
      {
        "id": "fe557711-f11e-5cda-add7-62cbb92b93ea",
        "status": "success"
      },
      {
        "id": "2394a2a8-7984-565a-9e10-bdc399a950de",
        "status": "success"
      },
      {
        "id": "0f6bf425-0e92-50f6-bc3d-bfda4773fad8",
        "status": "success"
      },
      {
        "id": "660e559f-e2fd-5d6e-a69a-e55a9d0e0ed8",
        "status": "success"
      }
    ]
  },
  "message": "Connectors updated successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more connectors from a zone
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/connectors'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "shape_id": "2394a2a8-7984-565a-9e10-bdc399a950de",
        "status": "success"
      },
      {
        "shape_id": "27613A45-CC58-4EAA-9A13-60C865CE038A",
        "status": "success"
      },
      {
        "shape_id": "909813A9-CB90-4F51-BD7A-2D96E3F02B35",
        "status": "success"
      },
      {
        "shape_id": "EA5CEF19-D92C-4053-8410-EC29594F3DE6",
        "status": "success"
      }
    ]
  },
  "message": "Connectors deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connectors",
  "status": "error"
}
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

Group Shapes

Group and ungroup shapes directly on a zone.
Get the group shapes in a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
    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");
}
Successful response
{
  "data": {
    "total_count": 3,
    "elements": [
      {
        "group_shape": {
          "layout": {
            "top": -1703,
            "left": 619,
            "width": 1054.31,
            "height": 1168.577
          },
          "objects": [
            {
              "group_shape": {
                "layout": {
                  "top": -389.62683,
                  "left": 646.5,
                  "width": 822.5403,
                  "height": 544.8257
                },
                "objects": [
                  {
                    "shape": {
                      "shape": {
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "FCE56BCB-D8FB-4FBC-B189-72BF17DA39EC",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  }
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "basic": {},
                        "properties": {
                          "layout": {
                            "top": -181,
                            "left": 646.5,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "solid": {
                                "color": {
                                  "hsb": {
                                    "brightness": 1
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "9B379582-B285-47D2-BF41-DD76EF9FE958"
                  },
                  {
                    "shape": {
                      "shape": {
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "5134DB4A-26F3-4CDE-BDF6-D8137DF237F6",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  }
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "basic": {},
                        "properties": {
                          "layout": {
                            "top": -389.62683,
                            "left": 938.52606,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "gradient": {
                                "stops": [
                                  {
                                    "color": {
                                      "hsb": {
                                        "saturation": 0.65432,
                                        "brightness": 0.95294,
                                        "hue": 0.0283
                                      }
                                    },
                                    "position": 0.0581
                                  },
                                  {
                                    "color": {
                                      "hsb": {
                                        "saturation": 0.51479,
                                        "brightness": 0.66275,
                                        "hue": 0.48659
                                      }
                                    },
                                    "position": 0.9538
                                  }
                                ],
                                "type": "RADIAL"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "CC9425EB-D2F8-4439-8303-1CA336058EFB"
                  },
                  {
                    "shape": {
                      "shape": {
                        "star": {
                          "type": "POINT",
                          "point": {
                            "type": "SEVEN_POINT"
                          }
                        },
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "9E2F0822-8E97-47E9-BB92-58A0F0BD421C",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  },
                                  "text": "start"
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "properties": {
                          "layout": {
                            "top": 30.198849,
                            "left": 1344.0403,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "solid": {
                                "color": {
                                  "hsb": {
                                    "brightness": 1
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "FF0024A2-785E-464D-84CA-36BB1FBB9786"
                  }
                ]
              },
              "id": "35C6DB02-F32C-443A-81EB-5D43E8021B8B"
            },
            {
              "shape": {
                "shape": {
                  "callout": {
                    "type": "CLOUD_CALLOUT"
                  },
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "BE56BD69-C330-489A-B98E-7CB175FFBD23",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "properties": {
                    "layout": {
                      "top": 396.26172,
                      "left": 1048.8867,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "77E4DF34-EB21-4F65-B75B-C1E447A12A7A"
            },
            {
              "shape": {
                "shape": {
                  "star": {
                    "ribbon": {
                      "type": "DOWN"
                    },
                    "type": "RIBBON"
                  },
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "14C9561F-A2E9-473B-96CC-6382D957AC66",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "properties": {
                    "layout": {
                      "top": 653.9501,
                      "left": 1575.8098,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "05F382AB-F890-4823-81D3-510B0DE675AE"
            }
          ]
        },
        "id": "18afea79-4ec1-447e-b740-d561a99ec2b0"
      },
      {
        "group_shape": {
          "layout": {
            "top": 945,
            "left": 1234,
            "width": 1193.688,
            "height": 996.707
          },
          "objects": [
            {
              "group_shape": {
                "layout": {
                  "top": 953.56714,
                  "left": 828.33813,
                  "width": 383.9535,
                  "height": 133.41003
                },
                "objects": [
                  {
                    "shape": {
                      "shape": {
                        "mathematical_symbol": {
                          "type": "MULTIPLY"
                        },
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "43965B02-6A77-49A8-8FE3-B99BE06178C8",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  }
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "properties": {
                          "layout": {
                            "top": 953.56714,
                            "left": 1087.2916,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "solid": {
                                "color": {
                                  "hsb": {
                                    "saturation": 0.44715,
                                    "brightness": 0.96471,
                                    "hue": 0.87273
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "5D923685-27EE-4905-8815-C16F1D8A8DCC"
                  },
                  {
                    "shape": {
                      "shape": {
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "99D88FE8-CE11-4894-BFA6-D08D70ABE4E4",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  }
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "basic": {},
                        "properties": {
                          "layout": {
                            "top": 961.9772,
                            "left": 828.33813,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "solid": {
                                "color": {
                                  "hsb": {
                                    "brightness": 1
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "EEBB15FC-D5CD-47B5-8B0C-9B765616B4B9"
                  }
                ]
              },
              "id": "CBFE9913-4D10-486A-80F9-03D160C2C6A5"
            },
            {
              "shape": {
                "shape": {
                  "flowchart": {
                    "type": "INTERNAL_STORAGE"
                  },
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "6403E8B7-B380-42DF-8588-F480DA2BED8F",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "properties": {
                    "layout": {
                      "top": 1244.6555,
                      "left": 505.62988,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "6176DD11-BC4E-47A5-81AC-3EE7CCD5EDE6"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "FBFEBFF7-F671-45C8-A5CC-8A7DC4A51780",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {
                    "type": "CLOUD"
                  },
                  "properties": {
                    "layout": {
                      "top": 1006.0866,
                      "left": 1450.2146,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "saturation": 0.07653,
                              "brightness": 0.76863,
                              "hue": 0.61111
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "62B4990B-D8FB-43D8-A135-726E3A37959C"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "A60696AF-9992-40D2-A24C-6353402C9C2C",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {
                    "type": "HEART"
                  },
                  "properties": {
                    "layout": {
                      "top": 372.94846,
                      "left": 1574.3179,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "saturation": 0.93088,
                              "brightness": 0.85098
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "6F518490-1979-4AB6-8700-DFE27480826D"
            }
          ]
        },
        "id": "225b1dfc-c5ea-4e61-8928-c973d75811a5"
      },
      {
        "group_shape": {
          "layout": {
            "top": -389.62683,
            "left": 646.5,
            "width": 822.5403,
            "height": 544.8257
          },
          "objects": [
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "FCE56BCB-D8FB-4FBC-B189-72BF17DA39EC",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {},
                  "properties": {
                    "layout": {
                      "top": -181,
                      "left": 646.5,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "9B379582-B285-47D2-BF41-DD76EF9FE958"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "5134DB4A-26F3-4CDE-BDF6-D8137DF237F6",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {},
                  "properties": {
                    "layout": {
                      "top": -389.62683,
                      "left": 938.52606,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "gradient": {
                          "stops": [
                            {
                              "color": {
                                "hsb": {
                                  "saturation": 0.65432,
                                  "brightness": 0.95294,
                                  "hue": 0.0283
                                }
                              },
                              "position": 0.0581
                            },
                            {
                              "color": {
                                "hsb": {
                                  "saturation": 0.51479,
                                  "brightness": 0.66275,
                                  "hue": 0.48659
                                }
                              },
                              "position": 0.9538
                            }
                          ],
                          "type": "RADIAL"
                        }
                      }
                    ]
                  }
                }
              },
              "id": "CC9425EB-D2F8-4439-8303-1CA336058EFB"
            },
            {
              "shape": {
                "shape": {
                  "star": {
                    "type": "POINT",
                    "point": {
                      "type": "SEVEN_POINT"
                    }
                  },
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "9E2F0822-8E97-47E9-BB92-58A0F0BD421C",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            },
                            "text": "start"
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "properties": {
                    "layout": {
                      "top": 30.198849,
                      "left": 1344.0403,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "FF0024A2-785E-464D-84CA-36BB1FBB9786"
            }
          ]
        },
        "id": "35C6DB02-F32C-443A-81EB-5D43E8021B8B"
      }
    ]
  },
  "message": "GroupShapes fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/groupshapes",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
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
Group or ungroup shapes in a zone (op-aware)
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
op REQUIRED string Group operation (max length 50)
groupungroup
nested_groups array of string Array-of-arrays of uuids (required for op=group) (min 1, max 1)
groups array of string Flat uuid list (required for op=ungroup) (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes'),
  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({
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"op\":\"group\",\"nested_groups\":[\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"],\"groups\":[\"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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"op": "group", "nested_groups": {"f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "groups": {"f47ac10b-58cc-4372-a567-0e02b2c3d479"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
    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");
}
{
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ]
}
Successful response
{
  "data": {
    "groups": [
      {
        "group_id": "0f95159c-24f7-4b3d-b7b0-9a080dc9e011",
        "group_index": 0,
        "status": "success"
      },
      {
        "group_id": "18afea79-4ec1-447e-b740-d561a99ec2b0",
        "group_index": 1,
        "status": "success"
      },
      {
        "group_id": "225b1dfc-c5ea-4e61-8928-c973d75811a5",
        "group_index": 2,
        "status": "success"
      },
      {
        "group_id": "390f3d93-0c2a-4f10-869a-590522a4fd44",
        "group_index": 3,
        "status": "success"
      }
    ]
  },
  "message": "Shapes grouped successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/C1886757-1B63-4281-A6B7-B478147210EB/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
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
Update one or more group shapes in a zone
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element groupshape patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5}}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "id": "E0DD0833-18B6-4D09-A623-EF518293E06C",
        "errors": [
          {
            "error_code": "EL1006",
            "message": "Not a groupshape",
            "facet": "element"
          }
        ],
        "status": "failed"
      },
      {
        "id": "F5C83D11-D584-4BF0-865E-DC3A1C6D0EC2",
        "errors": [
          {
            "error_code": "EL1006",
            "message": "specialised STICKYNOTE container is not a groupshape",
            "facet": "element"
          }
        ],
        "status": "failed"
      },
      {
        "id": "8F28ED4F-69BB-49B2-81CE-D33E323892C8",
        "status": "success"
      }
    ]
  },
  "message": "Partial success: some operations failed",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more group shapes in a zone
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/groupshapes'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "shape_id": "F0C973CE-B8A1-4117-B04A-7711FE6A020C",
        "status": "success"
      },
      {
        "shape_id": "BBCDD65F-C6BF-4D73-ACF9-FBB4608A444C",
        "status": "success"
      },
      {
        "shape_id": "89EC067F-EAEF-419A-B800-88045B81663F",
        "status": "success"
      }
    ]
  },
  "message": "Group shapes deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/groupshapes",
  "status": "error"
}
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

Frames

Insert, list, update, and delete zone-root frames.
Get the zone-root frames in a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
    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");
}
Successful response
{
  "data": {
    "frames": [
      {
        "meta": {
          "name": "Slide Landscape",
          "id": "f1f362c6-9a9f-58e5-8f47-149f741c91b8"
        },
        "graphic_objects": [
          {
            "shape": {
              "shape": {
                "callout": {
                  "type": "ROUNDED_RECTANGLE_CALLOUT"
                },
                "text": {
                  "paragraphs": [
                    {
                      "style": {
                        "spacing": {
                          "line": 1.2
                        },
                        "level": 1,
                        "halign": "CENTER"
                      },
                      "id": "D767F5FA-82BF-4694-8690-220CBDC46E46",
                      "portions": [
                        {
                          "style": {
                            "size": 18,
                            "color": {
                              "hsb": {}
                            },
                            "font_name": {
                              "name": "Open Sans"
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "properties": {
                    "inset": {
                      "top": 5,
                      "left": 5,
                      "bottom": 5,
                      "right": 5
                    },
                    "auto_fit": "TEXT"
                  }
                },
                "properties": {
                  "layout": {
                    "top": 558.59375,
                    "left": 1124.7266,
                    "width": 125,
                    "height": 125
                  },
                  "strokes": [
                    {
                      "jointype": "MITER",
                      "width": 1.5,
                      "fill": {
                        "solid": {
                          "color": {
                            "hsb": {
                              "saturation": 0.3,
                              "brightness": 0.286,
                              "hue": 0.764
                            }
                          }
                        }
                      }
                    }
                  ],
                  "fills": [
                    {
                      "solid": {
                        "color": {
                          "hsb": {
                            "brightness": 1
                          }
                        }
                      }
                    }
                  ]
                }
              }
            },
            "id": "11209A82-3D89-4384-AD8F-CDCF1B93C67C"
          },
          {
            "shape": {
              "shape": {
                "text": {
                  "paragraphs": [
                    {
                      "style": {
                        "spacing": {
                          "line": 1.2
                        },
                        "level": 1,
                        "halign": "CENTER"
                      },
                      "id": "FD77B19F-41DE-433B-A652-FF90D4306E56",
                      "portions": [
                        {
                          "style": {
                            "size": 18,
                            "color": {
                              "hsb": {}
                            },
                            "font_name": {
                              "name": "Open Sans"
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "properties": {
                    "inset": {
                      "top": 5,
                      "left": 5,
                      "bottom": 5,
                      "right": 5
                    },
                    "auto_fit": "TEXT"
                  }
                },
                "basic": {
                  "type": "OVAL"
                },
                "properties": {
                  "layout": {
                    "top": 159.45312,
                    "left": 1533.0078,
                    "width": 125,
                    "height": 125
                  },
                  "strokes": [
                    {
                      "jointype": "MITER",
                      "width": 1.5,
                      "fill": {
                        "solid": {
                          "color": {
                            "hsb": {
                              "saturation": 0.3,
                              "brightness": 0.286,
                              "hue": 0.764
                            }
                          }
                        }
                      }
                    }
                  ],
                  "fills": [
                    {
                      "solid": {
                        "color": {
                          "hsb": {
                            "brightness": 1
                          }
                        }
                      }
                    }
                  ]
                }
              }
            },
            "id": "EF25C6E5-BDBE-423B-8244-818DB95FD79A"
          }
        ],
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "width": 1920,
            "height": 1080
          },
          "strokes": [
            {
              "width": 5,
              "fill": {
                "solid": {
                  "color": {
                    "rgb": {
                      "red": 17,
                      "green": 24,
                      "blue": 39
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 255,
                    "green": 255,
                    "blue": 255
                  }
                }
              }
            }
          ]
        }
      },
      {
        "meta": {
          "name": "Slide Portrait",
          "id": "68747720-4a7f-5499-95b8-9ebf4b16fc7e"
        },
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "left": 2000,
            "width": 1080,
            "height": 1920
          },
          "strokes": [
            {
              "captype": "CAPROUND",
              "width": 5,
              "type": "DASH",
              "fill": {
                "solid": {
                  "color": {
                    "rgb": {
                      "red": 29,
                      "green": 78,
                      "blue": 216
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "gradient": {
                "stops": [
                  {
                    "color": {
                      "rgb": {
                        "red": 255,
                        "green": 248,
                        "blue": 225
                      }
                    }
                  },
                  {
                    "color": {
                      "rgb": {
                        "red": 255,
                        "green": 204,
                        "blue": 128
                      }
                    },
                    "position": 1
                  }
                ]
              }
            }
          ]
        }
      },
      {
        "meta": {
          "name": "A4",
          "id": "6d198740-ac2c-5ac1-b7ab-90471f922f2b"
        },
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "top": 2000,
            "width": 794,
            "height": 1123
          },
          "strokes": [
            {
              "jointype": "MITER",
              "width": 4.5,
              "position": "INSIDE",
              "fill": {
                "solid": {
                  "color": {
                    "hsb": {
                      "saturation": 0.85,
                      "brightness": 0.25,
                      "hue": 0.0016975309
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "gradient": {
                "stops": [
                  {
                    "color": {
                      "rgb": {
                        "red": 255,
                        "green": 255,
                        "blue": 255
                      }
                    }
                  },
                  {
                    "color": {
                      "rgb": {
                        "red": 229,
                        "green": 231,
                        "blue": 235
                      }
                    },
                    "position": 1
                  }
                ],
                "type": "RADIAL"
              }
            }
          ]
        }
      }
    ],
    "total_count": 3
  },
  "message": "Frames fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/DEDA88D7-7A93-4D83-B69A-F5218927091C/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
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
Insert one or more zone-root frames into a zone
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
frames REQUIRED array of object Frames to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames'),
  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({
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"frames\":[{\"meta\":{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"},\"type\":\"A4\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"frames": {{"meta": {"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}, "type": "A4", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
    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");
}
{
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "inserted_ids": [
      "f1f362c6-9a9f-58e5-8f47-149f741c91b8",
      "68747720-4a7f-5499-95b8-9ebf4b16fc7e",
      "6d198740-ac2c-5ac1-b7ab-90471f922f2b",
      "d2e81218-0c52-5fca-8e9b-bf68bccf38f0",
      "74b0dfa1-9186-5290-a16c-89b51db3bd31"
    ]
  },
  "message": "Frames inserted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/DEDA88D7-7A93-4D83-B69A-F5218927091C/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/DEDA88D7-7A93-4D83-B69A-F5218927091C/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
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
Update one or more zone-root frames in a zone
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
frames REQUIRED array of object Per-frame patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames'),
  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({
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"frames\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"frames": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
    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");
}
{
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "id": "6d198740-ac2c-5ac1-b7ab-90471f922f2b",
        "status": "success"
      },
      {
        "id": "d2e81218-0c52-5fca-8e9b-bf68bccf38f0",
        "status": "success"
      },
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found",
            "facet": "frame"
          }
        ],
        "status": "failed"
      },
      {
        "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found",
            "facet": "frame"
          }
        ],
        "status": "failed"
      }
    ]
  },
  "message": "Partial success: some operations failed",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more zone-root frames from a zone
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id
NameTypeDescription
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "frame_id": "f1f362c6-9a9f-58e5-8f47-149f741c91b8",
        "status": "success"
      },
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found"
          }
        ],
        "status": "failed"
      }
    ]
  },
  "message": "Partial success: some operations failed",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames",
  "status": "error"
}
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

Shapes on Frame

Insert, list, update, and delete shapes inside a frame.
Get the shapes in a frame
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
    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");
}
Successful response
{
  "data": {
    "total_count": 3,
    "elements": [
      {
        "shape": {
          "shape": {
            "text": {
              "paragraphs": [
                {
                  "style": {
                    "spacing": {
                      "line": 1.2
                    },
                    "level": 1,
                    "halign": "CENTER"
                  },
                  "id": "f1a2b3c4-d5e6-4a89-b012-c3d4e5f6a7b8",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "BOLD",
                        "size": 28,
                        "color": {
                          "rgb": {
                            "red": 255,
                            "green": 255,
                            "blue": 255
                          }
                        },
                        "font_name": {
                          "name": "Open Sans"
                        }
                      },
                      "text": "Rectangle"
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                },
                "auto_fit": "TEXT"
              }
            },
            "basic": {},
            "properties": {
              "layout": {
                "top": 100,
                "left": 100,
                "width": 900,
                "fliph": true,
                "height": 500
              },
              "strokes": [
                {
                  "jointype": "MITER",
                  "width": 4,
                  "fill": {
                    "solid": {
                      "color": {
                        "hsb": {}
                      }
                    },
                    "alpha": 0.2
                  }
                }
              ],
              "fills": [
                {
                  "solid": {
                    "color": {
                      "rgb": {
                        "red": 40,
                        "green": 10,
                        "blue": 10
                      }
                    }
                  },
                  "alpha": 0.2
                }
              ]
            }
          }
        },
        "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
      },
      {
        "shape": {
          "shape": {
            "text": {
              "paragraphs": [
                {
                  "style": {
                    "spacing": {
                      "line": 1.2
                    },
                    "level": 1,
                    "halign": "CENTER"
                  },
                  "id": "e2c3d4e5-f6a7-4b90-ac1d-2e3f4a5b6c7e",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "BOLD",
                        "size": 28,
                        "color": {
                          "rgb": {
                            "red": 255,
                            "green": 255,
                            "blue": 255
                          }
                        },
                        "font_name": {
                          "name": "Open Sans"
                        }
                      },
                      "text": "Oval"
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                },
                "auto_fit": "TEXT"
              }
            },
            "basic": {
              "type": "OVAL"
            },
            "properties": {
              "layout": {
                "top": 100,
                "left": 1200,
                "width": 800,
                "flipv": true,
                "height": 500
              },
              "strokes": [
                {
                  "captype": "CAPROUND",
                  "width": 4,
                  "position": "INSIDE",
                  "type": "DASH",
                  "fill": {
                    "solid": {
                      "color": {
                        "rgb": {
                          "red": 2,
                          "green": 30,
                          "blue": 22
                        }
                      }
                    },
                    "alpha": 0.2
                  }
                }
              ],
              "fills": [
                {
                  "solid": {
                    "color": {
                      "hsb": {
                        "saturation": 0.96,
                        "brightness": 0.18,
                        "hue": 0.43888888
                      }
                    }
                  },
                  "alpha": 0.2
                }
              ]
            }
          }
        },
        "id": "b2c3d4e5-f6a7-4b90-9c1d-2e3f4a5b6c7d"
      },
      {
        "shape": {
          "shape": {
            "star": {
              "type": "POINT",
              "point": {
                "type": "FIVE_POINT"
              }
            },
            "text": {
              "paragraphs": [
                {
                  "style": {
                    "spacing": {
                      "line": 1.2
                    },
                    "level": 1,
                    "halign": "CENTER"
                  },
                  "id": "f6a7b8c9-d0e1-4f23-bd34-6b7c8d9e0f1a",
                  "portions": [
                    {
                      "style": {
                        "fontweight": "BOLD",
                        "size": 28,
                        "color": {
                          "hsb": {
                            "saturation": 0.27,
                            "brightness": 0.95,
                            "hue": 0.6111111
                          }
                        },
                        "font_name": {
                          "name": "Open Sans"
                        }
                      },
                      "text": "Star"
                    }
                  ]
                }
              ],
              "properties": {
                "inset": {
                  "top": 5,
                  "left": 10,
                  "bottom": 5,
                  "right": 10
                },
                "auto_fit": "TEXT"
              }
            },
            "properties": {
              "layout": {
                "top": 900,
                "left": 100,
                "width": 800,
                "flipv": true,
                "fliph": true,
                "height": 800
              },
              "strokes": [
                {
                  "captype": "CAPROUND",
                  "width": 4,
                  "type": "DASH",
                  "fill": {
                    "solid": {
                      "color": {
                        "rgb": {
                          "red": 15,
                          "green": 23,
                          "blue": 42
                        }
                      }
                    },
                    "alpha": 0.2
                  }
                }
              ],
              "fills": [
                {
                  "gradient": {
                    "stops": [
                      {
                        "color": {
                          "hsb": {
                            "saturation": 0.95,
                            "brightness": 0.4,
                            "hue": 0.125
                          }
                        }
                      },
                      {
                        "color": {
                          "rgb": {
                            "red": 63,
                            "green": 10,
                            "blue": 10
                          }
                        },
                        "position": 1
                      }
                    ],
                    "type": "RADIAL"
                  },
                  "alpha": 0.2
                }
              ]
            }
          }
        },
        "id": "e5f6a7b8-c9d0-4e12-bd23-5a6b7c8d9e0f"
      }
    ]
  },
  "message": "Shapes in frame fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
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
Insert one or more shapes into a frame
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Shape elements to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes'),
  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({
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"shape\":{\"shape\":{\"callout\":{\"type\":\"LINE\"}}},\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"shape": {"shape": {"callout": {"type": "LINE"}}}, "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
    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");
}
{
  "elements": [
    {
      "shape": {
        "shape": {
          "callout": {
            "type": "LINE"
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "shape_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "b2c3d4e5-f6a7-4b90-9c1d-2e3f4a5b6c7d",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "c3d4e5f6-a7b8-4c9d-be1f-3a4b5c6d7e8f",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "e5f6a7b8-c9d0-4e12-bd23-5a6b7c8d9e0f",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      }
    ]
  },
  "message": "Shapes inserted in frame successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
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
Update one or more shapes in a frame
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element shape patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"text\":{\"mutations\":[{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}},{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}}],\"styles\":[{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}},{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}}]},\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "text": {"mutations": {{"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}, {"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}}, "styles": {{"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}, {"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}}}, "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "b2c3d4e5-f6a7-4b90-9c1d-2e3f4a5b6c7d",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "c3d4e5f6-a7b8-4c9d-be1f-3a4b5c6d7e8f",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "e5f6a7b8-c9d0-4e12-bd23-5a6b7c8d9e0f",
        "status": "success"
      }
    ]
  },
  "message": "Shape in frame updated successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more shapes from a frame
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "shape_id": "d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "e5f6a7b8-c9d0-4e12-bd23-5a6b7c8d9e0f",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "shape_id": "64CC53D2-C341-4132-870B-30E516A54BEA",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      }
    ]
  },
  "message": "Shapes in frame deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/shapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/shapes",
  "status": "error"
}
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

Connectors on Frame

Insert, list, update, and delete connectors inside a frame.
Get the connectors in a frame
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
    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");
}
Successful response
{
  "data": {
    "total_count": 4,
    "elements": [
      {
        "connector": {
          "stroke": {
            "jointype": "MITER",
            "width": 1.5,
            "fill": {
              "solid": {
                "color": {
                  "hsb": {
                    "saturation": 0.3,
                    "brightness": 0.286,
                    "hue": 0.764
                  }
                }
              }
            }
          }
        },
        "id": "B37069B4-6676-4B1D-9DE8-13BF28854044"
      },
      {
        "connector": {
          "connected": {
            "first": {
              "side": "EAST",
              "marker": "NONE",
              "shape_id": "BAD2B78A-C17A-4A75-BFD7-89CD2ABDF7E8"
            },
            "second": {
              "side": "WEST",
              "marker": "OPEN",
              "shape_id": "848D9B76-A1D7-4A7A-B5CD-CEB4FF6452D5"
            }
          },
          "text": {
            "paragraphs": [
              {
                "style": {
                  "spacing": {
                    "line": 1.2
                  },
                  "level": 1,
                  "halign": "CENTER"
                },
                "id": "bbbbbbbb-2222-4222-8222-bbbbbbbbbbbb",
                "portions": [
                  {
                    "style": {
                      "fontweight": "NORMAL",
                      "size": 12,
                      "color": {
                        "rgb": {
                          "red": 30,
                          "green": 30,
                          "blue": 30
                        }
                      }
                    },
                    "text": "Line A→C"
                  }
                ]
              }
            ],
            "properties": {
              "inset": {
                "top": 5,
                "left": 5,
                "bottom": 5,
                "right": 5
              }
            }
          },
          "stroke": {
            "width": 2,
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 66,
                    "green": 133,
                    "blue": 244
                  }
                }
              },
              "alpha": 1
            }
          }
        },
        "id": "22222222-1111-4111-8111-aaaaaaaaaaaa"
      },
      {
        "connector": {
          "connected": {
            "first": {
              "side": "SOUTH",
              "marker": "BLOCK",
              "shape_id": "757F7D65-EDBB-4447-B743-5520B1BA3667"
            },
            "second": {
              "side": "NORTH",
              "marker": "CLASSIC",
              "shape_id": "C4A58170-EB6A-4C1F-8705-9DD091E900D4"
            }
          },
          "text": {
            "paragraphs": [
              {
                "style": {
                  "spacing": {
                    "before": 2,
                    "line": 1.3
                  },
                  "level": 1
                },
                "id": "cccccccc-3333-4333-8333-cccccccccccc",
                "portions": [
                  {
                    "style": {
                      "fontweight": "BOLD",
                      "size": 13,
                      "color": {
                        "rgb": {
                          "red": 33,
                          "green": 33,
                          "blue": 33
                        }
                      }
                    },
                    "text": "Elbow "
                  },
                  {
                    "style": {
                      "fontweight": "NORMAL",
                      "size": 13,
                      "color": {
                        "rgb": {
                          "red": 255,
                          "green": 109
                        }
                      }
                    },
                    "text": "D→F"
                  }
                ]
              }
            ],
            "properties": {
              "inset": {
                "top": 2,
                "left": 4,
                "bottom": 2,
                "right": 4
              },
              "auto_fit": "TEXT",
              "valign": "TOP"
            }
          },
          "type": "ELBOW",
          "stroke": {
            "captype": "CAPROUND",
            "jointype": "BEVEL",
            "width": 2.5,
            "position": "INSIDE",
            "type": "DASH",
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 255,
                    "green": 152
                  }
                }
              }
            }
          }
        },
        "id": "22222222-2222-4222-8222-bbbbbbbbbbbb"
      },
      {
        "connector": {
          "connected": {
            "first": {
              "side": "SOUTH",
              "marker": "NONE",
              "shape_id": "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f014"
            },
            "second": {
              "side": "NORTH",
              "marker": "BLOCK",
              "shape_id": "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f018"
            }
          },
          "type": "ELBOW",
          "stroke": {
            "width": 1.5,
            "fill": {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 13,
                    "green": 71,
                    "blue": 161
                  }
                }
              }
            }
          }
        },
        "id": "33333333-1111-4111-8111-aaaaaaaaaaaa"
      }
    ]
  },
  "message": "Connectors in frame fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "112255940",
      "current_user_id": "82512958",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "5777000000915007"
    }
  },
  "request_uri": "/vani/api/v1/editions/112255940/spaces/5777000000915007/zones/492724BD-4FD7-4851-ACF9-50EB08B730D7/frames/00000000-0000-0000-0000-000000000000/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
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
Insert one or more connectors into a frame
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Connector elements to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors'),
  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({
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"connector\":{\"connected\":{\"first\":{\"shape_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"side\":\"NORTH\",\"marker\":\"NONE\",\"point\":{\"x\":1.5,\"y\":1.5}},\"second\":{\"shape_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"side\":\"NORTH\",\"marker\":\"NONE\",\"point\":{\"x\":1.5,\"y\":1.5}}},\"text\":{\"placeholder\":{\"type\":\"TITLE\"},\"paragraphs\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"style\":{\"spacing\":{},\"level\":1,\"portion_style\":{},\"halign\":\"string\"},\"portions\":[{},{}]},{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"style\":{\"spacing\":{},\"level\":1,\"portion_style\":{},\"halign\":\"string\"},\"portions\":[{},{}]}],\"properties\":{\"inset\":{\"top\":1.5,\"left\":1.5,\"bottom\":1.5,\"right\":1.5},\"auto_fit\":\"NONE\",\"valign\":\"MIDDLE\",\"para_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"portion_style\":{\"fontweight\":\"string\",\"size\":1,\"color\":{},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{}},\"halign\":\"LEFT\"}}},\"type\":\"LINE\",\"stroke\":{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{\"hsb\":{}}},\"alpha\":1.5}}},\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"connector": {"connected": {"first": {"shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "side": "NORTH", "marker": "NONE", "point": {"x": 1.5, "y": 1.5}}, "second": {"shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "side": "NORTH", "marker": "NONE", "point": {"x": 1.5, "y": 1.5}}}, "text": {"placeholder": {"type": "TITLE"}, "paragraphs": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "style": {"spacing": {}, "level": 1, "portion_style": {}, "halign": "string"}, "portions": {{}, {}}}, {"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "style": {"spacing": {}, "level": 1, "portion_style": {}, "halign": "string"}, "portions": {{}, {}}}}, "properties": {"inset": {"top": 1.5, "left": 1.5, "bottom": 1.5, "right": 1.5}, "auto_fit": "NONE", "valign": "MIDDLE", "para_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "portion_style": {"fontweight": "string", "size": 1, "color": {}, "underline": true, "strike": true, "italic": true, "font_name": {}}, "halign": "LEFT"}}}, "type": "LINE", "stroke": {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {"hsb": {}}}, "alpha": 1.5}}}, "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
    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");
}
{
  "elements": [
    {
      "connector": {
        "connected": {
          "first": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          },
          "second": {
            "shape_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "side": "NORTH",
            "marker": "NONE",
            "point": {
              "x": 1.5,
              "y": 1.5
            }
          }
        },
        "text": {
          "placeholder": {
            "type": "TITLE"
          },
          "paragraphs": [
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            },
            {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "style": {
                "spacing": {},
                "level": 1,
                "portion_style": {},
                "halign": "string"
              },
              "portions": [
                {},
                {}
              ]
            }
          ],
          "properties": {
            "inset": {
              "top": 1.5,
              "left": 1.5,
              "bottom": 1.5,
              "right": 1.5
            },
            "auto_fit": "NONE",
            "valign": "MIDDLE",
            "para_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "portion_style": {
                "fontweight": "string",
                "size": 1,
                "color": {},
                "underline": true,
                "strike": true,
                "italic": true,
                "font_name": {}
              },
              "halign": "LEFT"
            }
          }
        },
        "type": "LINE",
        "stroke": {
          "captype": "FLAT",
          "jointype": "ROUND",
          "width": 1.5,
          "position": "CENTER",
          "type": "SOLID",
          "fill": {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "alpha": 1.5
          }
        }
      },
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Sample name"
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "connector_id": "22222222-1111-4111-8111-aaaaaaaaaaaa",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "connector_id": "22222222-2222-4222-8222-bbbbbbbbbbbb",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "connector_id": "22222222-3333-4333-8333-cccccccccccc",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "connector_id": "22222222-4444-4444-8444-dddddddddddd",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "connector_id": "22222222-5555-4555-8555-eeeeeeeeeeee",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      }
    ]
  },
  "message": "Connectors inserted in frame successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
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
Update one or more connectors in a frame
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element connector patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"text\":{\"mutations\":[{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}},{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}}],\"styles\":[{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}},{\"all_text\":true,\"portion_style\":{\"fontweight\":\"THIN\",\"size\":1.5,\"color\":{\"hsb\":{}},\"underline\":true,\"strike\":true,\"italic\":true,\"font_name\":{\"name\":\"string\"}},\"range\":{\"start_index\":1,\"end_index\":1},\"paragraph_style\":{\"spacing\":{\"before\":1,\"line\":1,\"after\":1},\"level\":1,\"halign\":\"LEFT\"}}]},\"properties\":{\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"alpha\":1.5}}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "text": {"mutations": {{"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}, {"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}}, "styles": {{"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}, {"all_text": true, "portion_style": {"fontweight": "THIN", "size": 1.5, "color": {"hsb": {}}, "underline": true, "strike": true, "italic": true, "font_name": {"name": "string"}}, "range": {"start_index": 1, "end_index": 1}, "paragraph_style": {"spacing": {"before": 1, "line": 1, "after": 1}, "level": 1, "halign": "LEFT"}}}}, "properties": {"strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "alpha": 1.5}}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "text": {
        "mutations": [
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          },
          {
            "cursor": {
              "cursor_index": 1,
              "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
              "text": "Hello Vani"
            }
          }
        ],
        "styles": [
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          },
          {
            "all_text": true,
            "portion_style": {
              "fontweight": "THIN",
              "size": 1.5,
              "color": {
                "hsb": {}
              },
              "underline": true,
              "strike": true,
              "italic": true,
              "font_name": {
                "name": "string"
              }
            },
            "range": {
              "start_index": 1,
              "end_index": 1
            },
            "paragraph_style": {
              "spacing": {
                "before": 1,
                "line": 1,
                "after": 1
              },
              "level": 1,
              "halign": "LEFT"
            }
          }
        ]
      },
      "properties": {
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "alpha": 1.5
            }
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "22222222-3333-4333-8333-cccccccccccc",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "11111111-aaaa-4bbb-8ccc-111111111112",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "22222222-4444-4444-8444-dddddddddddd",
        "status": "success"
      }
    ]
  },
  "message": "Connectors in frame updated successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more connectors from a frame
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "connector_id": "22222222-2222-4222-8222-bbbbbbbbbbbb",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "connector_id": "11111111-aaaa-4bbb-8ccc-111111111118",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      }
    ]
  },
  "message": "Connectors in frame deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/connectors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/connectors",
  "status": "error"
}
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

Group Shapes on Frame

Group and ungroup shapes inside a frame.
Get the group shapes in a frame
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
    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");
}
Successful response
{
  "data": {
    "total_count": 3,
    "elements": [
      {
        "group_shape": {
          "layout": {
            "top": 80,
            "left": 80,
            "width": 480,
            "height": 320
          },
          "objects": [
            {
              "connector": {
                "connected": {
                  "first": {
                    "side": "EAST",
                    "marker": "NONE",
                    "shape_id": "BAD2B78A-C17A-4A75-BFD7-89CD2ABDF7E8"
                  },
                  "second": {
                    "side": "WEST",
                    "marker": "OPEN",
                    "shape_id": "848D9B76-A1D7-4A7A-B5CD-CEB4FF6452D5"
                  }
                },
                "text": {
                  "paragraphs": [
                    {
                      "style": {
                        "spacing": {
                          "line": 1.2
                        },
                        "level": 1,
                        "halign": "CENTER"
                      },
                      "id": "bbbbbbbb-2222-4222-8222-bbbbbbbbbbbb",
                      "portions": [
                        {
                          "style": {
                            "fontweight": "NORMAL",
                            "size": 12,
                            "color": {
                              "rgb": {
                                "red": 30,
                                "green": 30,
                                "blue": 30
                              }
                            }
                          },
                          "text": "Line A→C"
                        }
                      ]
                    }
                  ],
                  "properties": {
                    "inset": {
                      "top": 5,
                      "left": 5,
                      "bottom": 5,
                      "right": 5
                    }
                  }
                },
                "stroke": {
                  "jointype": "MITER",
                  "width": 3,
                  "type": "DASH",
                  "fill": {
                    "solid": {
                      "color": {
                        "rgb": {}
                      }
                    }
                  }
                }
              },
              "id": "22222222-1111-4111-8111-aaaaaaaaaaaa"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1.2
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "d8e9f0a1-b2c3-4d45-9e67-12345678abcd",
                        "portions": [
                          {
                            "style": {
                              "fontweight": "BOLD",
                              "size": 36,
                              "color": {
                                "rgb": {
                                  "red": 255,
                                  "green": 255,
                                  "blue": 255
                                }
                              },
                              "font_name": {
                                "name": "Inter"
                              }
                            },
                            "text": "Single element"
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 12,
                        "left": 16,
                        "bottom": 12,
                        "right": 16
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {
                    "rounded_rectangle": {},
                    "type": "ROUNDED_RECTANGLE"
                  },
                  "properties": {
                    "layout": {
                      "top": 2588.8672,
                      "left": 1478.9033,
                      "width": 1000.001,
                      "height": 500
                    },
                    "strokes": [
                      {
                        "captype": "CAPROUND",
                        "width": 4,
                        "fill": {
                          "solid": {
                            "color": {
                              "rgb": {
                                "red": 6,
                                "green": 182,
                                "blue": 212
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "gradient": {
                          "stops": [
                            {
                              "color": {
                                "rgb": {
                                  "red": 15,
                                  "green": 23,
                                  "blue": 42
                                }
                              }
                            },
                            {
                              "color": {
                                "rgb": {
                                  "red": 30,
                                  "green": 41,
                                  "blue": 59
                                }
                              },
                              "position": 1
                            }
                          ]
                        },
                        "alpha": 0.2
                      }
                    ]
                  }
                }
              },
              "id": "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f013"
            },
            {
              "group_shape": {
                "layout": {
                  "top": 3453.8926,
                  "left": 1292.2783,
                  "width": 742.147,
                  "height": 1625.703
                },
                "objects": [
                  {
                    "group_shape": {
                      "layout": {
                        "top": -2749.4653,
                        "left": 3687.6516,
                        "width": 559.37476,
                        "height": 151.99219
                      },
                      "objects": [
                        {
                          "shape": {
                            "shape": {
                              "text": {
                                "paragraphs": [
                                  {
                                    "style": {
                                      "spacing": {
                                        "line": 1.2
                                      },
                                      "level": 1,
                                      "halign": "CENTER"
                                    },
                                    "id": "7F5AF8E4-7B4E-447C-BB93-843977B33C99",
                                    "portions": [
                                      {
                                        "style": {
                                          "size": 18,
                                          "color": {
                                            "hsb": {}
                                          },
                                          "font_name": {
                                            "name": "Open Sans"
                                          }
                                        }
                                      }
                                    ]
                                  }
                                ],
                                "properties": {
                                  "inset": {
                                    "top": 5,
                                    "left": 5,
                                    "bottom": 5,
                                    "right": 5
                                  },
                                  "auto_fit": "TEXT"
                                }
                              },
                              "basic": {},
                              "properties": {
                                "layout": {
                                  "top": -2722.4731,
                                  "left": 4122.0264,
                                  "width": 125,
                                  "height": 125
                                },
                                "strokes": [
                                  {
                                    "jointype": "MITER",
                                    "width": 1.5,
                                    "fill": {
                                      "solid": {
                                        "color": {
                                          "hsb": {
                                            "saturation": 0.3,
                                            "brightness": 0.286,
                                            "hue": 0.764
                                          }
                                        }
                                      }
                                    }
                                  }
                                ],
                                "fills": [
                                  {
                                    "solid": {
                                      "color": {
                                        "hsb": {
                                          "brightness": 1
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "id": "BAD2B78A-C17A-4A75-BFD7-89CD2ABDF7E8"
                        },
                        {
                          "shape": {
                            "shape": {
                              "text": {
                                "paragraphs": [
                                  {
                                    "style": {
                                      "spacing": {
                                        "line": 1.2
                                      },
                                      "level": 1,
                                      "halign": "CENTER"
                                    },
                                    "id": "70D504DE-58DE-4422-89CE-744F3AFDF1D0",
                                    "portions": [
                                      {
                                        "style": {
                                          "size": 18,
                                          "color": {
                                            "hsb": {}
                                          },
                                          "font_name": {
                                            "name": "Open Sans"
                                          }
                                        }
                                      }
                                    ]
                                  }
                                ],
                                "properties": {
                                  "inset": {
                                    "top": 5,
                                    "left": 5,
                                    "bottom": 5,
                                    "right": 5
                                  },
                                  "auto_fit": "TEXT"
                                }
                              },
                              "basic": {
                                "type": "OVAL"
                              },
                              "properties": {
                                "layout": {
                                  "top": -2749.4653,
                                  "left": 3687.6516,
                                  "width": 125,
                                  "height": 125
                                },
                                "strokes": [
                                  {
                                    "jointype": "MITER",
                                    "width": 1.5,
                                    "fill": {
                                      "solid": {
                                        "color": {
                                          "hsb": {
                                            "saturation": 0.3,
                                            "brightness": 0.286,
                                            "hue": 0.764
                                          }
                                        }
                                      }
                                    }
                                  }
                                ],
                                "fills": [
                                  {
                                    "solid": {
                                      "color": {
                                        "hsb": {
                                          "brightness": 1
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "id": "EFC7A9A1-4294-4560-BD83-C9A8F0EFD3F3"
                        }
                      ]
                    },
                    "id": "c1944aee-6bc4-4514-b7ce-cdfa8a1cacbc"
                  },
                  {
                    "shape": {
                      "shape": {
                        "text": {
                          "paragraphs": [
                            {
                              "style": {
                                "spacing": {
                                  "line": 1.2
                                },
                                "level": 1,
                                "halign": "CENTER"
                              },
                              "id": "8253817E-D4BE-434D-BBB0-28A33D35FC12",
                              "portions": [
                                {
                                  "style": {
                                    "size": 18,
                                    "color": {
                                      "hsb": {}
                                    },
                                    "font_name": {
                                      "name": "Open Sans"
                                    }
                                  }
                                }
                              ]
                            }
                          ],
                          "properties": {
                            "inset": {
                              "top": 5,
                              "left": 5,
                              "bottom": 5,
                              "right": 5
                            },
                            "auto_fit": "TEXT"
                          }
                        },
                        "basic": {
                          "type": "TRIANGLE",
                          "triangle": {}
                        },
                        "properties": {
                          "layout": {
                            "top": -1248.7622,
                            "left": 4304.8,
                            "width": 125,
                            "height": 125
                          },
                          "strokes": [
                            {
                              "jointype": "MITER",
                              "width": 1.5,
                              "fill": {
                                "solid": {
                                  "color": {
                                    "hsb": {
                                      "saturation": 0.3,
                                      "brightness": 0.286,
                                      "hue": 0.764
                                    }
                                  }
                                }
                              }
                            }
                          ],
                          "fills": [
                            {
                              "solid": {
                                "color": {
                                  "hsb": {
                                    "brightness": 1
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    "id": "848D9B76-A1D7-4A7A-B5CD-CEB4FF6452D5"
                  }
                ]
              },
              "id": "bf55c824-2496-4268-abaf-3ba054bd19ba"
            }
          ]
        },
        "id": "151E7B25-6454-426A-9B3E-2DF8266EA459"
      },
      {
        "group_shape": {
          "layout": {
            "rotate": 12,
            "top": 337.53296,
            "left": 1236.9053,
            "width": 360,
            "fliph": true,
            "height": 260
          },
          "objects": [
            {
              "shape": {
                "shape": {
                  "callout": {
                    "type": "ROUNDED_RECTANGLE_CALLOUT"
                  },
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1.2
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "BF40EAE8-36EC-4940-9215-0DBDC1F136DC",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "properties": {
                    "layout": {
                      "top": 4062.5254,
                      "left": 4109.9414,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "9F02A23F-2616-4865-8939-1424C969B59A"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1.2
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "89EC4CF3-461C-4C67-B041-A6F8B6D89B39",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {
                    "type": "OVAL"
                  },
                  "properties": {
                    "layout": {
                      "top": 4345.963,
                      "left": 4590.6836,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "B3FB1A32-09EC-4CDF-8BB4-215E1B8E77CC"
            }
          ]
        },
        "id": "483122b7-86d4-411a-b7a7-112c54d2d8a8"
      },
      {
        "group_shape": {
          "layout": {
            "rotate": 352,
            "top": 1010,
            "left": 580.38965,
            "width": 420,
            "flipv": true,
            "height": 220
          },
          "objects": [
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1.2
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "6E0315B8-AB67-4037-8197-169181A92CEB",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "basic": {
                    "type": "DIAMOND"
                  },
                  "properties": {
                    "layout": {
                      "top": 3792.4863,
                      "left": 4734.8237,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "B364B947-10F0-42EE-9095-8918EE264986"
            },
            {
              "shape": {
                "shape": {
                  "text": {
                    "paragraphs": [
                      {
                        "style": {
                          "spacing": {
                            "line": 1.2
                          },
                          "level": 1,
                          "halign": "CENTER"
                        },
                        "id": "ECA2FD88-8EDE-43CA-AF25-1AB79B30322D",
                        "portions": [
                          {
                            "style": {
                              "size": 18,
                              "color": {
                                "hsb": {}
                              },
                              "font_name": {
                                "name": "Open Sans"
                              }
                            }
                          }
                        ]
                      }
                    ],
                    "properties": {
                      "inset": {
                        "top": 5,
                        "left": 5,
                        "bottom": 5,
                        "right": 5
                      },
                      "auto_fit": "TEXT"
                    }
                  },
                  "block_arrow": {
                    "single_arrow": {}
                  },
                  "properties": {
                    "layout": {
                      "top": 3855.1426,
                      "left": 5130.722,
                      "width": 125,
                      "height": 125
                    },
                    "strokes": [
                      {
                        "jointype": "MITER",
                        "width": 1.5,
                        "fill": {
                          "solid": {
                            "color": {
                              "hsb": {
                                "saturation": 0.3,
                                "brightness": 0.286,
                                "hue": 0.764
                              }
                            }
                          }
                        }
                      }
                    ],
                    "fills": [
                      {
                        "solid": {
                          "color": {
                            "hsb": {
                              "brightness": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "id": "D72350DD-CBD3-4164-AC99-08437A3D9679"
            }
          ]
        },
        "id": "816df1e3-f3d7-4682-b3ef-45f0dddb392a"
      }
    ]
  },
  "message": "GroupShapes in frame fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
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
Group or ungroup shapes in a frame (op-aware)
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
op REQUIRED string Group operation (max length 50)
groupungroup
nested_groups array of string Array-of-arrays of uuids (required for op=group) (min 1, max 1)
groups array of string Flat uuid list (required for op=ungroup) (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes'),
  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({
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"op\":\"group\",\"nested_groups\":[\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"],\"groups\":[\"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/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"op": "group", "nested_groups": {"f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "groups": {"f47ac10b-58cc-4372-a567-0e02b2c3d479"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
    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");
}
{
  "op": "group",
  "nested_groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ],
  "groups": [
    "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  ]
}
Successful response
{
  "data": {
    "ungrouped_shape_ids": [
      "a4f1c2d8-3b6e-3f02-9c1b-7d2a5e89f019",
      "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f014",
      "bf55c824-2496-4268-abaf-3ba054bd19ba",
      "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f019",
      "B37069B4-6676-4B1D-9DE8-13BF28854044",
      "a4f1c2d8-3b6e-4f02-9c1b-7d2a5e89f018",
      "f9dfbc1f-edae-40fb-b96b-9c6352571a30",
      "590A322C-1E47-425D-97C2-4DE977E3AE90"
    ],
    "results": [
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "21e04378-de72-4a85-8469-30de3ad8538b",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "b6f88c46-52c4-4a89-8c48-694457681236",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "6c44ecf4-6b5b-4361-b0c7-ebeb03a7b04b",
        "status": "success"
      }
    ]
  },
  "message": "Shapes ungrouped in frame successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
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
Update one or more group shapes in a frame
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
elements REQUIRED array of object Per-element groupshape patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes'),
  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({
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"elements\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5}}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"elements": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
    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");
}
{
  "elements": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        }
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "151E7B25-6454-426A-9B3E-2DF8266EA459",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "483122b7-86d4-411a-b7a7-112c54d2d8a8",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "id": "816df1e3-f3d7-4682-b3ef-45f0dddb392a",
        "status": "success"
      }
    ]
  },
  "message": "GroupShape in frame updated successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more group shapes from a frame
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "groupshape_id": "151E7B25-6454-426A-9B3E-2DF8266EA459",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      },
      {
        "groupshape_id": "483122b7-86d4-411a-b7a7-112c54d2d8a8",
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "status": "success"
      }
    ]
  },
  "message": "GroupShapes in frame deleted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/groupshapes",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/groupshapes",
  "status": "error"
}
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

Frames on Frame

Insert, list, update, and delete child frames inside a parent frame.
Get the child frames of a parent frame
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
Query parameters ids
NameTypeDescription
idsOPTIONAL string Optional comma-separated UUID list to fetch selected items
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
    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");
}
Successful response
{
  "data": {
    "frames": [
      {
        "meta": {
          "name": "Single Child Frame",
          "id": "b5fc46d8-ab45-5e51-bff3-5a59345b3a03"
        },
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "top": 320,
            "left": 200,
            "width": 640,
            "height": 360
          },
          "strokes": [
            {
              "width": 1,
              "fill": {
                "solid": {
                  "color": {
                    "rgb": {
                      "red": 204,
                      "green": 204,
                      "blue": 204
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "solid": {
                "color": {
                  "rgb": {
                    "red": 245,
                    "green": 245,
                    "blue": 250
                  }
                }
              }
            }
          ]
        }
      },
      {
        "meta": {
          "name": "Child A4",
          "id": "6d198740-ac2c-5ac1-b7ab-90471f922f2b"
        },
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "top": 2000,
            "width": 794,
            "height": 1123
          },
          "strokes": [
            {
              "jointype": "MITER",
              "width": 1,
              "position": "INSIDE",
              "fill": {
                "solid": {
                  "color": {
                    "hsb": {
                      "saturation": 0.85,
                      "brightness": 0.25,
                      "hue": 0.0016975309
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "gradient": {
                "stops": [
                  {
                    "color": {
                      "rgb": {
                        "red": 255,
                        "green": 255,
                        "blue": 255
                      }
                    }
                  },
                  {
                    "color": {
                      "rgb": {
                        "red": 229,
                        "green": 231,
                        "blue": 235
                      }
                    },
                    "position": 1
                  }
                ],
                "type": "RADIAL"
              }
            }
          ]
        }
      },
      {
        "meta": {
          "name": "Child Custom",
          "id": "74b0dfa1-9186-5290-a16c-89b51db3bd31"
        },
        "type": "CUSTOM",
        "properties": {
          "layout": {
            "top": 2000,
            "left": 1400,
            "width": 600,
            "height": 800
          },
          "strokes": [
            {
              "captype": "SQUARE",
              "width": 2,
              "position": "OUTSIDE",
              "type": "SQUARE_DOT",
              "fill": {
                "solid": {
                  "color": {
                    "hsb": {
                      "saturation": 0.7,
                      "brightness": 0.65,
                      "hue": 0.0023148148
                    }
                  }
                }
              }
            }
          ],
          "fills": [
            {
              "no_fill": {}
            }
          ]
        }
      }
    ],
    "total_count": 3
  },
  "message": "Nested frames fetched successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/frames/B25E9FE2-0605-4370-85E5-B142D133C3BC/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
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
Insert one or more child frames into a parent frame
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.CREATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
frames REQUIRED array of object Frames to insert (min 1, max 1)
curl -X POST "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames'),
  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({
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"frames\":[{\"meta\":{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"name\":\"Sample name\"},\"type\":\"A4\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"frames": {{"meta": {"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "name": "Sample name"}, "type": "A4", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
    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");
}
{
  "frames": [
    {
      "meta": {
        "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "name": "Sample name"
      },
      "type": "A4",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "frame_id": "f1f362c6-9a9f-58e5-8f47-149f741c91b8",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "frame_id": "68747720-4a7f-5499-95b8-9ebf4b16fc7e",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "frame_id": "6d198740-ac2c-5ac1-b7ab-90471f922f2b",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "frame_id": "d2e81218-0c52-5fca-8e9b-bf68bccf38f0",
        "status": "success"
      },
      {
        "parent_frame_id": "0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061",
        "frame_id": "74b0dfa1-9186-5290-a16c-89b51db3bd31",
        "status": "success"
      }
    ]
  },
  "message": "Nested frames inserted successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/E51ABCEF-C5A5-42D1-8686-9A6307E4B73A/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
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
Update one or more child frames of a parent frame
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.UPDATE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
frames REQUIRED array of object Per-frame patches (min 1, max 1)
curl -X PUT "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}

response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames'),
  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({
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}));
req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"frames\":[{\"id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"properties\":{\"layout\":{\"rotate\":1,\"top\":1.5,\"left\":1.5,\"width\":1.5,\"flipv\":true,\"fliph\":true,\"height\":1.5},\"strokes\":[{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}},{\"captype\":\"FLAT\",\"jointype\":\"ROUND\",\"width\":1.5,\"position\":\"CENTER\",\"type\":\"SOLID\",\"fill\":{\"solid\":{\"color\":{}},\"no_fill\":{},\"alpha\":1.5}}],\"fills\":[{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5},{\"solid\":{\"color\":{\"hsb\":{}}},\"no_fill\":{},\"gradient\":{\"stops\":[{},{}],\"linear\":{\"start\":{},\"end\":{}},\"radial_angular\":{\"center\":{},\"flip_horizontal\":true,\"spread_x\":1,\"spread_y\":1,\"rotation_angle\":1,\"flip_vertical\":true},\"type\":\"LINEAR\"},\"alpha\":1.5}]}}]}";
        HttpRequest request = requestBuilder
            .PUT(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"frames": {{"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "properties": {"layout": {"rotate": 1, "top": 1.5, "left": 1.5, "width": 1.5, "flipv": true, "fliph": true, "height": 1.5}, "strokes": {{"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}, {"captype": "FLAT", "jointype": "ROUND", "width": 1.5, "position": "CENTER", "type": "SOLID", "fill": {"solid": {"color": {}}, "no_fill": {}, "alpha": 1.5}}}, "fills": {{"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}, {"solid": {"color": {"hsb": {}}}, "no_fill": {}, "gradient": {"stops": {{}, {}}, "linear": {"start": {}, "end": {}}, "radial_angular": {"center": {}, "flip_horizontal": true, "spread_x": 1, "spread_y": 1, "rotation_angle": 1, "flip_vertical": true}, "type": "LINEAR"}, "alpha": 1.5}}}}}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
    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");
}
{
  "frames": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "properties": {
        "layout": {
          "rotate": 1,
          "top": 1.5,
          "left": 1.5,
          "width": 1.5,
          "flipv": true,
          "fliph": true,
          "height": 1.5
        },
        "strokes": [
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          },
          {
            "captype": "FLAT",
            "jointype": "ROUND",
            "width": 1.5,
            "position": "CENTER",
            "type": "SOLID",
            "fill": {
              "solid": {
                "color": {}
              },
              "no_fill": {},
              "alpha": 1.5
            }
          }
        ],
        "fills": [
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          },
          {
            "solid": {
              "color": {
                "hsb": {}
              }
            },
            "no_fill": {},
            "gradient": {
              "stops": [
                {},
                {}
              ],
              "linear": {
                "start": {},
                "end": {}
              },
              "radial_angular": {
                "center": {},
                "flip_horizontal": true,
                "spread_x": 1,
                "spread_y": 1,
                "rotation_angle": 1,
                "flip_vertical": true
              },
              "type": "LINEAR"
            },
            "alpha": 1.5
          }
        ]
      }
    }
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "B25E9FE2-0605-4370-85E5-B142D133C3BC",
        "id": "d2e81218-0c52-5fca-8e9b-bf68bccf38f0",
        "status": "success"
      },
      {
        "parent_frame_id": "B25E9FE2-0605-4370-85E5-B142D133C3BC",
        "id": "68747720-4a7f-5499-95b8-9ebf4b16fc7e",
        "status": "success"
      },
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found",
            "facet": "frame"
          }
        ],
        "status": "failed"
      },
      {
        "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found",
            "facet": "frame"
          }
        ],
        "status": "failed"
      }
    ]
  },
  "message": "Partial success: some operations failed",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/frames/B25E9FE2-0605-4370-85E5-B142D133C3BC/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Delete one or more child frames from a parent frame
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.DELETE
Path parameters edition_id · space_id · zone_id · frame_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
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.
FieldTypeDescriptionValue
ids REQUIRED array of string Element IDs to delete (zone-scoped) (min 1, max 1)
curl -X DELETE "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "string"
  ]
}'
import requests

url = "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

data = {
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames'),
  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({
  "ids": [
    "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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        String requestBody = "{\"ids\":[\"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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

requestData = {"ids": {"string"}};

response = invokeurl
[
    url: "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames"
    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");
}
{
  "ids": [
    "string"
  ]
}
Successful response
{
  "data": {
    "results": [
      {
        "parent_frame_id": "B25E9FE2-0605-4370-85E5-B142D133C3BC",
        "frame_id": "d2e81218-0c52-5fca-8e9b-bf68bccf38f0",
        "status": "success"
      },
      {
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567899",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found"
          }
        ],
        "status": "failed"
      },
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "errors": [
          {
            "error_code": "EL1002",
            "message": "Frame not found"
          }
        ],
        "status": "failed"
      }
    ]
  },
  "message": "Partial success: some operations failed",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/38CBB766-8052-48D2-9323-067C16BAAD90/frames/B25E9FE2-0605-4370-85E5-B142D133C3BC/frames",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1050",
      "message": "The JSON content could not be parsed."
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "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/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/frames",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/frames",
  "status": "error"
}
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

Element Text

Read the text of a text-bearing object on a zone or frame.
Get text of a text-bearing object in a frame
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · frame_id · text_id
NameTypeDescription
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
frame_idREQUIRED string The unique identifier of the frame
text_idREQUIRED string The unique identifier of the text
Query parameters fetch_type · text_query
NameTypeDescription
fetch_typeOPTIONAL enum Optional text fetch mode. Use one of: text, length, paragraph_count, paragraph_text. Defaults to text
textReturn the flattened plain text of the object.
lengthReturn the character count only.
paragraph_countReturn the number of paragraphs only.
paragraph_textReturn the text of a paragraph range.
text_queryOPTIONAL string (JSON) `text_query` — JSON-encoded read options, URL-encoded. Whether it is required depends on fetch_type. REQUIRED with fetch_type=text: pass {"payload":{"all_text":true}} for the whole text, or {"payload":{"range":{"start_index":0,"end_index":5}}} for a character range. REQUIRED with fetch_type=paragraph_text: pass {"payload":{"range":{"start_paragraph_index":0,"end_paragraph_index":1}}}. Not needed with fetch_type=length or fetch_type=paragraph_count, which ignore it. Omitting it where it is required fails validation, so it is declared optional on the parameter only because two of the four modes do not use it. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "payload": {
    "range": {
      "start_index": "42",
      "end_index": "42"
    }
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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");
}
Successful response
{
  "data": {
    "text": "Gem\n\nSilver\n"
  },
  "message": "Text in frame resolved successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/text/d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/text/d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "2830000002600178"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600178/zones/1d5151b3-a39d-4eda-954e-3da6a6329408/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/text/d4e5f6a7-b8c9-4d8e-bf12-4a5b6c7d8e9f",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "EL1001",
      "message": "Element not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/text/00000000-0000-0000-0000-000000000000",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/frames/{frame_id}/text/{text_id}",
  "status": "error"
}
Not implemented - this operation is not available for the requested resource
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "EL1016",
      "message": "Not implemented for element type GROUPSHAPE",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/frames/0e7c1ab2-9d34-4f51-b6a0-1c2d3e4f5061/text/BE427379-279A-456E-9AA1-28E125A5B51C",
  "status": "error"
}
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
501  Not implemented - this operation is not available for the requested resource
Get text of a text-bearing object in a zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id · text_id
NameTypeDescription
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
text_idREQUIRED string The unique identifier of the text
Query parameters fetch_type · text_query
NameTypeDescription
fetch_typeOPTIONAL enum Optional text fetch mode. Use one of: text, length, paragraph_count, paragraph_text. Defaults to text
textReturn the flattened plain text of the object.
lengthReturn the character count only.
paragraph_countReturn the number of paragraphs only.
paragraph_textReturn the text of a paragraph range.
text_queryOPTIONAL string (JSON) `text_query` — JSON-encoded read options, URL-encoded. Whether it is required depends on fetch_type. REQUIRED with fetch_type=text: pass {"payload":{"all_text":true}} for the whole text, or {"payload":{"range":{"start_index":0,"end_index":5}}} for a character range. REQUIRED with fetch_type=paragraph_text: pass {"payload":{"range":{"start_paragraph_index":0,"end_paragraph_index":1}}}. Not needed with fetch_type=length or fetch_type=paragraph_count, which ignore it. Omitting it where it is required fails validation, so it is declared optional on the parameter only because two of the four modes do not use it. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "payload": {
    "range": {
      "start_index": "42",
      "end_index": "42"
    }
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D
curl -X GET "https://api.app.vanihq.com/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_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");
}
Successful response
{
  "data": {
    "text": "Hello World\nSecond paragraph line"
  },
  "message": "Text resolved successfully",
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/1752719F-BBB3-412F-BE40-5334D5C2AAC5/text/a46f6013-6822-57cf-a71d-4dce016d3129",
  "status": "success"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1011",
      "message": "Zone is not in an active state",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/85879463-3722-4956-A8B6-C744D4AB4108/text/18EC6574-83FD-4F7C-AD9E-F0022423F386",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "edition_id": "112255940",
      "current_user_id": "82512958",
      "error_code": "A1003",
      "message": "The user doesn't have permission to perform this action",
      "space_id": "5777000000915007"
    }
  },
  "request_uri": "/vani/api/v1/editions/112255940/spaces/5777000000915007/zones/492724BD-4FD7-4851-ACF9-50EB08B730D7/text/00000000-0000-0000-0000-000000000000",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "Z1008",
      "message": "Zone not found",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/5725A066-F499-439A-AABA-7461032413DE/text/18EC6574-83FD-4F7C-AD9E-F0022423F386",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/vani/api/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/text/{text_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}/spaces/{space_id}/zones/{zone_id}/text/{text_id}",
  "status": "error"
}
Not implemented - this operation is not available for the requested resource
{
  "error": {
    "details": {
      "edition_id": "88136506",
      "current_user_id": "85115776",
      "error_code": "EL1016",
      "message": "Not implemented for element type GROUPSHAPE",
      "space_id": "2830000002600126"
    }
  },
  "request_uri": "/vani/api/v1/editions/88136506/spaces/2830000002600126/zones/051E5823-1E79-4841-BB26-31329FB388CD/text/64B04181-0A88-4DB4-85E6-984B95A69B5F",
  "status": "error"
}
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
501  Not implemented - this operation is not available for the requested resource
© 2026 Zoho Corporation Pvt. Ltd. Help