API ReferenceGet a task
// Docs
Get a task
Look up the current processing status of one task. Requires the tasks:read scope.
GET /api/v1/tasks/{id} returns the customer-visible state of a single task that belongs to your account. Poll this endpoint after submitting a batch.
Request
| Field | Value |
|---|---|
| Method | GET |
| Path | /api/v1/tasks/{id} where {id} is the task UUID from acceptedTasks[].id |
| Auth | Authorization: Bearer shl_live_<key> with scope tasks:read |
curl https://shoulu.co/api/v1/tasks/9b1d… \
-H "Authorization: Bearer shl_live_<key>"Response
{
"task": {
"id": "9b1d…",
"url": "https://example.com/page-a",
"domain": "example.com",
"status": "submitted",
"eligibility": {
"fetched_at": "2026-10-25T08:00:00.000Z",
"final_url": "https://example.com/page-a",
"status_code": 200,
"checks": { "http_ok": true, "meta_noindex": false },
"signals": []
},
"provider": "indexingsystems",
"provider_task_id": "B20261025…",
"submitted_at": "2026-10-25T08:01:12.000Z",
"next_check_at": null,
"final_decided_at": null,
"dead_letter_reason": null,
"created_at": "2026-10-25T08:00:30.000Z",
"updated_at": "2026-10-25T08:01:12.000Z"
}
}| Field | Meaning |
|---|---|
status | pending, submitted, or failed. See the status table below |
eligibility | Preflight evidence gathered before submission, or null while preflight runs |
provider | The provider adapter that accepted the submission, once known |
provider_task_id | The upstream batch or task reference, once assigned |
submitted_at | When the provider accepted the submission, or null |
next_check_at | Reserved. The current provider exposes no result lookup, so this stays null |
final_decided_at | Reserved. null under the current provider |
dead_letter_reason | Internal failure marker for unrecoverable tasks, or null |
A task ID that does not exist, is not a UUID, or belongs to another account returns 404 not found.
Status values
The public status collapses internal task states into three values.
status | Internal states it covers | Meaning |
|---|---|---|
pending | pending_preflight, eligible | Preflight is running or the task is queued for submission |
submitted | submitted, verifying, indexed | The provider accepted the submission request. This is not an indexing verdict |
failed | rejected, not_indexed, refunded, dead_letter | Processing stopped. Open the task in the dashboard for the recorded reason |
Under the current provider, submitted is the best available outcome. Unindexed URLs settle out of band; the platform does not underwrite a final indexing result for this provider.