putty
API ReferenceArtifacts

Apify run-completion callback

Receives Apify's notification that a research run reached a terminal state. Apify cannot present the caller's bearer token, so the callback is authorised by the `sig` query parameter: an HMAC-SHA256 over `<jobId>.<ownerId>` keyed with the server's own `RESEARCH_WEBHOOK_SECRET`. A bad or missing signature is a 401 and changes nothing. The signature also binds the job id, so a signature minted for one job cannot be replayed against another — a `job` the server did not sign is a 401, not a lookup. Polling (`GET /research/jobs/{id}`) is the fallback whenever the secret is not configured.

POST
/research/webhooks/apify

Receives Apify's notification that a research run reached a terminal state. Apify cannot present the caller's bearer token, so the callback is authorised by the sig query parameter: an HMAC-SHA256 over <jobId>.<ownerId> keyed with the server's own RESEARCH_WEBHOOK_SECRET. A bad or missing signature is a 401 and changes nothing. The signature also binds the job id, so a signature minted for one job cannot be replayed against another — a job the server did not sign is a 401, not a lookup. Polling (GET /research/jobs/{id}) is the fallback whenever the secret is not configured.

Query Parameters

job*string

The job id Putty signed into this callback URL. The handler recomputes the signature from the job's owner and rejects the callback when it does not match.

Length1 <= length
sig*string

The HMAC-SHA256 signature over <jobId>.<ownerId>, keyed with the server's own RESEARCH_WEBHOOK_SECRET. It is not a user key and never leaves the server.

Length1 <= length

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/research/webhooks/apify?job=string&sig=string"
{  "accepted": true,  "jobId": "string"}