Get enrichment status
Use this endpoint to check the status of an enrichment job started by enrichment of collected profiles. Pass the action_uid returned by that request to retrieve the current processing state and its result summary.
Request
Use the action_uid returned when you enqueue the enrichment.
Endpoint
GET https://api.woodpecker.co/rest/v2/linkedin/post_profiles_collectors/enrichment_actions/{action_uid}
Headers
x-api-key: {YOUR_API_KEY}
For details on how to authenticate your requests, please see the authentication guide.
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
action_uid | Yes | string | Enrichment action UUID returned by enrich collected profiles |
Request samples
Retrieve an enrichment action
- cURL
- Python
- Java
- Node.js
- PHP
curl --request GET \
--url "https://api.woodpecker.co/rest/v2/linkedin/post_profiles_collectors/enrichment_actions/89cb9618-945f-40f2-a147-86fd508933c2" \
--header "x-api-key: {YOUR_API_KEY}"
import requests
def get_post_profile_enrichment_status(action_uid):
url = f"https://api.woodpecker.co/rest/v2/linkedin/post_profiles_collectors/enrichment_actions/{action_uid}"
headers = {
"x-api-key": "{YOUR_API_KEY}"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
raise Exception(f"GET request failed: {response.status_code}, {response.text}")
if __name__ == "__main__":
try:
print(
"GET response:",
get_post_profile_enrichment_status("89cb9618-945f-40f2-a147-86fd508933c2")
)
except Exception as error:
print("Error:", error)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class WoodpeckerApiClient {
public static void main(String[] args) {
getPostProfileEnrichmentStatus("89cb9618-945f-40f2-a147-86fd508933c2");
}
private static void getPostProfileEnrichmentStatus(String actionUid) {
try {
String url = "https://api.woodpecker.co/rest/v2/linkedin/post_profiles_collectors/enrichment_actions/"
+ actionUid;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(url))
.header("x-api-key", "{YOUR_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 {
throw new RuntimeException(
"GET request failed: " + response.statusCode() + ", " + response.body()
);
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
const axios = require("axios");
async function getPostProfileEnrichmentStatus(actionUid) {
const url = `https://api.woodpecker.co/rest/v2/linkedin/post_profiles_collectors/enrichment_actions/${actionUid}`;
const headers = {
"x-api-key": "{YOUR_API_KEY}"
};
try {
const response = await axios.get(url, { headers });
console.log("GET response:", response.data);
} catch (error) {
console.error(
"GET request failed:",
error.response ? error.response.status : error.message
);
}
}
getPostProfileEnrichmentStatus("89cb9618-945f-40f2-a147-86fd508933c2");
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
$client = new Client([
'base_uri' => 'https://api.woodpecker.co/rest/v2/',
'headers' => [
'x-api-key' => getenv('WOODPECKER_API_KEY'),
],
]);
$actionUid = '89cb9618-945f-40f2-a147-86fd508933c2';
try {
$response = $client->get(
'linkedin/post_profiles_collectors/enrichment_actions/' . $actionUid
);
echo $response->getStatusCode(), "\n";
echo $response->getBody(), "\n";
} catch (RequestException $e) {
echo "Error: ", $e->getMessage(), "\n";
if ($e->hasResponse()) {
echo $e->getResponse()->getBody(), "\n";
}
}
Response
Response examples
- 200
- 400
- 401
- 404
- 500
The enrichment action status and its current progress.
{
"action_uid": "89cb9618-945f-40f2-a147-86fd508933c2",
"status": "completed",
"processed": 15,
"total": 15,
"percentage": 100,
"cancel_requested": false,
"submitted_at": "2026-08-20T16:06:41+02:00",
"started_at": "2026-08-20T16:06:42+02:00",
"finished_at": "2026-08-20T16:07:15+02:00",
"error_code": null,
"result": {
"total_rows": 15,
"failed_rows": 1,
"completed_rows": 14,
"processed_rows": 15,
"failed_row_samples": [
{
"code": "NOT_ENRICHED",
"row_id": "b3a4b3a4-0199-4cf7-a3d6-8bf9f55cf905",
"message": "Lead finder did not enrich this row"
}
],
"error_summary_by_code": {
"NOT_ENRICHED": 1
}
}
}
Body schema
| Field | Type | Description |
|---|---|---|
action_uid | string | Enrichment action UUID |
status | string | Action status:
|
processed | integer | Number of list rows processed so far |
total | integer | Total number of list rows to be processed |
percentage | integer | Processing progress as a percentage |
cancel_requested | boolean | Whether cancellation was requested for the action |
submitted_at | string | Submission time in ISO 8601 format, including an offset |
started_at | string | Start time in ISO 8601 format, including an offset; omitted until processing starts |
finished_at | string | Finish time in ISO 8601 format, including an offset; omitted until processing finishes |
error_code | string/null | Action-level error code |
result | object | Processing summary |
└─ total_rows | integer | Total number of rows included in the result |
└─ failed_rows | integer | Number of rows that could not be enriched |
└─ completed_rows | integer | Number of rows processed successfully |
└─ processed_rows | integer | Total number of processed rows |
└─ failed_row_samples | array[object] | Sample errors for rows that could not be enriched; empty when there are no failed samples |
└─ code | string | Row error code, such as NOT_ENRICHED |
└─ row_id | string | UUID of the affected list row |
└─ message | string | Human-readable row error details |
└─ error_summary_by_code | object | Number of failed rows grouped by error code; empty when there are no errors |
action_uid is not a valid UUID.
{
"type": "validation_error",
"code": "invalid_fields",
"message": "Invalid field(s)",
"request_id": "3a1ada93-b420-4373-8c23-92f48a326b10",
"fields": [
{
"field": "action_uid",
"issue": "must_be_valid_uuid",
"value": "not-a-uuid"
}
]
}
Body schema
| Field | Type | Description |
|---|---|---|
type | string | Error type: validation_error |
code | string | Error code: invalid_fields |
message | string | Human-readable error summary |
request_id | string/null | Request identifier, or null when unavailable |
fields | array[object] | Invalid path parameters |
└─ field | string | Invalid field: action_uid |
└─ issue | string | Validation issue: must_be_valid_uuid |
└─ value | string | Rejected path value |
Authentication failed. Please review the authentication guide.
{
"title": "Unauthorized",
"status": 401,
"detail": "Invalid api key",
"timestamp": "2026-08-25 10:00:00"
}
Body schema
| Field | Type | Description |
|---|---|---|
title | string | A short title describing the error |
status | integer | HTTP status code |
detail | string | Detailed message explaining the error |
timestamp | string | Timestamp when the error occurred |
No enrichment action with this UUID exists for the authenticated Woodpecker account.
{
"type": "validation_error",
"code": "not_found",
"message": "Action not found: 89cb9618-945f-40f2-a147-86fd508933c2",
"request_id": "dc4faa0f-78bf-54e9-9d5d-ce9538f2eec5"
}
Body schema
| Field | Type | Description |
|---|---|---|
type | string | Error type returned by Datasheets Manager |
code | string | Error code: not_found |
message | string | Human-readable error details |
request_id | string/null | Request identifier, or null when unavailable |
Unexpected server error. Try the request again later.
{
"type": "internal_error",
"code": "internal_server_error",
"message": "An unexpected error occurred on the server.",
"request_id": "3a1ada93-b420-4373-8c23-92f48a326b10"
}
Body schema
| Field | Type | Description |
|---|---|---|
type | string | Error type: internal_error |
code | string | Error code: internal_server_error |
message | string | Human-readable error summary |
request_id | string/null | Request identifier, or null when unavailable |