Skip to main content
GET
List the approval queue

Authorizations

X-API-Key
string
header
required

Query Parameters

ask_reason
enum<string>[] | null

Only tasks held for a person for one of these reasons (repeatable): the Tasks page's Why it needs approval. Omit for every reason.

Why a message that could have sent unattended was put in front of a person.

One vocabulary for every gate between an agent writing a message and the message leaving: what the agent itself said about the draft (LOW_CONFIDENCE, FINDINGS, INSUFFICIENT_DATA, POLICY), what the sender or the cadence asked for (ALWAYS_ASK, SEQUENCE_MANUAL, STEP_REQUIRES_APPROVAL), what the pacing rules refused (DAILY_CAP, CONSECUTIVE_CAP, THREAD_CAP, HOURLY_CAP, ORG_DAILY_CAP), what the mailbox or the thread made unsafe (UNVERIFIED_SENDER, DIFFERENT_SENDER, LABEL, QUESTION, STALE_INBOUND, SEQUENCE_GONE), and what the counterparty turned out to be (BOT_QUESTION, AUTOMATED_COUNTERPARTY, AUTHENTICATION, LANGUAGE, LINKEDIN_ONLY). KILL_SWITCH is the platform switch that stops unattended sending outright, and SEND_INTERRUPTED an unattended reply whose send never got as far as a provider. SENDER_SWITCHED_TO_MANUAL is a LinkedIn step queued unasked that went back to a person because its sender switched to manual before it ran.

Stored on the task so the queue can say why each row is there, and so "why did nothing send" is answerable by counting rows rather than by reading logs.

Available options:
low_confidence,
findings,
insufficient_data,
policy,
always_ask,
sequence_manual,
step_requires_approval,
daily_cap,
unverified_sender,
suppressed,
different_sender,
label,
question,
consecutive_cap,
thread_cap,
hourly_cap,
org_daily_cap,
stale_inbound,
sequence_gone,
bot_question,
automated_counterparty,
kill_switch,
authentication,
language,
linkedin_only,
send_interrupted,
sender_switched_to_manual
background_checks
enum<string>
default:hide

Our own LinkedIn reads of the sender's account (the inbox, sent connection requests, new connections, one conversation): approved by nobody, acting on nobody, so left out by default (hide); include lists them with the rest, only alone. Activity lists the ones that ran.

Available options:
hide,
include,
only
channel
enum<string>[] | null

Only these channels; omit for every channel.

Which channel performs the task once it is allowed to run.

Available options:
linkedin,
email
enrolment_id
string<uuid>[] | null

Only the tasks of these contacts, by their enrolment in a sequence; omit for everyone.

kind
string[] | null

Only these kinds: a LinkedIn action slug (profile_view, connection_request, …) or email. Omit for every kind.

outcome
string[] | null

Only tasks that ended with one of these words (repeatable): failed, skipped, stopped, succeeded and the like. The tasks that failed are status=cancelled with outcome=failed. Omit for however they ended.

Required string length: 1 - 32
rewrites
enum<string>
default:hide

The tasks the agent is writing again after a Needs work, or another version. Meanwhile each reads status cancelled, outcome regenerated, and progress.state writing (or why the write waits), and the same task comes back pending with the new words. By default (hide) they are listed only where status asks for cancelled; include lists them in their place among the statuses asked for, only alone, whatever status says. Every other filter still applies. A task whose rewrite ended, its contact stopped or moved on, is not one of them, nor is one nobody can act on: paused, held (the sending window, a sender with no mailbox or LinkedIn account) or failed past a retry. It comes back when the engine asks again with the new words.

Available options:
hide,
include,
only
search
string | null

Words that must each appear in the contact's name, address or LinkedIn profile, or in the subject.

Maximum string length: 255
sender_profile_id
string<uuid>[] | null

Only these senders; omit for everyone.

sequence_id
string<uuid>[] | null

Only these sequences; omit for all of them.

status
enum<string>[]

Only these statuses; repeat the parameter for several. Defaults to pending.

Where one task stands.

PENDING is waiting on a person. SCHEDULED is approved, or never needed approval, and is waiting on the channel to execute it: the browser to run the LinkedIn step, the engine to send the email. The task is where a LinkedIn step's approval lives: while it is PENDING no step exists, and the step is queued only once it is SCHEDULED. A LinkedIn task nobody is asked about (a sender on automatic, a housekeeping read, a Try click) is BORN scheduled, pointing at the step it queued. Who approved it is a stamp on the row, not a status of its own.

DONE, REJECTED and CANCELLED are terminal. DONE is the channel executed it; REJECTED is a person refused it; CANCELLED is the channel gave up on it (failed, skipped, expired), or the contact was stopped underneath it.

Available options:
pending,
scheduled,
done,
rejected,
cancelled
waiting_since_before
string<date-time> | null

Only tasks that entered the queue before this instant, which is 'waiting longer than'. Read off when the task was created, not when its channel would run it. Omit for however long they have been here.

limit
integer
default:10

The number of items to return.

Required range: 1 <= x <= 100
order_by
enum<string>
default:created_at
Available options:
created_at,
contact_label
order_direction
enum<string>
default:desc
Available options:
asc,
desc
cursor
string | null

Set the cursor to the next or previous page. You can get the cursor from the previous page's response.

Response

Successful Response

data
OutreachTaskReadSchema · object[]

The list of ResponseItems.

next_page_cursor
string | null

The cursor to the next page. If there are no more pages, this is None.

previous_page_cursor
string | null

The cursor to the previous page. If there are no previous pages, this is None.