Zernio post status deliveries
Where Zernio POSTs `post.scheduled`, `post.published`, `post.failed`, `post.partial` and `post.cancelled` for a user's own account. **This route is public** — there is no session on a delivery from Zernio's servers — so the per-user signing secret is the only credential. It looks the caller's `ZERNIO_WEBHOOK_SECRET` up by `ownerWebhookId`, verifies the lowercase-hex HMAC-SHA256 of the raw body against the `X-Zernio-Signature` header, and only then updates the matching `PublishRequest`. A delivery that fails verification answers 401 and changes nothing. Zernio retries a non-2xx up to seven times on an exponential backoff, so an unparseable or untracked event answers 200 and is dropped rather than burning the retry ladder.
Where Zernio POSTs post.scheduled, post.published, post.failed, post.partial and post.cancelled for a user's own account. This route is public — there is no session on a delivery from Zernio's servers — so the per-user signing secret is the only credential. It looks the caller's ZERNIO_WEBHOOK_SECRET up by ownerWebhookId, verifies the lowercase-hex HMAC-SHA256 of the raw body against the X-Zernio-Signature header, and only then updates the matching PublishRequest. A delivery that fails verification answers 401 and changes nothing. Zernio retries a non-2xx up to seven times on an exponential backoff, so an unparseable or untracked event answers 200 and is dropped rather than burning the retry ladder.
Path Parameters
The random per-user id putty minted. It is not a Privy DID, so the public URL leaks no user identifier.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/social/webhooks/zernio/string"{ "applied": true, "status": "string"}Apify run-completion callback POST
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.
List your connected social accounts GET
Returns the social accounts connected in the caller's own Zernio account, read live through the caller's own stored key. putty holds no Zernio account of its own and pays nothing: every connected account is billed to the user's Zernio account. When the account has several Zernio profiles and the user has not chosen one, `profileCandidates` is non-null and the Integrations page renders a picker from it; with one profile it is used automatically, and with none putty creates one named "putty".