> ## 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.

# Apollo: Poll Webhook Result

> Recovering a completed Apollo phone or waterfall result by its request ID when the webhook callback was not received. Apollo Poll Webhook Result reference.

Recovering a completed Apollo phone or waterfall result by its request ID when the webhook callback was not received.

<Info>
  Tool ID: `apollo_poll_webhook_result`
</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(
  'apollo_poll_webhook_result',
  {
    "request_id": 123
  },
);

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

### CLI

```bash theme={null}
deepline tools execute apollo_poll_webhook_result --input '{
  "request_id": 123
}' --json
```

## Example response

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

```json theme={null}
{
  "data": {
    "request_id": "request_123",
    "webhook_status": "in_progress",
    "request_type": "email"
  }
}
```

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

## Input reference

## Endpoint essentials **API key access:** `api/v1/webhook_result/show` or `Master API key` **OAuth scopes:** `webhook_result_read` **Credit usage:** `0 credits` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing). Use the Poll Webhook Result endpoint to retrieve webhook results from Apollo. This endpoint enables you to poll for the webhook payload if you didn't receive the original webhook callback. To use this endpoint, you need the request\_id from the People Enrichment or Bulk People Enrichment endpoint. Pass this value as request\_id in this endpoint. This endpoint returns webhook results for your team from up to thirty days after the webhook was triggered. While an enrichment is still processing, this endpoint returns a 404 with error\_code: result\_pending and a retry\_after\_seconds value—wait that many seconds and poll again. Once the result is ready, See the live schema below for the complete notes.

| Name                 | Type      | Required | Default | Details                                                                                                                                                                          |
| -------------------- | --------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload.request_id` | `integer` | Yes      | —       | The request\_id returned when the original enrichment request was submitted. This value is a signed 64-bit integer and can be positive or negative. Example: 1039995589705121900 |

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

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "## Endpoint essentials **API key access:** `api/v1/webhook_result/show` or `Master API key` **OAuth scopes:** `webhook_result_read` **Credit usage:** `0 credits` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing). Use the Poll Webhook Result endpoint to retrieve webhook results from Apollo. This endpoint enables you to poll for the webhook payload if you didn't receive the original webhook callback. To use this endpoint, you need the request_id from the People Enrichment or Bulk People Enrichment endpoint. Pass this value as request_id in this endpoint. This endpoint returns webhook results for your team from up to thirty days after the webhook was triggered. While an enrichment is still processing, this endpoint returns a 404 with error_code: result_pending and a retry_after_seconds value—wait that many seconds and poll again. Once the result is ready, it returns a 200 . Three responses are terminal, so stop polling if you receive any of them: request_id_unknown ( 404 —the request_id is not recognized, usually because it was mistyped or never issued), request_id_expired ( 410 —the result has aged out past the 30-day window, so start a fresh enrichment request), and invalid_request_id ( 400 —the request_id is not a valid signed 64-bit integer).",
    "properties": {
      "request_id": {
        "type": "integer",
        "description": "The request_id returned when the original enrichment request was submitted. This value is a signed 64-bit integer and can be positive or negative. Example: 1039995589705121900"
      }
    },
    "required": [
      "request_id"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name                             | Type                                     | Required | Default | Details                                                                                                                                       |
| -------------------------------- | ---------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `result.data`                    | `object`                                 | Yes      | —       | Provider response payload.                                                                                                                    |
| `result.data.request_id`         | `string`                                 | No       | —       | Echoes the request\_id from the URL.                                                                                                          |
| `result.data.webhook_status`     | `"in_progress" \| "success" \| "failed"` | No       | —       | The current webhook status. Allowed: `in_progress`, `success`, `failed`.                                                                      |
| `result.data.request_type`       | `"email" \| "phone" \| "waterfall"`      | No       | —       | The enrichment request type. Allowed: `email`, `phone`, `waterfall`.                                                                          |
| `result.data.last_dispatched_at` | `string \| null`                         | No       | —       | ISO 8601 UTC timestamp of the last webhook POST attempt. Returns null until Apollo makes the first dispatch attempt.                          |
| `result.data.failure_reason`     | `string \| null`                         | No       | —       | The error message from the last failed dispatch. This field is populated when webhook\_status is failed .                                     |
| `result.data.webhook_result`     | `object \| null`                         | No       | —       | The original webhook payload that Apollo delivered, or would have delivered, to the customer webhook URL. The shape varies by request\_type . |
| `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": {
          "request_id": {
            "type": "string",
            "description": "Echoes the request_id from the URL."
          },
          "webhook_status": {
            "type": "string",
            "description": "The current webhook status.",
            "enum": [
              "in_progress",
              "success",
              "failed"
            ]
          },
          "request_type": {
            "type": "string",
            "description": "The enrichment request type.",
            "enum": [
              "email",
              "phone",
              "waterfall"
            ]
          },
          "last_dispatched_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 UTC timestamp of the last webhook POST attempt. Returns null until Apollo makes the first dispatch attempt."
          },
          "failure_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "The error message from the last failed dispatch. This field is populated when webhook_status is failed ."
          },
          "webhook_result": {
            "type": [
              "object",
              "null"
            ],
            "description": "The original webhook payload that Apollo delivered, or would have delivered, to the customer webhook URL. The shape varies by request_type .",
            "additionalProperties": true
          }
        },
        "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).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Apollo provider guide](/docs/providers/apollo/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)
