---
updatedAt: 2026-05-29T08:51:20.000Z
agentTools:
  projectIndex: https://docs.whippy.ai/llms.txt
---

# List Contact Sequences

Returns data about all sequences a contact is part of — including:
  - the last step they completed
  - the step they're currently in
  - and the next step that's coming up

Also, the `ID` and `title` of both the Sequence and Step are returned, making it easier to reference them in your system.
You can filter the results using `sequence_status` and `contact_status` - here's what those mean:

* contact_status - tells you where the contact is inside a step:
  * `"pending"` - waiting to enter the step
  * `"active"` - currently in the step
  * `"inactive"` - currently inactive in the step. Won't receive the step message
  * `"moved"` - they've been moved to another step
  * `"finished"` - they've completed the step

* sequence_status - shows the state of the whole sequence:
  * `"active"` - working normally, accessible, contacts can be added and messages can be sent
  * `"draft"` - accessible but no contacts can be added and no messages can be sent
  * `"archived"` - old and not in use anymore

* Possible Body Parameters:
  * limit - the number of sequences to return
    * defaults to `50` when not provided
    * maximum is `500`
  * offset - the number of sequences to skip
  * sequence_id - the ID of the Sequence to filter by. Could be used to check if a contact is in a specific sequence.
  * contact_status - status of the Contact in latest sequence step to filter by
    * possible values: pending, active, inactive, moved, finished
  * `sequence_status` - status of the Sequence to filter by
    * possible values: draft, active


# OpenAPI definition

