---
title: "Start exhaustive contact details reveal"
method: POST
path: "/v1/contact-details/exhaustive/start"
tags: ["Contact details"]
---

# Start exhaustive contact details reveal

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

## Request

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

Maximum-coverage contact reveal — runs multiple enrichment sources in parallel for the highest yield. This is our SLOWEST endpoint by design: expect to wait roughly 2–3 minutes for results. This is an asynchronous operation — call it to start the task, then poll /contact-details/exhaustive/poll with the returned task ID every 15–30 seconds. Do NOT use this endpoint in time-sensitive flows. If speed matters, use /contact-details/turbo/sync (fastest), /contact-details/single (balanced), or /contact-details/lite (cheapest) instead — exhaustive is for when maximum coverage is worth the wait.

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

<span>💰 <strong>Cost:</strong> Pay only for the data you request (exhaustive mode):<br />• 12 credits for all phone numbers AND all emails<br />• 5 credits for work email only<br />• 5 credits for personal email only<br />• 4 credits for phone only<br />• 9 credits for all emails&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary. Credits are charged upfront for the requested exhaustive bundle. Undelivered data is refunded per operation after the reveal completes, so partial reveals only bill for delivered data.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required: Your Fiber API key
  - `linkedinUrl` string, required: The person's LinkedIn identifier. Accepts a full LinkedIn profile URL (e.g. 'https://www.linkedin.com/in/williamhgates/'), a bare slug (e.g. 'williamhgates'), a Sales Navigator URN (e.g. 'ACwAAA-001MBbIvJon'), or a numeric LinkedIn user ID (e.g. '443105112').
  - `enrichmentType` object: Enrichment types to be requested. Include the ones you want to look for. For example, { getWorkEmails: true, getPersonalEmails: true, getPhoneNumbers: true }
    - `getWorkEmails` boolean
    - `getPersonalEmails` boolean
    - `getPhoneNumbers` boolean

## Response `200`

Default Response

- object
  - `output` object, required
    - `taskId` string, required: Exhaustive contact enrichment will proceed in the background. Call the polling endpoint with this ID to check if it's finished and get the result.
  - `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
- `410`: Default Response
- `422`: Default Response
- `429`: Default Response
- `500`: Default Response
- `503`: Default Response

## Changes

- **2026-10-27** `a15af2897f6b`: 1 info
  - added the non-success response with the status `410`
- **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`: 2 info
  - added the non-success response with the status `422`
  - 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/start/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)
