---
title: "Reject every ticked task"
method: POST
path: "/outreach-tasks/bulk/reject/"
tags: ["outreach"]
---

# Reject every ticked task

`POST /outreach-tasks/bulk/reject/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/outreach-tasks/bulk/reject/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The queue's bulk reject, over the rows a person ticked. A reason, when one is given, covers the batch and is kept on every row it settled as its note; the Tasks page sends none. A bulk rejection teaches the agent nothing: only a single rejection is the person's Needs work on the agent's words. As with a single rejection this is a judgement about the contact, not the step: the engine stops each of them when it next sweeps. Rows that are no longer waiting on a person are skipped.

## Request body

- BulkRejectSchema: The ticked rows and the one reason that settles every one of them.
  - `reason` string, nullable: Why they were refused, kept on every task it settled as its note. A bulk rejection teaches the agent nothing; the Tasks page sends no reason with one.
  - `task_ids` string[], required

## Response `200`

Successful Response

- BulkDecisionResponseSchema: What the batch actually did, so the page can say so in one sentence.
  - `decided` integer, required: How many rows the decision applied to.
  - `schedule` OutreachApprovalScheduleReadSchema: When the work an approval just let go is expected to run, per channel.
    - `email_count` integer, required: How many approved emails the engine now sends.
    - `email_held` integer: How many of the approved emails wait for their paused sequence to be resumed. They go out after Resume sequence, not before.
    - `email_starts_at` string, date-time, nullable, required: When the approved emails start, if every one of their running sequences' sending windows is closed now: the earliest opening. Null when they go now, or when every one of them waits for a paused sequence.
    - `linkedin` LinkedInApprovalScheduleReadSchema[], required: One entry per sender whose LinkedIn steps were approved.
      - `account_id` string, uuid, required
      - `after_reset` integer, required: How many wait for that reset or later.
      - `before_reset` integer, required: How many are expected to start before the next daily reset (midnight in the sender's timezone).
      - `blocked` 'browser_offline' | 'account_blocked' | 'weekly_limit' | 'kind_disabled' | 'outside_window', required: The one thing that stops a batch of approved steps from running as scheduled.
      - `count` integer, required: How many of the approved steps are this sender's.
      - `first_at` string, date-time, nullable, required: When the first of them starts; null when no time can be named.
      - `held` integer: How many of them wait for their paused sequence or paused contact to be resumed. They are in no line until then, and the counts and times above leave them out.
      - `last_at_estimate` string, date-time, nullable, required: When the last of them is expected to start; null when it cannot be named.
      - `opens_at` string, date-time, nullable: When the sending hours the first of them waits for open; null when none wait for them.
      - `outside_window` integer: How many of them wait for their sequence's sending hours, shut now in the sender's timezone.
      - `resets_at` string, date-time, nullable, required: The daily reset those wait for; null when none do.
      - `sender_name` string, required: The sender as the Senders page names them.
      - `sender_profile_id` string, uuid, required
  - `skipped` integer, required: How many had already moved on (settled, decided by somebody else, or a task nobody approves), and how many LinkedIn steps LinkedIn could not take now (the sender is not connected), which still wait. Not an error: a selection goes stale while it is read.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