```json
{
  "components": {
    "schemas": {
      "NotAuthenticatedErrorResponse": {
        "description": "Not Authenticated Error Response schema",
        "example": {
          "errors": [
            {
              "description": "Not authenticated"
            }
          ],
          "status": 401
        },
        "properties": {
          "errors": {
            "description": "Not authenticated error",
            "items": {
              "properties": {
                "description": {
                  "enum": [
                    "Not authenticated"
                  ],
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                }
              },
              "type": "object",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "status": {
            "enum": [
              401
            ],
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "NotAuthenticatedErrorResponse",
        "type": "object",
        "x-struct": "Elixir.DashboardApiWeb.Public.V1.Documentation.Errors.NotAuthenticated",
        "x-validate": null
      },
      "ContactBadRequestErrorResponse": {
        "description": "Contact Bad Request Error Response schema",
        "example": {
          "errors": [
            {
              "description": "Invalid path param ID: null"
            }
          ],
          "status": 400
        },
        "properties": {
          "errors": {
            "description": "Contact 400 error",
            "items": {
              "properties": {
                "description": {
                  "enum": [
                    "Invalid path param ID: null"
                  ],
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                }
              },
              "type": "object",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "status": {
            "enum": [
              400
            ],
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "ContactBadRequestErrorResponse",
        "type": "object",
        "x-struct": "Elixir.DashboardApiWeb.Public.V1.Documentation.Contacts.Contact.Errors.BadRequest",
        "x-validate": null
      },
      "ContactNotFoundErrorResponse": {
        "description": "Contact Not Found Error Response schema",
        "example": {
          "errors": [
            {
              "description": "Contact not found"
            }
          ],
          "status": 404
        },
        "properties": {
          "errors": {
            "description": "Contact 404 error",
            "items": {
              "properties": {
                "description": {
                  "enum": [
                    "Contact not found"
                  ],
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                }
              },
              "type": "object",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "status": {
            "enum": [
              404
            ],
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "ContactNotFoundErrorResponse",
        "type": "object",
        "x-struct": "Elixir.DashboardApiWeb.Public.V1.Documentation.Contacts.Contact.Errors.NotFound",
        "x-validate": null
      },
      "ListContactSequencesParams": {
        "description": "Request schema for listing contact's sequences in an organization.",
        "example": {
          "contact_status": "active",
          "limit": 50,
          "offset": 0,
          "sequence_id": "a7b24e6a-d2b0-4db4-9686-0059858f7a6c",
          "sequence_status": "active"
        },
        "properties": {
          "contact_status": {
            "description": "Status of the contact in latest sequence step.\nReturns data for all contact statuses by default.\n\nThe statuses are:\n  * `\"pending\"` - waiting to enter the step\n  * `\"active\"` - currently in the step\n  * `\"inactive\"` - currently inactive in the step. Won't receive the step message\n  * `\"moved\"` - they've been moved to another step\n  * `\"finished\"` - they've completed the step\n\n",
            "enum": [
              "pending",
              "active",
              "inactive",
              "moved",
              "finished"
            ],
            "example": "active",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "limit": {
            "default": 50,
            "description": "Number of results to return",
            "example": 50,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          },
          "offset": {
            "default": 0,
            "description": "Number of results to skip",
            "example": 0,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          },
          "sequence_id": {
            "description": "Sequence ID",
            "example": "7d29f077-5d47-4e9d-83f8-7420b1aba7b2",
            "format": "uuid",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "sequence_status": {
            "description": "Status of the sequence.\nReturns data for all sequence statuses by default.\n\nThe statuses are:\n  * `\"active\"` - working normally, accessible, contacts can be added and messages can be sent\n  * `\"draft\"` - accessible but no contacts can be added and no messages can be sent\n  * `\"archived\"` - old and not in use anymore\n",
            "enum": [
              "draft",
              "active"
            ],
            "example": "active",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "ListContactSequencesParams",
        "type": "object",
        "x-struct": null,
        "x-validate": null
      },
      "ListContactSequencesResponse": {
        "description": "Response schema for listing contact sequences data",
        "example": {
          "data": [
            {
              "contact_id": "b9ecf5c8-7fc4-44f4-aaae-3dc8fbc8531e",
              "contact_status": "active",
              "sequence_access_level": "organization",
              "sequence_description": "Sequence Description",
              "sequence_id": "6d1c4740-36cb-454c-9ea2-efa59de3ca5e",
              "sequence_inserted_at": "2023-04-05T14:49:53Z",
              "sequence_status": "active",
              "sequence_title": "Sequence Title",
              "sequence_type": "sequential",
              "sequence_updated_at": "2023-04-05T15:18:50Z",
              "step_id": "919077aa-1859-4665-ab58-15bbe2a3be85",
              "step_status": "active",
              "step_title": "Step Title"
            }
          ],
          "total": 1
        },
        "properties": {
          "data": {
            "description": "List of contact sequences data (sequences the contact currently is, will be or has been in).",
            "items": {
              "description": "Data for a single contact sequence.",
              "properties": {
                "contact_id": {
                  "description": "Contact ID",
                  "example": "2990d4b1-f1e4-40ca-b2b2-cfa0f483b85c",
                  "format": "uuid",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "contact_status": {
                  "description": "Contact Status in the Sequence Step",
                  "enum": [
                    "pending",
                    "active",
                    "inactive",
                    "moved",
                    "finished"
                  ],
                  "example": "active",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_access_level": {
                  "description": "Sequence Access Level",
                  "enum": [
                    "user",
                    "location",
                    "organization",
                    "global"
                  ],
                  "example": "organization",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_description": {
                  "description": "Sequence Description",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_id": {
                  "description": "Sequence ID",
                  "example": "becebebb-af98-4f33-a555-1c10bdda3565",
                  "format": "uuid",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_inserted_at": {
                  "description": "Time of creation of the sequence in ISO 8601 format",
                  "example": "2023-04-05 14:49:53.000000",
                  "format": "date-time",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_status": {
                  "description": "Sequence Status",
                  "enum": [
                    "draft",
                    "active"
                  ],
                  "example": "active",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_title": {
                  "description": "Sequence Title",
                  "example": "Sequence Title",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_type": {
                  "description": "Sequence Type",
                  "enum": [
                    "sequential",
                    "branched"
                  ],
                  "example": "sequential",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "sequence_updated_at": {
                  "description": "Time of last update of the sequence in ISO 8601 format",
                  "example": "2023-04-05 15:18:50.000000",
                  "format": "date-time",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "step_id": {
                  "description": "Step ID",
                  "example": "4e8d8bb9-d7b7-452d-b4e7-5b7985e75e80",
                  "format": "uuid",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "step_status": {
                  "description": "Step Status",
                  "enum": [
                    "active"
                  ],
                  "example": "active",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                },
                "step_title": {
                  "description": "Step Title",
                  "example": "Step Title",
                  "type": "string",
                  "x-struct": null,
                  "x-validate": null
                }
              },
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "total": {
            "description": "Total number of contact sequences matching the filters",
            "example": 1,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "ListContactSequencesResponse",
        "type": "object",
        "x-struct": null,
        "x-validate": null
      }
    },
    "securitySchemes": {
      "authorization": {
        "in": "header",
        "name": "X-WHIPPY-KEY",
        "type": "apiKey"
      },
      "bearer": {
        "description": "OAuth Access token",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Whippy Public API.\n\n## Authentication\n\nThe Whippy Public API supports two authentication methods:\n\n**API Key** — Generate an organization API token and send it with every request as the `X-WHIPPY-KEY` header.\n\n**OAuth Bearer Token** — Obtain an access token via the OAuth authorization flow and send it as a Bearer token in the `Authorization` header (e.g. `Authorization: Bearer <access_token>`).\n\n## Rate Limiting\n\nThe Whippy API is rate limited. Different endpoints have different rate limits.\nEach request to the API will return the following headers, which can be used to keep track of your rate limit status:\n * `x-ratelimit-max`: The maximum number of requests that the consumer is permitted to make in the given time period.\n * `x-ratelimit-remaining`: The number of requests remaining in the current rate limit window.\n * `x-ratelimit-interval-milliseconds`: The rate limit window in milliseconds.\n * `x-ratelimit-remaining-interval-milliseconds`: The time in milliseconds until the rate limit window resets.\n",
    "title": "Whippy Public API",
    "version": "1.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/v1/contacts/{id}/sequences": {
      "post": {
        "callbacks": {},
        "deprecated": false,
        "description": "Returns data about all sequences a contact is part of — including:\n  - the last step they completed\n  - the step they're currently in\n  - and the next step that's coming up\n\nAlso, the `ID` and `title` of both the Sequence and Step are returned, making it easier to reference them in your system.\nYou can filter the results using `sequence_status` and `contact_status` - here's what those mean:\n\n* contact_status - tells you where the contact is inside a step:\n  * `\"pending\"` - waiting to enter the step\n  * `\"active\"` - currently in the step\n  * `\"inactive\"` - currently inactive in the step. Won't receive the step message\n  * `\"moved\"` - they've been moved to another step\n  * `\"finished\"` - they've completed the step\n\n* sequence_status - shows the state of the whole sequence:\n  * `\"active\"` - working normally, accessible, contacts can be added and messages can be sent\n  * `\"draft\"` - accessible but no contacts can be added and no messages can be sent\n  * `\"archived\"` - old and not in use anymore\n\n* Possible Body Parameters:\n  * limit - the number of sequences to return\n    * defaults to `50` when not provided\n    * maximum is `500`\n  * offset - the number of sequences to skip\n  * sequence_id - the ID of the Sequence to filter by. Could be used to check if a contact is in a specific sequence.\n  * contact_status - status of the Contact in latest sequence step to filter by\n    * possible values: pending, active, inactive, moved, finished\n  * `sequence_status` - status of the Sequence to filter by\n    * possible values: draft, active\n",
        "operationId": "publicV1ListContactSequences",
        "parameters": [
          {
            "description": "Contact ID",
            "example": "4c3ffbe1-a527-4109-8b96-2a48277f2631",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListContactSequencesParams"
              }
            }
          },
          "description": "Contact Sequences Params",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListContactSequencesResponse"
                }
              }
            },
            "description": "Contact Sequences Response"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactBadRequestErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotAuthenticatedErrorResponse"
                }
              }
            },
            "description": "Not Authenticated"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactNotFoundErrorResponse"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {},
          {
            "authorization": []
          },
          {
            "bearer": []
          }
        ],
        "summary": "List Contact Sequences",
        "tags": [
          "Contact"
        ]
      }
    }
  },
  "security": [],
  "servers": [
    {
      "url": "https://api.whippy.co",
      "variables": {}
    }
  ]
}
```