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

# Find emails and phones for up to 100 people

> Find emails and/or phones for up to 100 people in one background job. Each row is charged like the single lookups, only for the values found, at the plan's `people_email` and `people_phone` prices; nothing is saved to your Fuse workspace.

Send `people` (each a `linkedinUrl`, or a `name` with a `companyName` or `companyDomain`) and `find` (`email`, `phone` or both). The balance must cover a value of every kind asked on every row, or the job is refused with 402 before anything runs. The answer is 202 with a `jobId`: poll GET /data/people/enrich-jobs/{jobId} every few seconds for progress and rows. Send an `X-Idempotency-Key` header: the same request with the same key answers the job it started instead of starting, and charging, another; and if starting answered 500, the same request with the same key queues the job it recorded. A job of 100 people takes a few minutes; a job that runs out of credits stops with `stoppedReason` `INSUFFICIENT_CREDITS`, keeping the rows it finished. A job's lookups only use what live requests leave of each provider's capacity, so a job can take longer when providers are busy: a person no busy provider could be asked about yet is tried again every minute, for up to 15 minutes from the job's start, and then answered `not_found`. Jobs are kept for 7 days.

Only keys whose usage plan includes `people_enrich_jobs`, and `people_email` or `people_phone` for what `find` asks, may call it. Rate limit: the plan's `people_enrich_jobs` entry, per job started.

Errors:
- `402` `INSUFFICIENT_CREDITS` — The balance cannot cover a value of every kind asked on every row; nothing was started.
- `403` `API_NOT_ON_PLAN` — The key's usage plan does not include `people_enrich_jobs`, or a kind `find` asks for.
- `429` `RATE_LIMITED` — The plan's limit for starting jobs is spent.

Requires one of the following token scopes: data.



## OpenAPI

````yaml /openapi.json post /business/data/people/enrich-jobs
openapi: 3.1.0
info:
  title: Fuse Business API
  version: 1.0.0
  description: >-
    External API for lists, campaigns, prospect search and contacts.
    Authenticate with your API token as HTTP Basic. All paths are under /api/v1.
servers:
  - url: https://api.tryfuse.ai/api/v1
    description: Production
security:
  - basicAuth: []
tags:
  - name: Lists
  - name: Custom columns
  - name: Smart columns
  - name: Exports
  - name: Campaigns
  - name: Knowledge hubs
  - name: Analytics
  - name: Website intent
  - name: Account
  - name: Data
  - name: Prospect search
  - name: Campaign steps
  - name: Scheduled sends
  - name: Campaign templates
  - name: Agents
  - name: Research
  - name: Company search
  - name: Saved searches
  - name: Folders
  - name: Contacts
paths:
  /business/data/people/enrich-jobs:
    post:
      tags:
        - Data
      summary: Find emails and phones for up to 100 people
      description: >-
        Find emails and/or phones for up to 100 people in one background job.
        Each row is charged like the single lookups, only for the values found,
        at the plan's `people_email` and `people_phone` prices; nothing is saved
        to your Fuse workspace.


        Send `people` (each a `linkedinUrl`, or a `name` with a `companyName` or
        `companyDomain`) and `find` (`email`, `phone` or both). The balance must
        cover a value of every kind asked on every row, or the job is refused
        with 402 before anything runs. The answer is 202 with a `jobId`: poll
        GET /data/people/enrich-jobs/{jobId} every few seconds for progress and
        rows. Send an `X-Idempotency-Key` header: the same request with the same
        key answers the job it started instead of starting, and charging,
        another; and if starting answered 500, the same request with the same
        key queues the job it recorded. A job of 100 people takes a few minutes;
        a job that runs out of credits stops with `stoppedReason`
        `INSUFFICIENT_CREDITS`, keeping the rows it finished. A job's lookups
        only use what live requests leave of each provider's capacity, so a job
        can take longer when providers are busy: a person no busy provider could
        be asked about yet is tried again every minute, for up to 15 minutes
        from the job's start, and then answered `not_found`. Jobs are kept for 7
        days.


        Only keys whose usage plan includes `people_enrich_jobs`, and
        `people_email` or `people_phone` for what `find` asks, may call it. Rate
        limit: the plan's `people_enrich_jobs` entry, per job started.


        Errors:

        - `402` `INSUFFICIENT_CREDITS` — The balance cannot cover a value of
        every kind asked on every row; nothing was started.

        - `403` `API_NOT_ON_PLAN` — The key's usage plan does not include
        `people_enrich_jobs`, or a kind `find` asks for.

        - `429` `RATE_LIMITED` — The plan's limit for starting jobs is spent.


        Requires one of the following token scopes: data.
      operationId: startPeopleEnrichJob
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                people:
                  type: array
                  items:
                    type: object
                    properties:
                      linkedinUrl:
                        type: string
                        minLength: 1
                        maxLength: 2048
                        description: >-
                          The person's LinkedIn profile, e.g.
                          `https://www.linkedin.com/in/jane-doe`: the most
                          precise way to name them.
                      name:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: >-
                          The person's full name, e.g. `Jane Doe`, with
                          `companyName` or `companyDomain` when no `linkedinUrl`
                          is sent.
                      companyName:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: The person's current employer, e.g. `Stripe`.
                      companyDomain:
                        type: string
                        minLength: 1
                        maxLength: 253
                        description: >-
                          The employer's website domain, e.g. `stripe.com`: more
                          precise than `companyName`.
                  minItems: 1
                  maxItems: 100
                  description: >-
                    The people to enrich, 1 to 100, each a `linkedinUrl` or a
                    `name` with a `companyName` or `companyDomain`. Results come
                    back in the same order.
                find:
                  type: array
                  items:
                    type: string
                    enum:
                      - email
                      - phone
                  minItems: 1
                  description: 'What to find for each person: `email`, `phone` or both.'
              required:
                - people
                - find
      responses:
        '202':
          description: Success
          headers:
            RateLimit-Limit:
              schema:
                type: integer
              description: Requests permitted in the current window.
            RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            RateLimit-Reset:
              schema:
                type: integer
              description: Seconds until the current window resets.
          content:
            application/json:
              schema:
                type: object
                required:
                  - jobId
                  - status
                properties:
                  jobId:
                    type: string
                  status:
                    type: string
                    enum:
                      - pending
              example:
                jobId: 6a1f2c3d4e5f6a7b8c9d0e1f
                status: pending
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - basicAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            param:
              type:
                - string
                - 'null'
            doc_url:
              type:
                - string
                - 'null'
            request_id:
              type:
                - string
                - 'null'
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Your API token (`af_…`) as the Basic-auth username, with an empty
        password.

````

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