# Tasks

Create and manage outreach tasks such as sending LinkedIn messages or emails. Tasks can be created manually or generated by automations.

**Task types:** `linkedin_send_message`, `linkedin_send_connection_request`, `linkedin_send_inmail`, `linkedin_like_latest_post`, `linkedin_endorse_skills`, `email_send_message`, `trigger_linkedin_connection_request_accepted`.

**Task statuses:** `in_progress`, `closed`, `canceled`, `failed`, `skipped`.


## List tasks

 - [GET /flows/api/tasks](https://api.grinfi.io/openapi/tasks/listtasks.md): Retrieve outreach tasks. Tasks are the individual actions an automation executes (or that you create manually) — one task per contact per step.

All filters use the filter[...] form (URL-encode the brackets: filter%5Btype%5D=...). Flat query params such as ?type= or ?flow_uuid= are silently ignored and return unfiltered results — always use filter[...].

Counting without paging: the response total is the count of matching tasks, so send limit=1 and read total instead of paging through results.

Reporting on what was actually sent: filter on status=closed (executed) and the executed_at date — not schedule_at, which is often null. Date ranges use comparison operators inside the field, e.g. filterexecuted_at=2026-07-22&filterexecuted_at=2026-07-23.

Performance: always narrow by filter[flow_uuid] (or another selective field) for reporting queries. Unnarrowed queries over large task volumes can time out with a 504.

Example — connection requests sent by one automation on a given day:
 GET /flows/api/tasks?limit=1
  &filter[flow_uuid]=f97f182b-06bb-415c-b92e-0f38f85a2048
  &filter[type]=linkedin_send_connection_request
  &filter[status]=closed
  &filterexecuted_at=2026-07-22
  &filterexecuted_at=2026-07-23

## Create a task

 - [POST /flows/api/tasks](https://api.grinfi.io/openapi/tasks/createtask.md): Create a manual outreach task. Common types: linkedin_send_message, linkedin_send_connection_request, linkedin_send_inmail, linkedin_like_latest_post, linkedin_endorse_skills.

## Get a task

 - [GET /flows/api/tasks/{uuid}](https://api.grinfi.io/openapi/tasks/gettask.md): Retrieve details of a specific task.

## Complete a task

 - [PUT /flows/api/tasks/{uuid}/complete](https://api.grinfi.io/openapi/tasks/completetask.md): Mark a manual task as completed. Only works for manual tasks.

## Cancel a task

 - [PUT /flows/api/tasks/{uuid}/cancel](https://api.grinfi.io/openapi/tasks/canceltask.md): Cancel a manual task. Only works for manual tasks.

## Mark a task as failed

 - [PUT /flows/api/tasks/{uuid}/fail](https://api.grinfi.io/openapi/tasks/failtask.md): Mark a manual task as failed. Only works for manual tasks.

## Continue automation for a contact

 - [PUT /flows/api/tasks/continue-automation](https://api.grinfi.io/openapi/tasks/continueautomation.md): Resume a paused automation for a specific contact. The contact will continue from where they were paused in the automation sequence.

## Get tasks schedule

 - [GET /flows/api/tasks/schedule](https://api.grinfi.io/openapi/tasks/gettasksschedule.md): Get the tasks schedule for a specific sender profile on a given date. Returns the timeline of scheduled tasks.

## Mass cancel tasks

 - [PUT /flows/api/tasks/mass-cancel](https://api.grinfi.io/openapi/tasks/masscanceltasks.md): Cancel multiple manual tasks at once. Only works for manual tasks.

## Mass complete tasks

 - [PUT /flows/api/tasks/mass-complete](https://api.grinfi.io/openapi/tasks/masscompletetasks.md): Mark multiple manual tasks as completed at once.

## Mass retry tasks

 - [PUT /flows/api/tasks/mass-retry](https://api.grinfi.io/openapi/tasks/massretrytasks.md): Retry multiple failed manual tasks at once.

## Mass skip tasks

 - [PUT /flows/api/tasks/mass-skip](https://api.grinfi.io/openapi/tasks/massskiptasks.md): Skip multiple manual tasks at once.

