> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Lemlist: Get Enrichment Waterfall

> Get Enrichment Waterfall. Includes SDK V2 and CLI requests, input constraints, response fields, and Deepline credit cost.

Get Enrichment Waterfall.

<Info>
  Tool ID: `lemlist_get_enrichment_waterfall`
</Info>

## Run this action

Use the TypeScript SDK for a single call. Put `ctx.tools.execute(...)` inside a Play when the call should be durable, scheduled, or run across a CSV.

```ts theme={null}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'lemlist_get_enrichment_waterfall',
  {
    "waterfallId": "waterfall_123"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={null}
deepline tools execute lemlist_get_enrichment_waterfall --input '{
  "waterfallId": "waterfall_123"
}' --json
```

## Example response

The SDK exposes this shape at `result.toolResponse.raw`. Values below are representative.

```json theme={null}
{
  "data": {
    "data": {
      "id": "id_123",
      "type": "email",
      "name": "Example",
      "isDefault": true,
      "editor": "example",
      "providers": [
        {
          "id": "id_123",
          "enabled": true
        }
      ],
      "createdAt": "2026-01-15T12:00:00Z",
      "updatedAt": "2026-01-15T12:00:00Z"
    }
  }
}
```

Use `deepline tools get lemlist_get_enrichment_waterfall --json` for the latest machine-readable contract.

## Input reference

Returns one waterfall of your team, default or custom.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.waterfallId` | `string` | Yes | — | Id of the waterfall, as returned by the list endpoint: `default_email` or `default_phone` for a default waterfall, an `ecw_` id for a custom one. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Returns one waterfall of your team, default or custom.",
    "properties": {
      "waterfallId": {
        "type": "string",
        "description": "Id of the waterfall, as returned by the list endpoint: `default_email` or `default_phone` for a default waterfall, an `ecw_` id for a custom one."
      }
    },
    "required": [
      "waterfallId"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.data` | `object` | No | — | An ordered list of providers for one enrichment type. |
