---
title: "A pending lookup finished"
method: POST
path: "lookup.completed"
---

# A pending lookup finished

`POST lookup.completed` (webhook)

Sent to the endpoint named in the lookup's `webhook_endpoint_id` when a lookup that answered `pending` has finished. `data.summary.total` counts rows; `registered`, `not_registered` and `unknown` count checks. Test keys send the same shape with `livemode: false`. Fetch the rows with GET /v1/lookups/{id}. Every delivery carries the headers `webhook-id` (event id, same across retries), `webhook-timestamp` (Unix seconds) and `webhook-signature` (`v1,<base64 HMAC-SHA256 of "{id}.{timestamp}.{raw body}">`, key = base64-decoded part of the secret after `whsec_`). Answer 2xx within 10 seconds; failed deliveries are retried for 24 hours.

## Payload

- LookupWebhookEvent: Every webhook body has this envelope. `id` is the event id (also the webhook-id header); use it to deduplicate retries.
  - `type` string, required
  - `id` string, required
  - `created_at` string, date-time, required
  - `data` object, required: The object the event is about (never phone numbers or e-mail addresses).
    - `object` 'lookup', required
    - `id` string, required
    - `status` 'completed', required
    - `livemode` boolean, required
    - `summary` object, required
      - `total` integer, required: Rows (numbers and e-mails).
      - `registered` integer, required: Conclusive checks answering yes / data found.
      - `not_registered` integer, required: Conclusive checks answering no.
      - `unknown` integer, required: Checks that ended unknown, failed or unsupported_country (not billed).

## Acknowledgement `200`

Any 2xx acknowledges the event.

---

[API](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api.md) · [All operations](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mobilevalidate/apis/mobilevalidate-api/revisions/f2e56c2454ef?raw)
