Group Shapes API
Manage group shapes on a slide, master, or layout. Group or ungroup elements, list, and delete group shapes.
GET List Group Shapes
GET https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes
Required Scopes:
Lists group shape objects in a slide, master, or layout. Use this endpoint to discover group ids, inspect grouped children, and understand the object hierarchy before updating or ungrouping. Omit ids to list all groups in the container, or pass specific group UUIDs. Child object ids returned here are used when patching objects inside a group.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rid | string | Required | Resource id of the presentation. The caller must have the appropriate permission on this presentation. |
| container | string | Required | Container type that owns the object. Allowed values: slides, masters, layouts. |
| container_id | string | Required | Id of the selected container. Provide slide_id when container is slides, master_id when container is masters, or layout_id when container is layouts. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ids | string | Optional | Comma-separated group shape object ids to fetch. Omit this parameter to list all group shape objects in the selected presentation or container. |
| from | integer | Optional | Zero-based offset for pagination. |
| count | integer | Optional | Maximum number of records to return. Allowed range: 1-99. |
Samples
Responses
{
"data": {
"objects": [
{
"object_id": "bfa01b23-6534-44b9-8ee6-90dcbd92ee94",
"content": {
"group_shape": {
"layout": {
"top": 30,
"left": 50,
"width": 110,
"height": 70
},
"objects": [
{
"shape": {
"text": {
"paragraphs": [
{
"id": "9a35e032-fd71-4d05-8360-3b7f48defd59",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"width": 90,
"height": 70
}
}
},
"id": "5c4656d6-4041-4068-b556-38b5f2f2ad4e"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "babe07d5-6b36-4689-a3f9-4225e4390932",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"left": 20,
"width": 90,
"height": 70
}
}
},
"id": "2e8ddbf0-fafc-4128-8bc8-51f3b9c3e947"
}
]
},
"id": "bfa01b23-6534-44b9-8ee6-90dcbd92ee94"
}
},
{
"object_id": "f5d93ec8-ca14-4c86-a2ff-4018aaa2b4f9",
"content": {
"group_shape": {
"layout": {
"top": 30,
"left": 90,
"width": 130,
"height": 70
},
"objects": [
{
"shape": {
"text": {
"paragraphs": [
{
"id": "56aafe00-fb8b-454e-bd17-d1e70e32fa75",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"width": 90,
"height": 70
}
}
},
"id": "c3cd31c6-039c-4613-92c5-f255098d3ae0"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "adbc8894-048d-4324-82e5-31cb010d9dd5",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"left": 20,
"width": 90,
"height": 70
}
}
},
"id": "cd482dc2-937c-4784-911a-9409cfd8be4c"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "8c23b245-fdb8-4c7b-b3b8-e23f5527e030",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"left": 40,
"width": 90,
"height": 70
}
}
},
"id": "84d95321-3558-49f0-91ec-a1906169946e"
}
]
},
"id": "f5d93ec8-ca14-4c86-a2ff-4018aaa2b4f9"
}
},
{
"object_id": "53c47539-75a6-4165-9653-59e4e2f01a18",
"content": {
"group_shape": {
"layout": {
"top": 30,
"left": 150,
"width": 110,
"height": 70
},
"objects": [
{
"shape": {
"text": {
"paragraphs": [
{
"id": "fbd2a776-0b08-4e16-bba0-bbc9cefc81f6",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"width": 90,
"height": 70
}
}
},
"id": "83fd3e7c-bf97-4320-bd5e-c4561d589150"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "00f2e4cf-8b41-4e57-8747-e737bddab48c",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"left": 20,
"width": 90,
"height": 70
}
}
},
"id": "061758cd-ffbd-4245-b5c6-71aa8ee4ea07"
}
]
},
"id": "53c47539-75a6-4165-9653-59e4e2f01a18"
}
},
{
"object_id": "49feb326-2015-4156-9207-d6a077bebb83",
"content": {
"group_shape": {
"layout": {
"top": 30,
"left": 190,
"width": 110,
"height": 70
},
"objects": [
{
"shape": {
"text": {
"paragraphs": [
{
"id": "028a4f57-9a0d-4fc1-90e6-8094bead239a",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"width": 90,
"height": 70
}
}
},
"id": "1b8fe3ad-5cc6-4b9a-b44a-dd260abdb0ad"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "c8c8ae49-987f-4a35-9c55-abffceb73683",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"left": 20,
"width": 90,
"height": 70
}
}
},
"id": "8a6a17e3-554c-4190-871c-84bfe3fda8c4"
}
]
},
"id": "49feb326-2015-4156-9207-d6a077bebb83"
}
},
{
"object_id": "0f02daf1-03e4-452a-8349-f0ae58c42742",
"content": {
"group_shape": {
"layout": {
"top": 30,
"left": 50,
"width": 110,
"height": 70
},
"objects": [
{
"shape": {
"text": {
"paragraphs": [
{
"id": "846c8904-84ee-46fd-acc8-b0af3a31218c",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"width": 90,
"height": 70
}
}
},
"id": "5cd913e4-df47-43ff-811f-405120debe40"
},
{
"shape": {
"text": {
"paragraphs": [
{
"id": "84bf4d84-3c7c-4cba-a746-c14b4fca94d9",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"left": 20,
"width": 90,
"height": 70
}
}
},
"id": "9dec65cc-ea65-4343-9d65-0cde513c57c2"
}
]
},
"id": "0f02daf1-03e4-452a-8349-f0ae58c42742"
}
}
],
"container_id": "54ca442b-63d1-43df-bda9-9f8cd2654e70"
},
"message": "Group shape(s) content retrieved successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/groupshapes",
"status": "success"
}
Code Examples
curl -X GET "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes?ids=a0000000-0000-4000-8000-000000000001,a0000000-0000-4000-8000-000000000002&from=0&count=20" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"
POST Group Or Ungroup
POST https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes
Required Scopes:
Groups existing objects or ungroups existing group shapes in the selected container. Use this endpoint to group multiple objects into one movable unit, or dissolve a group back into separate objects. Set op to group with nested_groups to create groups from object id arrays. Set op to ungroup with groups to dissolve group shape ids. The operation changes hierarchy, not the visual appearance of child objects.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rid | string | Required | Resource id of the presentation. The caller must have the appropriate permission on this presentation. |
| container | string | Required | Container type that owns the object. Allowed values: slides, masters, layouts. |
| container_id | string | Required | Id of the selected container. Provide slide_id when container is slides, master_id when container is masters, or layout_id when container is layouts. |
Request Body
Interactive structure. Expand fields and select optional schema parts.
Samples
Request Body
{
"op": "group",
"nested_groups": [
[
"a0000000-0000-4000-8000-000000000101",
"a0000000-0000-4000-8000-000000000102"
]
]
}
Responses
{
"data": {
"results": [
{
"groupshape_id": "f5d93ec8-ca14-4c86-a2ff-4018aaa2b4f9",
"children_deleted": [
{
"object_id": "c3cd31c6-039c-4613-92c5-f255098d3ae0",
"status": "success"
},
{
"object_id": "cd482dc2-937c-4784-911a-9409cfd8be4c",
"status": "success"
},
{
"object_id": "84d95321-3558-49f0-91ec-a1906169946e",
"status": "success"
}
],
"container_id": "54ca442b-63d1-43df-bda9-9f8cd2654e70",
"insert_object": {
"final_index": "152",
"object": {
"slide_object": {
"slide_id": "54ca442b-63d1-43df-bda9-9f8cd2654e70",
"object_id": "f5d93ec8-ca14-4c86-a2ff-4018aaa2b4f9"
}
}
}
}
]
},
"message": "Shape(s) grouped successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/groupshapes",
"status": "success"
}
Code Examples
curl -X POST "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"op": "group",
"nested_groups": [
[
"a0000000-0000-4000-8000-000000000101",
"a0000000-0000-4000-8000-000000000102"
]
]
}'
PUT Update Group Shapes
PUT https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes
Required Scopes:
Updates group shape containers or selected child facets inside a group. Use this to move or resize the group container, or to patch non-layout properties and text on children without ungrouping. Group container updates support layout. Child updates are sent through the group's objects array and require both the group id and child id. Child layout is intentionally not patched through this endpoint because child geometry is controlled by the group.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rid | string | Required | Resource id of the presentation. The caller must have the appropriate permission on this presentation. |
| container | string | Required | Container type that owns the object. Allowed values: slides, masters, layouts. |
| container_id | string | Required | Id of the selected container. Provide slide_id when container is slides, master_id when container is masters, or layout_id when container is layouts. |
Request Body
Interactive structure. Expand fields and select optional schema parts.
Samples
Request Body
{
"elements": [
{
"id": "a0000000-0000-4000-8000-000000000301",
"properties": {
"layout": {
"left": 120,
"top": 90,
"width": 420,
"height": 300
}
},
"objects": [
{
"id": "a0000000-0000-4000-8000-000000000302",
"properties": {
"fills": [
{
"solid": {
"color": {
"rgb": {
"red": 255,
"green": 0,
"blue": 0
}
}
}
}
]
}
}
]
}
]
}
Responses
{
"data": {
"success_count": "1",
"failure_count": "0",
"results": [
{
"id": "08c71c9f-e940-47e5-bf21-06111dd3c5ef",
"properties": [
{
"shape_id": "08c71c9f-e940-47e5-bf21-06111dd3c5ef",
"status": "success",
"last_saved_version": "332"
}
]
}
]
},
"message": "Group shape(s) updated successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/groupshapes",
"status": "success"
}
Code Examples
curl -X PUT "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"elements": [
{
"id": "a0000000-0000-4000-8000-000000000301",
"properties": {
"layout": {
"left": 120,
"top": 90,
"width": 420,
"height": 300
}
},
"objects": [
{
"id": "a0000000-0000-4000-8000-000000000302",
"properties": {
"fills": [
{
"solid": {
"color": {
"rgb": {
"red": 255,
"green": 0,
"blue": 0
}
}
}
}
]
}
}
]
}
]
}'
DELETE Remove Group Shapes
DELETE https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes
Required Scopes:
Deletes one or more group shape objects from the selected container. Use this when the group and its contained objects should be removed from the canvas. Pass comma-separated group UUIDs in ids. If you want to keep child objects but remove grouping, use the group-or-ungroup endpoint with op: "ungroup" instead of delete.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rid | string | Required | Resource id of the presentation. The caller must have the appropriate permission on this presentation. |
| container | string | Required | Container type that owns the object. Allowed values: slides, masters, layouts. |
| container_id | string | Required | Id of the selected container. Provide slide_id when container is slides, master_id when container is masters, or layout_id when container is layouts. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ids | string | Required | Comma-separated group shape object ids to delete. These ids select the objects to remove; the path parameters identify the container that holds them. |
Samples
Responses
{
"data": {
"success_count": "1",
"failure_count": "0",
"results": [
{
"new_revision_id": "348",
"object_id": "6e33b143-11db-458f-9b0e-aa8fd99e7b81"
}
]
},
"message": "Group shape(s) deleted successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/groupshapes",
"status": "success"
}
Code Examples
curl -X DELETE "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/groupshapes?ids={{object_id}}" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"