Shapes API
Manage shape elements on a slide, master, or layout. Insert, list, update, and delete shapes — basic shapes, block arrows, flowchart symbols, stars, callouts, and custom shapes.
GET List Shapes
GET https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes
Required Scopes:
Returns shape objects from the selected slide, master, or layout. Use this after insert or update operations to read the server-normalized object data, including geometry, style, text, and object ids. Omit ids to page through every shape in the container. Provide comma-separated UUIDs in ids to fetch specific shapes. from and count apply only when listing multiple shapes; count accepts values from 1 to 99.
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 shape object ids to fetch. Omit this parameter to list all 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": "4d6435df-0fb6-4bfa-97bb-f0e759feaf02",
"content": {
"shape": {
"text": {
"paragraphs": [
{
"id": "c5939583-fb52-4e2f-8988-3edf69f12147",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {
"type": "OVAL"
},
"properties": {
"layout": {
"top": 100,
"left": 100,
"width": 100,
"height": 100
}
}
},
"id": "4d6435df-0fb6-4bfa-97bb-f0e759feaf02"
}
},
{
"object_id": "d990e909-996c-4447-9ca5-11c0897f57aa",
"content": {
"shape": {
"text": {
"paragraphs": [
{
"id": "85c78ce0-0d33-458e-9d38-8e4ad29b4acd",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"top": 100,
"left": 100,
"width": 100,
"height": 100
}
}
},
"id": "d990e909-996c-4447-9ca5-11c0897f57aa"
}
},
{
"object_id": "11920bee-5d3f-45c6-8ac0-dc0231e47388",
"content": {
"shape": {
"star": {
"type": "POINT",
"point": {
"type": "FIVE_POINT"
}
},
"text": {
"paragraphs": [
{
"id": "5b30d2af-1180-41fb-8c05-035757d55aed",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"properties": {
"layout": {
"top": 100,
"left": 100,
"width": 100,
"height": 100
}
}
},
"id": "11920bee-5d3f-45c6-8ac0-dc0231e47388"
}
},
{
"object_id": "7c23a78c-1cd7-466a-a543-95dd066dd44c",
"content": {
"shape": {
"block_arrow": {
"single_arrow": {}
},
"text": {
"paragraphs": [
{
"id": "96939a38-5862-4718-a65b-29feb84179e7",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"properties": {
"layout": {
"top": 100,
"left": 100,
"width": 100,
"height": 100
}
}
},
"id": "7c23a78c-1cd7-466a-a543-95dd066dd44c"
}
},
{
"object_id": "7f5642ce-dc64-4666-a41f-832669ff1c4b",
"content": {
"shape": {
"text": {
"paragraphs": [
{
"id": "5a021efd-78fc-43b5-88dc-4e3c24280702",
"portions": [
{
"style": {
"fontweight": "NORMAL"
}
}
]
}
],
"properties": {
"inset": {
"top": 5,
"left": 10,
"bottom": 5,
"right": 10
}
}
},
"basic": {},
"properties": {
"layout": {
"width": 100,
"height": 60
}
}
},
"id": "7f5642ce-dc64-4666-a41f-832669ff1c4b"
}
}
],
"container_id": "54ca442b-63d1-43df-bda9-9f8cd2654e70"
},
"message": "Shape(s) content retrieved successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/shapes",
"status": "success"
}
Code Examples
curl -X GET "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes?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 Insert Shapes
POST https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes
Required Scopes:
Creates one or more vector shape objects inside a slide, master, or layout container. Use this endpoint to place rectangles, ovals, arrows, flowchart symbols, callouts, custom paths, or text-bearing shapes on a canvas. Each item in elements is a GraphicObject wrapper. For this route, send the shape branch and choose one shape family such as basic, block_arrow, star, flowchart, callout, mathematical_symbol, or custom. Do not send every branch shown in the schema explorer; those fields describe every supported shape variation, not a single valid payload. Do not send an id field in insert requests. Geometry is supplied through shape.properties.layout; fill, stroke, and text are optional.
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": [
{
"name": "Single Rectangle",
"shape": {
"basic": {
"type": "RECTANGLE"
},
"properties": {
"layout": {
"left": 100,
"top": 100,
"width": 240,
"height": 140
},
"fills": [
{
"solid": {
"color": {
"rgb": {
"red": 66,
"green": 133,
"blue": 244
}
}
}
}
],
"strokes": [
{
"type": "SOLID",
"width": 1,
"jointype": "ROUND",
"captype": "FLAT",
"position": "CENTER",
"fill": {
"solid": {
"color": {
"rgb": {
"red": 51,
"green": 51,
"blue": 51
}
}
}
}
}
],
"placeholder": {
"type": "TITLE"
}
},
"text": {
"paragraphs": [
{
"portions": [
{
"text": "Single shape"
}
]
}
]
}
}
}
]
}
Responses
{
"data": {
"success_count": "1",
"failure_count": "0",
"results": [
{
"insert_object": {
"final_index": "0",
"object": {
"slide_object": {
"slide_id": "54ca442b-63d1-43df-bda9-9f8cd2654e70",
"object_id": "4d6435df-0fb6-4bfa-97bb-f0e759feaf02"
}
}
}
}
]
},
"message": "Shape(s) added successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/shapes",
"status": "success"
}
Code Examples
curl -X POST "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"elements": [
{
"name": "Single Rectangle",
"shape": {
"basic": {
"type": "RECTANGLE"
},
"properties": {
"layout": {
"left": 100,
"top": 100,
"width": 240,
"height": 140
},
"fills": [
{
"solid": {
"color": {
"rgb": {
"red": 66,
"green": 133,
"blue": 244
}
}
}
}
],
"strokes": [
{
"type": "SOLID",
"width": 1,
"jointype": "ROUND",
"captype": "FLAT",
"position": "CENTER",
"fill": {
"solid": {
"color": {
"rgb": {
"red": 51,
"green": 51,
"blue": 51
}
}
}
}
}
],
"placeholder": {
"type": "TITLE"
}
},
"text": {
"paragraphs": [
{
"portions": [
{
"text": "Single shape"
}
]
}
]
}
}
}
]
}'
PUT Update Shapes
PUT https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes
Required Scopes:
Patches existing shape objects in the selected container. Use this to move or resize a shape, replace fills or strokes, update shadow/reflection, or edit the text facet without deleting and recreating the object. Each item in elements must include the target shape id. Send only the facets you want to change, such as properties.layout, properties.fills, properties.strokes, or text. Omitted fields are left unchanged. The response reports per-shape success or failure so batch clients can reconcile partial results.
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-000000000001",
"properties": {
"layout": {
"left": 50,
"top": 50,
"width": 240,
"height": 140
}
}
}
]
}
Responses
{
"data": {
"success_count": "1",
"failure_count": "0",
"results": [
{
"id": "4d6435df-0fb6-4bfa-97bb-f0e759feaf02",
"properties": [
{
"shape_id": "4d6435df-0fb6-4bfa-97bb-f0e759feaf02",
"status": "success",
"last_saved_version": "236"
}
]
}
]
},
"message": "Shape(s) updated successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/shapes",
"status": "success"
}
Code Examples
curl -X PUT "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"elements": [
{
"id": "a0000000-0000-4000-8000-000000000001",
"properties": {
"layout": {
"left": 50,
"top": 50,
"width": 240,
"height": 140
}
}
}
]
}'
DELETE Remove Shapes
DELETE https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes
Required Scopes:
Deletes one or more shape objects from the selected slide, master, or layout. Use this when the object itself should be removed from the canvas; deleting a shape also removes its text and visual styling. Pass the target object ids as a comma-separated ids query parameter. All ids must belong to the selected container. The response includes per-object results and the new revision id for each successful deletion.
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 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": "250",
"object_id": "96a1931b-1e23-4f07-9bbf-f503e397bc76"
}
]
},
"message": "Shape(s) deleted successfully",
"request_uri": "/api/v1/presentation/8i4vv3f345fcf907446a2bdc4e2c871fc585e/slides/54ca442b-63d1-43df-bda9-9f8cd2654e70/shapes",
"status": "success"
}
Code Examples
curl -X DELETE "https://show.zoho.com/api/v1/presentation/{rid}/{container}/{container_id}/shapes?ids={{object_id}}" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"