Documentation
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

FieldValue
MethodGET
Path/api/v1/tasks/{id} where {id} is the task UUID from acceptedTasks[].id
AuthAuthorization: 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"
	}
}
FieldMeaning
statuspending, submitted, or failed. See the status table below
eligibilityPreflight evidence gathered before submission, or null while preflight runs
providerThe provider adapter that accepted the submission, once known
provider_task_idThe upstream batch or task reference, once assigned
submitted_atWhen the provider accepted the submission, or null
next_check_atReserved. The current provider exposes no result lookup, so this stays null
final_decided_atReserved. null under the current provider
dead_letter_reasonInternal 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.

statusInternal states it coversMeaning
pendingpending_preflight, eligiblePreflight is running or the task is queued for submission
submittedsubmitted, verifying, indexedThe provider accepted the submission request. This is not an indexing verdict
failedrejected, not_indexed, refunded, dead_letterProcessing 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.