---
title: "Poll exhaustive contact details reveal result"
method: POST
path: "/v1/contact-details/exhaustive/poll"
tags: ["Contact details"]
---

# Poll exhaustive contact details reveal result

`POST /v1/contact-details/exhaustive/poll`

## Request

- Base URL: `https://api.fiber.ai`
- URL: `https://api.fiber.ai/v1/contact-details/exhaustive/poll`
- Auth: none declared

Polls the status of an exhaustive contact reveal task. Pass the task ID returned by /contact-details/exhaustive/start. Exhaustive reveal is our slowest, maximum-coverage endpoint — expect the full run to take roughly 2–3 minutes (most tasks finish sooner). Poll every 15–30 seconds until done is true. If you need fast results, use /contact-details/turbo/sync, /contact-details/single, or /contact-details/lite instead. Returns the current status and, once complete, the full set of discovered emails and phone numbers. Includes both high-quality emails and low-quality emails (risky/undeliverable). Low-quality emails failed our internal validation checks and should be filtered out before use, but are included for transparency.

<span>⚡ <strong>Rate limit:</strong> 240 requests per 1 minute</span>

## Request body

- object
  - `apiKey` string, required: Your Fiber API key
  - `taskId` string, required: Task ID from the "start exhaustive contact enrichment" endpoint

## Response `200`

Default Response

- object
  - `output` object, required
    - `profile` object, required
      - `emails` object[], required
        - `email` string, required
        - `type` 'work' | 'personal' | 'other' | 'unknown' | 'generic', required
        - `status` 'valid' | 'risky' | 'unknown' | 'invalid'
      - `phoneNumbers` object[], required
        - `number` string, required
        - `type` 'mobile' | 'other' | 'unknown', required
      - `status` 'started' | 'live-enriching' | 'grabbing-contact-info' | 'completed' | 'failed', required
      - `error` string
      - `exhaustive` boolean, nullable
      - `lowQualityEmails` object[], nullable: Emails that failed internal validation checks (risky or undeliverable). These are included for transparency but should be filtered out before use.
        - `email` string, required
        - `type` 'work' | 'personal' | 'other' | 'unknown' | 'generic', required
        - `status` 'valid' | 'risky' | 'unknown' | 'invalid'
      - `foundOtherTypes` object, nullable: Counts of contact details discovered but not returned because they were not part of the requested enrichmentType set. Only present when at least one unrequested type was found; request the corresponding enrichment types and run the task again to receive them.
        - `workEmails` integer, required
        - `personalEmails` integer, required
        - `phoneNumbers` integer, required
    - `done` boolean, required: Whether the enrichment is completed or not.
  - `chargeInfo` union, required
    - object: Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable: Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required: URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required: Human-readable credits warning.
        - `availableCredits` number, required: Number of credits remaining in the current billing period.
    - object: Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable: Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required: URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required: Human-readable credits warning.
        - `availableCredits` number, required: Number of credits remaining in the current billing period.
    - object: Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable: Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required: URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required: Human-readable credits warning.
        - `availableCredits` number, required: Number of credits remaining in the current billing period.
    - object: No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable: Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required: URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required: Human-readable credits warning.
        - `availableCredits` number, required: Number of credits remaining in the current billing period.
    - object: Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable: Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required: URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required: Human-readable credits warning.
        - `availableCredits` number, required: Number of credits remaining in the current billing period.
  - `warnings` object[], nullable: Warnings about extraneous fields in request
    - `field` string, required: Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required: Warning message
  - `advice` string[], nullable: Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400`: Default Response
- `401`: Default Response
- `402`: Default Response
- `403`: Default Response
- `404`: Default Response
- `422`: Default Response
- `429`: Default Response
- `500`: Default Response
- `503`: Default Response

## Changes

- **2026-10-07** `7f6ae6cff8b1`: 1 info
  - added the optional property `output/profile/foundOtherTypes` to the response with the `200` status
- **2026-07-31** `4002aa81d4fb`: 2 breaking, 1 info
  - the response property `advice` became nullable for the status `200`
  - the response property `advice` became optional for the status `200`
  - the `advice` response's property default value `` was removed for the status `200`
- **2026-07-13** `f14ac2efab0c`: 3 info
  - added the non-success response with the status `422`
  - added the optional property `output/profile/lowQualityEmails` to the response with the `200` status
  - added the required property `advice` to the response with the `200` status

[Operation history](https://skmtc.dev/fiber/apis/fiber-ai-api/changes/v1/contact-details/exhaustive/poll/post.md)

---

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