---
title: "Import members and data"
method: POST
path: "/v2/lists/{listId}/intake/signals"
tags: ["Lists"]
---

# Import members and data

`POST /v2/lists/{listId}/intake/signals`

## Request

- Base URL: `https://api.reversecontact.com`
- URL: `https://api.reversecontact.com/v2/lists/{listId}/intake/signals`
- Auth: HTTP bearer

Queues up to 25,000 Signals (or a public CSV / Google Sheet URL) as one operation and answers at once with operationId and pollUrl. Each line is identified like an add (saved data unless live: true); with families, the data you ask for (profile, company, contact_email, contact_phone) is then fetched for each member, new or already on the List. Data a member already holds is not bought again. Above 25 credits of worst-case estimate, a request with families needs maxCredits, the most it may spend: the operation stops at that ceiling (stopReason max_credits) and can be resumed with a higher one. With webhookUrl (public HTTPS), that URL receives one POST each time the operation stops moving (completed, stopped, cancelled); the event carries no member data, read the operation at its pollUrl. Lines naming the same identity with the same externalId are deduplicated. Replaying with the same operationId returns the same operation and never charges twice. To stop it, cancel it (operations/{operationId}/cancel): cancelling is final, a new run needs a new operationId.

## Path parameters

- `listId` string, uuid, required: List id

## Request body

- object
  - `signals` object[]
    - `linkedinUrl` string: Person or company Social URL
    - `url` string: Alias of linkedinUrl
    - `email` string: Person email
    - `firstName` string: Person first name (with lastName and a company)
    - `lastName` string: Person last name (with firstName and a company)
    - `companyDomain` string: Company domain: a person hint, or a company
    - `companyName` string: Company name hint for a person
    - `domain` string: Company domain
    - `companyId` string: Company id (com_...), company Lists
    - `externalId` string: Your own identifier for this line (1 to 200 characters, no control characters). Echoed in the line result and kept on the member it names; the first one a member receives is kept. Never used to find the person.
  - `sourceUrl` string, uri: Public CSV or Google Sheet URL (instead of signals)
  - `live` boolean: true fetches Social URL profiles live; omitted or false uses saved data
  - `families` string[]
  - `maxCredits` integer: The most this operation may spend
  - `operationId` string, uuid: Your operation id: replaying it returns the same operation
  - `webhookUrl` string, uri: Public HTTPS URL told when the operation stops moving

## Response `202`

Operation queued

- object
  - `success` true, required
  - `data` object, required
    - `operationId` string, uuid, required: Operation id: read it at pollUrl
    - `pollUrl` string, required: Path that reads the operation (GET, ?wait=N holds it)
    - `totalRows` integer, required: Lines queued after deduplication
    - `duplicateCount` integer, required: Lines dropped as duplicates of an earlier line
    - `task` object: The task record, as GET /v2/tasks/{taskId} reads it
  - `error` unknown, required
  - `quotas` V2Quotas, required
    - `creditsConsumed` number, required: Credits used for this request after pricing resolution
    - `workspace` object, required
      - `id` string, required: Workspace identifier
      - `credits` V2Credits, required
        - `total` number, required: Total credits in your plan
        - `used` number, required: Credits consumed so far
        - `left` number, required: Remaining credits
      - `hasUnlimitedCredits` boolean, required: Whether workspace credits are unlimited
      - `allowDailyOvercost` boolean, required: Whether the workspace may exceed its daily cap (Enterprise only)
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
    - `key` object, nullable, required
      - `id` string, required: API key identifier
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `creditLimits` object, required: Credit limits set on this API key. Each is null when the key has no such limit.
        - `daily` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `monthly` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `total` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
  - `metadata` V2Metadata, required
    - `requestId` string, required: Unique identifier for this request
    - `executionTimeMs` integer, required: Total execution time in milliseconds
    - `updatedAt` string: Last upstream update timestamp (ISO 8601). Present only when available.

## Other responses

- `400`: LIST_INVALID_INPUT (for example maxCredits missing above 25 credits, or an operationId replayed with other Signals) or WEBHOOK_URL_UNREACHABLE
- `401`: Missing or invalid API key or OAuth access token
- `402`: No credits left. Purchase more to continue.
- `403`: Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)
- `404`: Data not found
- `422`: Schema or validation error, unresolved internal id, or disposable email domain
- `429`: Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.
- `451`: Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.
- `503`: BULK_QUEUE_UNAVAILABLE: retry shortly

---

[API](https://skmtc.dev/scrapin/apis/reverse-contact-api.md) - [All operations](https://skmtc.dev/scrapin/apis/reverse-contact-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scrapin/apis/reverse-contact-api/revisions/7d02242af2a9?raw)
