Read the sandbox-versus-production comparison for a pipe version, grouped into the deploy review categories.
BETA - This API is currently in beta testing. If you encounter issues or have feedback, contact our support team.
Before You Begin
🔗 Use the GraphQL Playground to execute the queries in this guide.
➡️ New to GraphQL? Learn how to navigate the Playground with our Playground Basics Guide.
Prerequisites
- Authentication: Use a Service Account token (Personal Access Tokens are deprecated).
- Permissions: Your token must have
Admin(manage) permission on the production pipe this version belongs to. A token that does not returnsPERMISSION_DENIED. - An open sandbox: The pipe needs a version from Open a Pipe Sandbox Version. Read the comparison on that production pipe. There is no root field, and you do not pass a version id or a snapshot id.
- A snapshot on both sides: both the production pipe and the draft need an uploaded snapshot. See Create a pipe snapshot.
Step 1: Read the Comparison
compareToProduction returns the comparison for this version as one JSON value. The payload is the service hash: a summary plus categories. categories is the eight groups in this order: pipe_configuration, phases_and_fields, conditional_fields, automations, email_templates, connections, webhooks, labels.
query {
pipe(id: 123) {
repoVersion {
compareToProduction(filter: ALL)
}
}
}
Input Explanation:
pipe.id(required): The production pipe whose open sandbox you are reviewing.filter(optional):ALLreturns every category, including unchanged properties.TOUCHEDreturns only what the comparison touched filter keeps. Omitting the argument and passing an explicitnullboth behave asALL.
Sample Response:
{
"data": {
"pipe": {
"repoVersion": {
"compareToProduction": {
"summary": {
"created": 1,
"updated": 0,
"deleted": 0,
"total": 1
},
"categories": [
{
"key": "pipe_configuration",
"changes": 1,
"sections": [
{
"key": "general",
"properties": [
{ "key": "name", "status": "updated" }
]
}
]
},
{ "key": "phases_and_fields", "changes": 0, "rows": [] },
{ "key": "conditional_fields", "changes": 0, "rows": [] },
{ "key": "automations", "changes": 0, "rows": [] },
{ "key": "email_templates", "changes": 0, "rows": [] },
{ "key": "connections", "changes": 0, "rows": [] },
{ "key": "webhooks", "changes": 0, "rows": [] },
{ "key": "labels", "changes": 0, "rows": [] }
]
}
}
}
}
}
Response Fields
summary: Counts of created, updated, and deleted items, plustotal.categories: The eight groups listed above, in that order. Each entry has akey, achangescount, and eithersectionsorrows. The sample abbreviatespipe_configurationto one property.
Key Notes
- One JSON value:
compareToProductionreturns a single JSON object. It is not a list, so it cannot be paginated. - Production pipe is authorized: the token must administer the production pipe this version belongs to. A token that does not receives
PERMISSION_DENIED. - Missing draft: a version whose sandbox was torn down, or whose clone was never recorded, returns
RESOURCE_NOT_FOUND. - Service failure: a missing snapshot or an unreadable checkpoint returns
PIPEFY_RUNTIMEwith the comparison service message. - Null filter: an explicit
nullfilter behaves asALL.

