Get manual tasks
Use this endpoint to retrieve a list of all manual tasks in the authorized account.
Request
Endpoint
GET https://api.woodpecker.co/rest/v2/manual_tasks
Headers
x-api-key: {YOUR_API_KEY}
For details on how to authenticate your requests, please see the authentication guide.
Parameters
Parameter | Required | Description |
---|---|---|
limit | No | Number of retrieved results. Default: 500, max: 500 |
Request sample
GET manual tasks
- cURL
- Python
- Java
- Node.js
curl --request GET \
--url "https://api.woodpecker.co/rest/v2/manual_tasks?limit=100" \
--header "x-api-key: {YOUR_API_KEY}"
import requests
def getManualTasks():
url = "https://api.woodpecker.co/rest/v2/manual_tasks?limit=100"
headers = {
"x-api-key": "{YOUR_API_KEY}"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("GET successful:", response.json())
else:
print("GET failed with status:", response.status_code)
if __name__ == "__main__":
getManualTasks()
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class WoodpeckerApiClient {
private static final String API_KEY = "{YOUR_API_KEY}";
public static void main(String[] args) {
getManualTasks();
}
public static void getManualTasks() {
try {
String url = "https://api.woodpecker.co/rest/v2/manual_tasks?limit=100";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(url))
.header("x-api-key", API_KEY)
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("GET response: " + response.body());
} else {
System.err.println("GET request failed: " + response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
const axios = require("axios");
async function getManualTasks() {
const url = "https://api.woodpecker.co/rest/v2/manual_tasks?limit=100";
const headers = {
"x-api-key": "{YOUR_API_KEY}"
};
try {
const response = await axios.get(url, { headers: headers });
if (response.status === 200) {
console.log("GET successful:", response.data);
} else {
console.error("GET failed with status:", response.status);
}
} catch (error) {
console.error("Request error:", error.response?.status || error.message);
}
}
getManualTasks();
Response
Response examples
- 200
- 200 (no tasks)
- 400
- 401
- 404
- 500
[
{
"prospect": {
"id": 123456789,
"email": "erlich@bachman.com",
"first_name": "Erlich",
"last_name": "Bachman",
"company": null,
"website": "https://www.bachmanity.com/",
"linkedin_url": "https://www.linkedin.com/in/erlich-bachman/",
"tags": "#VISIONARY",
"title": "VC Angel",
"phone": "",
"address": "221 Newell Rd",
"city": "Palo Alto",
"country": "USA",
"snippet1": "Pied Piper board member",
"snippet2": "A personalized sentence <br/> in two lines",
"snippet3": "",
"snippet4": "",
"snippet5": "",
"snippet6": "",
"snippet7": "",
"snippet8": "",
"snippet9": "",
"snippet10": "",
"snippet11": "",
"snippet12": "",
"snippet13": "",
"snippet14": "",
"snippet15": "",
"snippet_labels": {
"My snippet label": "Pied Piper board member"
},
"industry": "Software as a Service",
"state": "",
"last_contacted": 1735056455867,
"status": "ACTIVE",
"in_campaign": 2,
"emails_sent": 3,
"imported": "mydatabase.csv",
"interested": null
},
"campaign": {
"campaign_id": 987654,
"campaign_name": "Campaign with tasks",
"sent_from_emails": ["jared@piedpiper.com"]
},
"task": {
"type": "GENERIC",
"name": "Reminder",
"message": "Send a postcard",
"due_date": "2025-05-06T12:59:30.814+0200"
}
}
]
Body schema
Field | Type | Description |
---|---|---|
prospect | object | Contains prospect data |
└─ id | integer | Unique identifier for the prospect |
└─ email | string | Prospect's email address |
└─ first_name | string | Prospect's first name |
└─ last_name | string | Prospect's last name |
└─ company | null | deprecated |
└─ website | string | Prospect's website URL |
└─ linkedin_url | string | Prospect's LinkedIn profile URL |
└─ tags | string | Tags associated with the prospect. Tags start with a # and are separated with a space |
└─ title | string | Prospect's job title |
└─ phone | string | Prospect's phone number |
└─ address | string | Prospect's address |
└─ city | string | Prospect's city |
└─ country | string | Prospect's country |
└─ snippet | string | Prospect custom snippets. There are 15 snippet fields (snippet1 to snippet15 ) |
└─ snippet_labels | object | Custom snippet labels |
└─└─ label_name | string | Key - value pairs representing a snippet label and its value |
└─ industry | string | Prospect's industry |
└─ state | string | Prospect's state or region |
└─ last_contacted | integer | Timestamp (ms) of the last contact date |
└─ status | string | Prospect global status |
└─ in_campaign | integer | Number of campaigns the prospect is in |
└─ emails_sent | integer | Number of emails sent to the prospect |
└─ imported | string | Name of the import file |
└─ interested | string/null | Prospect's interest status |
campaign | object | Contains campaign data |
└─ campaign_id | integer | Unique identifier for the campaign |
└─ campaign_name | string | Name of the campaign |
└─ sent_from_emails | array[string] | List of sender email addresses |
task | object | Contains task data |
└─ type | string | Task type. Available types: GENERIC , CALL , SMS , LINKEDIN |
└─ name | string | Task name |
└─ message | string | Task message or description |
└─ due_date | string | Task due date in ISO 8601 format |
{
"message": "There are no manual tasks created in your campaigns."
}
Invalid request parameters or malformed request syntax.
{
"title": "Bad Request",
"status": 400,
"detail": "Value of limit is incorrect.",
"timestamp": "2025-02-20 10:01:16"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
An issue with authorization. Please review the authorization guide
{
"title": "Unauthorized",
"status": 401,
"detail": "Invalid api key",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
Please review the request URL.
{
"title": "Not Found",
"status": 404,
"detail": "Requested resource does not exist",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
Unknown error, please try again later
{
"title": "Internal server error",
"status": 500,
"detail": "An unexpected error has occurred. Please try again later.",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |