curl --request GET \
--url https://api-prod.heliyos.ai/v1/platform/reviews \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.heliyos.ai/v1/platform/reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-prod.heliyos.ai/v1/platform/reviews"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"meta": {
"message": "Successful request",
"pagination": {
"limit": 20,
"next_cursor": "NjZmMWE4YzNlNGIwYTFiMmMzZDRlNWY2"
}
},
"data": [
{
"_id": "6731f0a9b2c4d5e6f7a8b9c0",
"id": "6731f0a9b2c4d5e6f7a8b9c0",
"organizationId": "66a0f1e2d3c4b5a697887766",
"type": "email_draft",
"kind": "action",
"origin": "model",
"status": "PENDING",
"approval": {
"status": "PENDING",
"by": null,
"at": null,
"comment": null,
"feedback": null
},
"agent": "Account researcher",
"agentRef": {
"id": "6720a0b1c2d3e4f5a6b7c8d9",
"name": "Account researcher"
},
"runId": "0f1e2d3c4b5a69788766554433221100",
"taskId": "6729e1f2a3b4c5d6e7f80910",
"tool": {
"name": "send_email",
"callId": "call_7f3a9c2e"
},
"proposal": {
"title": "Send email: Renewal terms for 2027",
"summary": "Send Dana Whitfield the renewal terms discussed on Tuesday's call.",
"args": {
"to": [
"dana.whitfield@northwind.example.com"
],
"subject": "Renewal terms for 2027",
"body": "Hi Dana, as promised, here are the renewal terms we discussed on Tuesday."
}
},
"confidence": 72,
"reasoning": "Dana asked for the terms in writing by Friday.",
"approvalReason": "Sending email requires approval in this workspace.",
"objectRef": {
"objectId": "66f1a8c3e4b0a1b2c3d4e5f6",
"objectType": "company",
"name": "Northwind Traders"
},
"objectRefs": [
{
"objectId": "66f1a8c3e4b0a1b2c3d4e5f6",
"objectType": "company",
"name": "Northwind Traders"
}
],
"draftEmail": {
"subject": "Renewal terms for 2027",
"body": "Hi Dana, as promised, here are the renewal terms we discussed on Tuesday.",
"to": [
"dana.whitfield@northwind.example.com"
],
"isSend": true
},
"metadata": {
"created": {
"at": "2026-11-04T09:30:00.000Z"
},
"updated": {
"at": "2026-11-04T09:30:00.000Z"
}
}
}
]
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}List reviews
Returns the workspace’s reviews: worker actions waiting for a person, and the ones already decided. Without
status, every status is returned. To see what needs a person now, send status=PENDING.
By default the list pages with a cursor, newest review first: pass limit, then send
meta.pagination.next_cursor back as cursor for the next page. Sending offset or page (without
cursor) switches to offset paging, ordered by most recent activity, so a review a later run proposed again
moves up. Then meta.pagination is { page, limit, count, totalPages, hasMore }.
See Pagination.
Each item is the full review, as in Get a review, without the resolved records and work.
curl --request GET \
--url https://api-prod.heliyos.ai/v1/platform/reviews \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.heliyos.ai/v1/platform/reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-prod.heliyos.ai/v1/platform/reviews"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"meta": {
"message": "Successful request",
"pagination": {
"limit": 20,
"next_cursor": "NjZmMWE4YzNlNGIwYTFiMmMzZDRlNWY2"
}
},
"data": [
{
"_id": "6731f0a9b2c4d5e6f7a8b9c0",
"id": "6731f0a9b2c4d5e6f7a8b9c0",
"organizationId": "66a0f1e2d3c4b5a697887766",
"type": "email_draft",
"kind": "action",
"origin": "model",
"status": "PENDING",
"approval": {
"status": "PENDING",
"by": null,
"at": null,
"comment": null,
"feedback": null
},
"agent": "Account researcher",
"agentRef": {
"id": "6720a0b1c2d3e4f5a6b7c8d9",
"name": "Account researcher"
},
"runId": "0f1e2d3c4b5a69788766554433221100",
"taskId": "6729e1f2a3b4c5d6e7f80910",
"tool": {
"name": "send_email",
"callId": "call_7f3a9c2e"
},
"proposal": {
"title": "Send email: Renewal terms for 2027",
"summary": "Send Dana Whitfield the renewal terms discussed on Tuesday's call.",
"args": {
"to": [
"dana.whitfield@northwind.example.com"
],
"subject": "Renewal terms for 2027",
"body": "Hi Dana, as promised, here are the renewal terms we discussed on Tuesday."
}
},
"confidence": 72,
"reasoning": "Dana asked for the terms in writing by Friday.",
"approvalReason": "Sending email requires approval in this workspace.",
"objectRef": {
"objectId": "66f1a8c3e4b0a1b2c3d4e5f6",
"objectType": "company",
"name": "Northwind Traders"
},
"objectRefs": [
{
"objectId": "66f1a8c3e4b0a1b2c3d4e5f6",
"objectType": "company",
"name": "Northwind Traders"
}
],
"draftEmail": {
"subject": "Renewal terms for 2027",
"body": "Hi Dana, as promised, here are the renewal terms we discussed on Tuesday.",
"to": [
"dana.whitfield@northwind.example.com"
],
"isSend": true
},
"metadata": {
"created": {
"at": "2026-11-04T09:30:00.000Z"
},
"updated": {
"at": "2026-11-04T09:30:00.000Z"
}
}
}
]
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}{
"message": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": "<unknown>"
}
}heliyos_reviews_list.Authorizations
A workspace API key, sent as Authorization: Bearer heliyos_.... Create one in Heliyos under Settings → API keys. A key acts as a workspace admin in the one workspace it was created in.
Query Parameters
Reviews per page, 1 to 100. Defaults to 20.
1 <= x <= 100The next_cursor from the previous page. Takes precedence over offset and page.
next_cursor from the previous page; only valid with the default sort.
200A page number, starting at 1, for offset paging. Skips (page - 1) * limit reviews. Ignored when offset is sent.
x >= 1The number of reviews to skip, for offset paging.
x >= 0Only reviews with this decision. Omit for all.
PENDING: waiting for a person.APPROVED: approved by a person or by the workspace's autopilot settings.REJECTED: rejected by a person.
PENDING, APPROVED, REJECTED Only reviews of this type, exact match, for example email_draft or deal_update (see type in the response for the values). decision also matches older questions and approval requests stored under other names. An unknown type returns an empty list.
64^[a-z][a-z0-9_]*$Only reviews about this record, task, email thread or file: a review matches when the id is one of its records (objectRefs), its task, the email thread of its draft or the file it saves.
A record, task, inbox thread or attachment id.
100Accepted with objectId for compatibility. It does not narrow the results further.
50An older name for objectId. Ignored when objectId is sent.
100An older name for objectType. Ignored when objectType is sent.
50Was this page helpful?

