---
title: "Cancel a task"
method: POST
path: "/v2/tasks/{taskId}/cancel"
tags: ["Bulk"]
---

# Cancel a task

`POST /v2/tasks/{taskId}/cancel`

## Request

- Base URL: `https://api.reversecontact.com`
- URL: `https://api.reversecontact.com/v2/tasks/{taskId}/cancel`
- Auth: HTTP bearer

Stops a task an API key or an AI assistant started; a task a person started is stopped in the dashboard (403 TASK_STARTED_BY_A_PERSON). Items already in flight may finish and settle; items not started are never charged and read skipped. Final: idempotent on a cancelled task; a task that already ended answers 409 TASK_NOT_CANCELLABLE. Credits: 0.

## Path parameters

- `taskId` string, uuid, required: Task id

## Response `200`

The cancelled task

- object
  - `success` true, required
  - `data` object, required
    - `id` string, uuid, required: Task id
    - `type` 'enrich_persons' | 'list_import' | 'list_enrich' | 'list_search_import' | 'search_export', required: enrich_persons: a Bulk enrich task (POST /v2/bulk, or a file from the dashboard). list_import: Signals or a file imported into a List. list_enrich: data fetched for List members. list_search_import: a Search added to a List. search_export: a Search exported as a file.
    - `entity` 'persons' | 'companies', required
    - `status` 'queued' | 'running' | 'paused' | 'completed' | 'cancelled' | 'failed', required: queued and running still move (read it again, or wait=N); paused waits for someone to resume it; completed, cancelled and failed are final.
    - `source` 'api' | 'mcp' | 'ask' | 'dashboard', nullable, required: Who started it: an API key, an AI assistant (MCP), Ask, or the dashboard. null for a task created before sources were recorded.
    - `taskName` string, required: The file name, or the taskName given at creation
    - `listId` string, uuid, nullable, required: The List a List task works on
    - `progress` object, required
      - `total` integer, required: Items in the task
      - `processed` integer, required: Items done
      - `succeeded` integer, required: Items that delivered
      - `failed` integer, required: Items that did not (not found, invalid, error)
      - `skipped` integer, required: Items not run (duplicates, no usable input, out of credits, cancelled)
      - `remaining` integer, required: Items left
    - `credits` object, required
      - `estimated` integer, required: Credits reserved when the task was created (0 when nothing is reserved up front)
      - `used` integer, nullable, required: Credits spent, once the task has settled them
    - `estimatedSecondsRemaining` integer, nullable, required: Seconds left from the task's recent pace, while it runs; null when unknown
    - `error` object, nullable, required
      - `code` string, required: Why the task failed
    - `createdAt` string, date-time, required: ISO 8601
    - `startedAt` string, date-time, nullable, required: ISO 8601
    - `completedAt` string, date-time, nullable, required: ISO 8601
    - `links` object, required
      - `self` string, required: Reads this task (wait=N holds the request until it settles)
      - `results` string, nullable, required: Its results CSV, set once the task is completed or cancelled (enrich_persons tasks)
      - `operation` string, nullable, required: The List operation it runs as (List tasks)
  - `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`: Invalid JSON body or endpoint-specific business validation
- `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
- `409`: TASK_NOT_CANCELLABLE: the task already ended
- `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.

---

[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)
