---
updatedAt: 2026-08-26T10:39:12.000Z
agentTools:
  projectIndex: https://docs.allegrow.co/llms.txt
---

# List Safety Net Sequences

Returns the sequences (Outreach) and cadences (Salesloft) synced from your sales-engagement integrations, with Allegrow's per-sequence Safety Net state.

Entries are per **owner and sequence**: the same CRM sequence appears once for each connected user who owns it. `id` is Allegrow's opaque identifier for the entry; `crmSequenceId` plus `service` let you cross-reference the sequence in your sales-engagement platform.

Unlike the other list endpoints, filtering and pagination run server-side — the largest workspaces hold tens of thousands of sequences, so pages are windows onto live data rather than slices of one snapshot. Results are deterministically sorted by `name`, then `crmSequenceId`.


Returns the sequences (Outreach) and cadences (Salesloft) synced from your sales-engagement integrations, with Allegrow's per-sequence Safety Net state.

Entries are per **owner and sequence**: the same CRM sequence appears once for each connected user who owns it. `id` is Allegrow's opaque identifier for the entry — use it with [Update Safety Net Sequence](/reference/update-safety-net-sequence). `crmSequenceId` plus `service` let you cross-reference the sequence in Outreach or Salesloft directly (CRM ids alone can overlap between the two platforms, which is why they aren't the key).

Unlike the other list endpoints, filtering and pagination run **server-side**: the largest workspaces hold tens of thousands of sequences, so pages are windows onto live data rather than slices of one snapshot.

`hasEmailStep` is `null` when the sequence's content has not been determined.

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Allegrow Workspace API",
    "description": "The Allegrow Workspace API provides read-only, programmatic access to your workspace's connected mailboxes, sender reputation, sending domains, Safety Net mailboxes, and users — the same data shown in the Allegrow app, ready to plug into your own dashboards and BI tooling.\n",
    "version": "1.0.0",
    "contact": {
      "name": "Allegrow Support",
      "email": "support@allegrow.co"
    }
  },
  "servers": [
    {
      "url": "https://api.allegrow.co",
      "description": "Production API"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/safety-net-sequences": {
      "get": {
        "summary": "List Safety Net Sequences",
        "description": "Returns the sequences (Outreach) and cadences (Salesloft) synced from your sales-engagement integrations, with Allegrow's per-sequence Safety Net state.\n\nEntries are per **owner and sequence**: the same CRM sequence appears once for each connected user who owns it. `id` is Allegrow's opaque identifier for the entry; `crmSequenceId` plus `service` let you cross-reference the sequence in your sales-engagement platform.\n\nUnlike the other list endpoints, filtering and pagination run server-side — the largest workspaces hold tens of thousands of sequences, so pages are windows onto live data rather than slices of one snapshot. Results are deterministically sorted by `name`, then `crmSequenceId`.\n",
        "operationId": "listSafetyNetSequences",
        "tags": [
          "Safety Net"
        ],
        "parameters": [
          {
            "name": "service",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "outreach",
                "salesloft"
              ]
            },
            "description": "Return only sequences from this integration.",
            "example": "outreach"
          },
          {
            "name": "activated",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            },
            "description": "Filter by the `activated` flag. Omit to return all. `total` reflects the filtered count.",
            "example": "true"
          },
          {
            "$ref": "#/components/parameters/LimitParam"
          },
          {
            "$ref": "#/components/parameters/OffsetParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of sequences",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "limit",
                    "offset",
                    "sequences",
                    "total"
                  ],
                  "properties": {
                    "limit": {
                      "type": "integer",
                      "example": 50
                    },
                    "offset": {
                      "type": "integer",
                      "example": 0
                    },
                    "sequences": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SafetyNetSequence"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of matching sequence entries across all pages (after filters, when supplied).",
                      "example": 1240
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid query parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleError"
                },
                "example": {
                  "error": "service must be one of: outreach, salesloft"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/MissingApiKeyError"
          },
          "403": {
            "$ref": "#/components/responses/InvalidApiKeyError"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitError"
          },
          "503": {
            "description": "A dependent Allegrow service is temporarily unavailable. Retry after the number of seconds in the `Retry-After` header.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested seconds to wait before retrying."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleError"
                },
                "example": {
                  "error": "Service temporarily unavailable"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "Your Allegrow API key"
      }
    },
    "parameters": {
      "LimitParam": {
        "name": "limit",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000,
          "default": 50
        },
        "description": "Page size (1–1000). A single page can hold an entire workspace — for a full snapshot request limit=1000 rather than stitching offset pages, which are computed independently.",
        "example": 50
      },
      "OffsetParam": {
        "name": "offset",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "description": "Zero-based index of the first entry to return.",
        "example": 0
      }
    },
    "responses": {
      "MissingApiKeyError": {
        "description": "Unauthorized - API key missing from the request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": "Unauthorized",
              "message": "Unauthorized",
              "statusCode": 401
            }
          }
        }
      },
      "InvalidApiKeyError": {
        "description": "Forbidden - API key invalid or inactive",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": "Forbidden",
              "message": "Forbidden",
              "statusCode": 403
            }
          }
        }
      },
      "RateLimitError": {
        "description": "Rate limit exceeded. Requests count against the same per-second rate limit as validation API calls.",
        "headers": {
          "Retry-After": {
            "description": "Suggested seconds to wait before retrying",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": "Too Many Requests",
              "message": "Too Many Requests",
              "statusCode": 429
            }
          }
        }
      }
    },
    "schemas": {
      "SafetyNetSequence": {
        "type": "object",
        "required": [
          "activated",
          "crmSequenceId",
          "hasEmailStep",
          "id",
          "name",
          "owner",
          "service"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Opaque identifier for this sequence entry — use it with PATCH /v1/safety-net-sequences/{id}. May briefly be `null` for a newly synced sequence; refetch the list to obtain it.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "crmSequenceId": {
            "type": "string",
            "description": "The sequence's own id in your sales-engagement platform, for cross-referencing it in Outreach or Salesloft alongside `service`. Outreach and Salesloft ids can overlap numerically, so this is not an update key.",
            "example": "9001"
          },
          "activated": {
            "type": "boolean",
            "description": "Whether the Safety Net is switched on for this sequence.",
            "example": true
          },
          "hasEmailStep": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether the sequence contains an email step. `null` when the sequence's content has not been determined.",
            "example": null
          },
          "name": {
            "type": "string",
            "nullable": true,
            "example": "Outbound Q3"
          },
          "owner": {
            "type": "object",
            "nullable": true,
            "description": "The workspace user this entry belongs to. `null` when the owning user is no longer in your workspace.",
            "required": [
              "email",
              "firstName",
              "lastName"
            ],
            "properties": {
              "email": {
                "type": "string",
                "format": "email",
                "example": "rep@allegrow.co"
              },
              "firstName": {
                "type": "string",
                "nullable": true,
                "example": "Ada"
              },
              "lastName": {
                "type": "string",
                "nullable": true,
                "example": "Lovelace"
              }
            }
          },
          "service": {
            "type": "string",
            "enum": [
              "outreach",
              "salesloft"
            ],
            "description": "The sales-engagement integration this sequence lives in.",
            "example": "outreach"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "message",
          "error",
          "statusCode"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "Error message"
          },
          "error": {
            "type": "string",
            "description": "Error type"
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code"
          }
        }
      },
      "SimpleError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Error message"
          }
        }
      }
    }
  }
}
```