| `result.data.data.id` | `string` | Yes | — | Waterfall id. Always `default_email` or `default_phone` for a default waterfall, even after it was edited; custom waterfalls get an id prefixed with `ecw_`. |
| `result.data.data.type` | `"email" \| "phone"` | Yes | — | Kind of data the waterfall looks for. Allowed: `email`, `phone`. |
| `result.data.data.name` | `string` | Yes | — | Display name, 1 to 100 characters. |
| `result.data.data.isDefault` | `boolean` | Yes | — | `true` for the team's default waterfall of this type (one per type, cannot be created or deleted). `false` for a custom waterfall. |
| `result.data.data.editor` | `string` | Yes | — | Who defined the provider order. `lemlist` on a default waterfall nobody edited: connected external providers first, then internal providers in a random order (tier by tier for phone, see `providers[].tier`); `providers` then shows a reference order. Otherwise the id of the team member who last edited the waterfall (`usr_` prefix): `providers` is then followed as is. Custom waterfalls always have a user editor. |
| `result.data.data.conditions` | `object` | No | — | Conditions on the contact being enriched, keyed by contact property. Every key present must match for the waterfall to run. New keys will be added over time; unknown keys are rejected. |
| `result.data.data.conditions.country` | `object` | No | — | The contact's resolved country (from its `location`, `country` or company data), as ISO 3166-1 alpha-2 codes. |
| `result.data.data.conditions.country.in` | `array` | No | — | Countries that match. Unique. |
| `result.data.data.conditions.country.out` | `array` | No | — | Countries that exclude the contact. Unique, disjoint from `in`. At least one of `in` or `out` must be non-empty. |
| `result.data.data.providers` | `array` | Yes | — | Execution order. Always contains every provider of the catalog for this `type` exactly once, disabled ones included. External providers appear only while connected; a newly connected one is appended disabled on custom waterfalls. |
| `result.data.data.providers[].order` | `integer` | No | — | Execution rank, starting at 1, matching the position in the array. Returned only. Minimum: 1. |
| `result.data.data.providers[].id` | `string` | Yes | — | Provider id, from `GET /enrichments/providers`. |
| `result.data.data.providers[].enabled` | `boolean` | Yes | — | Disabled providers keep their position but are skipped at enrichment time. |
| `result.data.data.providers[].image` | `string` | No | — | Path of the provider logo shown in the lemlist app, relative to the app origin. Read-only. |
| `result.data.data.providers[].source` | `"internal" \| "external"` | No | — | `internal`: paid with lemlist credits. `external`: called with your own API key. Read-only. Allowed: `internal`, `external`. |
| `result.data.data.providers[].shuffled` | `boolean` | No | — | Only on a default waterfall while its `editor` is `lemlist`. `true`: tried in a random position among the other shuffled providers; `false`: always tried first, at its position (providers you connected with your own API key). Read-only. |
| `result.data.data.providers[].tier` | `integer` | No | — | Only on the default phone waterfall while its `editor` is `lemlist`. Phone providers are tried tier by tier, in a random order inside each tier. Read-only. Minimum: 1. |
| `result.data.data.createdAt` | `string \| null` | Yes | — | `null` on a default waterfall that was never edited. Format: `date-time`. |
| `result.data.data.updatedAt` | `string \| null` | Yes | — | `null` on a default waterfall that was never edited. Format: `date-time`. |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "data": {
            "type": "object",
            "description": "An ordered list of providers for one enrichment type.",
            "properties": {
              "id": {
                "type": "string",
                "description": "Waterfall id. Always `default_email` or `default_phone` for a default waterfall, even after it was edited; custom waterfalls get an id prefixed with `ecw_`."
              },
              "type": {
                "type": "string",
                "description": "Kind of data the waterfall looks for.",
                "enum": [
                  "email",
                  "phone"
                ]
              },
              "name": {
                "type": "string",
                "description": "Display name, 1 to 100 characters."
              },
              "isDefault": {
                "type": "boolean",
                "description": "`true` for the team's default waterfall of this type (one per type, cannot be created or deleted). `false` for a custom waterfall."
              },
              "editor": {
                "type": "string",
                "description": "Who defined the provider order. `lemlist` on a default waterfall nobody edited: connected external providers first, then internal providers in a random order (tier by tier for phone, see `providers[].tier`); `providers` then shows a reference order. Otherwise the id of the team member who last edited the waterfall (`usr_` prefix): `providers` is then followed as is. Custom waterfalls always have a user editor."
              },
              "conditions": {
                "type": "object",
                "description": "Conditions on the contact being enriched, keyed by contact property. Every key present must match for the waterfall to run. New keys will be added over time; unknown keys are rejected.",
                "properties": {
                  "country": {
                    "type": "object",
                    "description": "The contact's resolved country (from its `location`, `country` or company data), as ISO 3166-1 alpha-2 codes.",
                    "properties": {
                      "in": {
                        "type": "array",
                        "description": "Countries that match. Unique.",
                        "items": {
                          "type": "string",
                          "pattern": "^[A-Z]{2}$"
                        }
                      },
                      "out": {
                        "type": "array",
                        "description": "Countries that exclude the contact. Unique, disjoint from `in`. At least one of `in` or `out` must be non-empty.",
                        "items": {
                          "type": "string",
                          "pattern": "^[A-Z]{2}$"
                        }
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "providers": {
                "type": "array",
                "description": "Execution order. Always contains every provider of the catalog for this `type` exactly once, disabled ones included. External providers appear only while connected; a newly connected one is appended disabled on custom waterfalls.",
                "items": {
                  "type": "object",
                  "description": "One step of a waterfall. In requests, the position in the `providers` array is the execution order and `order` is ignored. In responses, `order` is always present.",
                  "properties": {
                    "order": {
                      "type": "integer",
                      "description": "Execution rank, starting at 1, matching the position in the array. Returned only.",
                      "minimum": 1
                    },
                    "id": {
                      "type": "string",
                      "description": "Provider id, from `GET /enrichments/providers`."
                    },
                    "enabled": {
                      "type": "boolean",
                      "description": "Disabled providers keep their position but are skipped at enrichment time."
                    },
                    "image": {
                      "type": "string",
                      "description": "Path of the provider logo shown in the lemlist app, relative to the app origin. Read-only."
                    },
                    "source": {
                      "type": "string",
                      "description": "`internal`: paid with lemlist credits. `external`: called with your own API key. Read-only.",
                      "enum": [
                        "internal",
                        "external"
                      ]
                    },
                    "shuffled": {
                      "type": "boolean",
                      "description": "Only on a default waterfall while its `editor` is `lemlist`. `true`: tried in a random position among the other shuffled providers; `false`: always tried first, at its position (providers you connected with your own API key). Read-only."
                    },
                    "tier": {
                      "type": "integer",
                      "description": "Only on the default phone waterfall while its `editor` is `lemlist`. Phone providers are tried tier by tier, in a random order inside each tier. Read-only.",
                      "minimum": 1
                    }
                  },
                  "required": [
                    "id",
                    "enabled"
                  ],
                  "additionalProperties": false
                }
              },
              "createdAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "`null` on a default waterfall that was never edited.",
                "format": "date-time"
              },
              "updatedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "`null` on a default waterfall that was never edited.",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "type",
              "name",
              "isDefault",
              "editor",
              "providers",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Waterfall orchestration is free. Individual provider lookups within the waterfall are charged at their listed rates (see provider pricing above).
* Typical cost: 0.3-1.0 credits for email waterfalls, 1-5 credits for phone waterfalls.

## Related documentation

* [Lemlist provider guide](/docs/providers/lemlist/guide)
* [SDK V2 quickstart](/docs/sdk-v2/quickstart)
* [SDK reference](/docs/sdk-v2/sdk-reference)
* [Run tools across a CSV](/docs/sdk-v2/batch-csv)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.