Skip to main content
GET
Count the approval queue

Authorizations

X-API-Key
string
header
required

Query Parameters

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
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
kind
string[] | null

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

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.

enrolment_id
string<uuid>[] | null

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

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.

outcome
string[] | null

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

Required string length: 1 - 32
ask_reason
enum<string>[] | null

Only tasks held for a person for one of these reasons (repeatable): the Tasks page's Held because. 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
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

Response

Successful Response

How many tasks the queue's filters select, and why they wait: the footer and Held because.

ask_reasons
enum<string>[]
required

Why the tasks every other filter selects are held for a person, the reasons Held because can narrow them to: ask_reason itself is left out of this read, so picking one never hides the others. Empty when none of them carries a 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
count
integer
required

How many tasks match the filters.